Ir para conteúdo
Fórum Script Brasil
  • 0

(RESOLVIDO) Meu comando insert no delphi esta bugando meu banco


Riatla

Pergunta

Aê galera, estou aqui mais uma vez.. precisando de ajuda!

Uso Firebird 2.0 e delphi 7

Nessa duvida ou melhor erro do programa acontece isso : Após fazer as alterações na tabela TEMPORÁRIA eu tento inserir essas alterações em uma tabela real, mas quando mando gravar.. o meu delphi trava e buga junto com o banco ! Meu banco começa a ficar cheio de tanta informação só que eu só alterei um campo que é minusculo o seu tamanho.. ele vai de 3MB pra quase 500 MB e seeu deixar vai continuando !

mesmo se eu sair dodelphi e do IBEXPERT ele continua lotando meu banco !

eu estou usando esse comando aqui : insert into vendedor_produtos (vendedor_produtos.id_vendedor, vendedor_produtos.id_produto, vendedor_produtos.prc_vnd) select PT.id_vendedor, PT.id_produto, PT.prc_vnd_vendedor from prodtemp PT, vendedor_produtos where (PT.prc_vnd_vendedor > 0)

Oque deve esta acontecendo ?

Um abraço, Riatla

Editado por Riatla
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

riatla, você ta selecionando dados de duas tabelas sem fazer join e por isso estao sendo cruzados registro por registro.

olha la no seu select, você ta selecionando das tabelas prodtemp e vendedor_produtos, mas você não estao usando a vendedor_produtos. não devia ser so a prodtemp??

Link para o comentário
Compartilhar em outros sites

  • 0
riatla, você ta selecionando dados de duas tabelas sem fazer join e por isso estao sendo cruzados registro por registro.

olha la no seu select, você ta selecionando das tabelas prodtemp e vendedor_produtos, mas você não estao usando a vendedor_produtos. não devia ser so a prodtemp??

Kuroi, é eu vi esse erro mas agora eu mudei essa minha linha de comando, estou fazendo essa : insert into vendedor_produtos (id_vendedor, id_produto, prc_vnd) select id_vendedor, id_produto, prc_vnd_vendedor from prodtemp where prc_vnd_vendedor > 0

mas ele me dá esse erro : SQlVendedor_prod : Cursor not returned from Query

Mas eu adiciono informações na tabela... mas ele diz que num ta retornando nada.. o que estaria ocasionando esse erro ?

um abraço

Link para o comentário
Compartilhar em outros sites

  • 0
riatla, qual o codigo no delphi q você ta usando pra executar esse insert??

acho q você ta tentando receber o retorno da query, mas insert não tras retorno.

o certo acho q seria executar com o metodo ExecSQL() do SQLQuery por exemplo.

olha Kuroi estou usando esse código agora :

dm.sqlVendedor_prod.Close;

dm.sqlVendedor_prod.CommandText := 'delete from vendedor_produtos where id_vendedor = ' + FloatToStr(i);

dm.sqlVendedor_prod.ExecSQL;

dm.sqlVendedor_prod.CommandText := 'insert into vendedor_produtos (id_vendedor, id_produto, prc_vnd) select id_vendedor, id_produto, prc_vnd_vendedor from Prodtemp where (prc_vnd_vendedor > 0)';

dm.sqlVendedor_prod.ExecSQL;

dm.sqlVendedor_prod.Close;

dm.sqlVendedor_prod.CommandText := 'select id_vendedor, id_produto, prc_vnd from vendedor_produtos';

dm.sqlVendedor_prod.ExecSQL;

dm.SQLVendedor_prod.Open;

dm.CdsVendedor_prod.Post;

dm.CdsVendedor_prod.ApplyUpdates(0);

dm.SQLVendedor_prod.CommandText := 'select id_vendedor, id_produto, prc_vnd from vendedor_produtos';

dm.SQLVendedor_prod.ExecSQL;

dm.CdsVendedor_prod.Close;

dm.CdsVendedor_prod.Open;

//

close;

O erro que ele esta me retornando agora é que ele não acha a tabela vendedor_produtos ! O que deve ser a causa desse erro ?

Link para o comentário
Compartilhar em outros sites

  • 0

estranho, riatla, se a tabela existe mesmo era pra funcionar.

qual a mensagem inteira de erro q ele mostra??

e em q linha ocorre esse erro?? já no primeiro exec??

pode ser alguma coisa na hora de associar o dataset ou coisa assim, mas não lembro direito dessa parte q já faz um tempo q não uso delphi.

Link para o comentário
Compartilhar em outros sites

  • 0
estranho, riatla, se a tabela existe mesmo era pra funcionar.

qual a mensagem inteira de erro q ele mostra??

e em q linha ocorre esse erro?? já no primeiro exec??

pode ser alguma coisa na hora de associar o dataset ou coisa assim, mas não lembro direito dessa parte q já faz um tempo q não uso delphi.

Kuroi consegui resolver o problema usando essa linha de comando :

procedure TFVendProd.BtGravarClick(Sender: TObject);

begin

with dm.sqlVendedor_prod do begin

Close;

CommandText := 'delete from vendedor_produtos where id_vendedor = ' + FloatToStr(i);

ExecSQL;

CommandText := 'insert into vendedor_produtos (id_vendedor, id_produto, prc_vnd) select id_vendedor, id_produto, prc_vnd_vendedor from Prodtemp where (prc_vnd_vendedor > 0)';

ExecSQL;

CommandText := 'select id_vendedor, id_produto, prc_vnd from vendedor_produtos';

ExecSQL;

Open;

end;

Dm.CdsVendedor_prod.Post;

Dm.CdsVendedor_prod.close;

Dm.CdsVendedor_prod.open;

DM.CdsProdTemp.close;

end;

Valeu mesmo pela força ! até a próxima !

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...