Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao gerar o Bloco D - O comando não estava preparado


  • Este tópico foi criado há 4345 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Moderadores

Ao gerar o bloco D (fretes CTRC) está dando essa exception: "O comando não está preparado"

Já debuguei meu aplicativo e ele chega a gerar os registro D200,D201,D205 até o dia 21/01/2012 e depois não consegue mais. Os registros estão corretos na tabela e não estou encontrando motivo aparente para o erro.

Pode ser um erro de memória ou algo parecido?

Tem uma base de 500 fretes/por dia

Link para o comentário
Compartilhar em outros sites

  • Consultores

Não acho que o erro seja no componente em si. Mas sem os códigos que geram o erro é muito difícil dizer o que pode ter causado.

A mensagem parece com erro de objetos OLE. Talvez uma conexão com o Banco de Dados usando drivers OLE?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Sim, eu uso ADO com SQL Server.

Ao ler os fretes, gravo uma tabela de totalização por CST/CFOP através de um componente ADOCommand. Só que esse erro só ocorre quando tenho uma movimentação muito grande de fretes.

Fiz um teste, retirando essa parte da gravação da tabela. Daí passa a dar Out Of Memory. Então o problema não está no ADO, apenas ocorreu uma coincidencia de não conseguir executar o comando do ADO por já haver falta de memória.

Não existe erro nos registros do banco de dados. Todos tem os mesmos campos informados, com CST / cfop válido, datas válidas e valores também válidos.

Com essa mesma base de dados consigo gerar o SPED Fiscal, o que aparentemente significa que não há erro de trilha no base de dados.

Percebi que os blocos C e A tem o Fechar Bloco e o D não tem.

Fiz também outro teste com uma base de dados que eu mesma gerei. Também ocorre o erro. Deixando nessa base de dados uma faixa de 50 registros por dia, o erro deixa de ocorrer.

ACBrSPEDPisCofins1.WriteBloco_C(True);

ACBrSPEDPisCofins1.WriteBloco_A(True);

A movimentação do Bloco D ( no caso da transportadora que estou tentando gerar o arquivo ) é muito grande. Poderia ser a falta do Fechar Bloco? Por que em alguns registros é usado esse parâmetro?

Obs: estou gerando com concomitante e linhasbuffer = 1000.

Também cheguei a pensar na possibilidade de ser o New dos registros D200/D201/D205

estou usando:


With RegistroD200New do

begin

  With RegistroD201New do

  begin

    ....

  end;

  With RegistroD205New do

  begin

    ...

  end;

end;

Link para o comentário
Compartilhar em outros sites

  • Consultores

Ah. Então o erro podia ter sido causado mesmo pela falta de memória, mas o erro era do OLE e não do componente. ;)

"Out of Memory", realmente deve ser do componente com uma base de dados grande. Eu precisaria de um exemplo para poder analisar melhor.

Sei que outro usuários do fórum já passaram por isso. Talvez algum possa ajudar.

Só por via das dúvidas, qual a versão do Delphi usado nesse projeto?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Uso:

Delphi 7

Componente de conexão ADOConnection

Banco de dados SQL Server 2000

ACBr versão 3593

média de CTRC ou CTe/Mes = 20.000, uma faixa de 500 a 700 fretes/dia (a partir de junho essa média vai aumentar muito porque atualmente só atendem a região de BH e Contagem, mas a empresa já fez contrato com a distribuidora para atender toda a região SUDESTE e CENTRO-OESTE :shock: Credo! )

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Olha só

há muito tempo atrás cerca de uns 6 anos

trabalhava com delphi 7 e SQL server 2000

fazia integrações de bases usando ADO

e sempre tive problemas pois era coisa do SQL server 2000

após a atualização do banco para o o 2005 meus problemas se resolveram

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Você utiliza o FastMM? Caso negativo, use o no seu projeto.

Ele é tão importante que se tornou padrão nas versões mais recentes do Delphi.

Postei sobre ele num erro parecido aqui.

Daí você nos dê algum retorno.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Substitui o componente ADOCommand (que eu usava para gravar uma tabela) pelo ADOQuery e o problema resolveu. Pesquisando na net, vi que existiam outras pessoas com o mesmo tipo de problema de "Comando não preparado" causado pelo ADOCommand.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Gr@ç@,

Obrigado pelo retorno. Mas só pra confirmar, usando o ADOQuery não deu mais erro de "Out of Memory"?

Em tempo, mesmo assim, se você usa Delphi 7, eu sugiro fortemente você usar o FastMM. O gerenciador de memória do Delphi 7 é horrível. :(

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4345 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.