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

Inserção em tabela temporária


Guest --junior.ds --

Pergunta

Guest --junior.ds --

Bom dia a todos.

Bem pessoal, estou tentando pegar os dados de uma tabela (tbContasPagar) e inserir numa tabela (tbBalancete) temporária. Para isso estou tentando

usar o código abaixo e esse usa a função mais abaixo para verificar se os dados já existe na tbBalancete. Se existir farei um Insert, caso contrário

um Update. Mas não consigo fazer nenhum dos dois.

Gostaria de saber o que tá dando errado.

Agradeço.

//eliminando registros da tabela temporária tbBalancete
  qyInsUpd.Close;
  qyInsUpd.SQL.Clear;
  qyInsUpd.SQL.Add('delete from tbBalancete');
  qyInsUpd.ExecSQL;

 //pegando os campos da tabela tbContasPagar
  qyPag.Close;
  qyPag.SQL.Clear;
  qyPag.SQL.Add('select f.idForne, f.dsForne, p.* from tbContasPagar as p, tbFornecedor as f '+
                ' where f.idForne = p.idForne ');
  qyPag.Open;
  while not qyPag.Eof do
   begin
     if testaQyConPagar(qyPagdtPagto.AsString)  then
       begin
         qyInsUpd.Close;
         qyInsUpd.SQL.Clear;
         qyInsUpd.SQL.Add('insert into tbBalancete (dtBalan, dsClien, vlReceb) values ('
                   +qyPagdtPagto.AsString+
                ','+qyPagdsForne.AsString+
                ','+formatfloat('##0.00',strtofloat(qyPagvlLiqui.Asstring))+')');
         qyInsUpd.ExecSQL;
       end
      else
        begin
          qyInsUpd.Close;
          qyInsUpd.SQL.Clear;
          qyInsUpd.SQL.Add('update tbBalancete set dtBalan = '+qyPagdtPagto.AsString+
                                                ', dsClien ='+qyPagdsForne.AsString+
                                                ', vlReceb = '+formatfloat('##0.00',strtofloat(qyPagvlLiqui.Asstring)));
          qyInsUpd.ExecSQL;
        end;
         qyPag.Next;
   end;
function TfrBusRelBal.testaQyConPagar( data: string): boolean;
begin
  qyInsUpd.Close;
  qyInsUpd.SQL.Clear;
  qyInsUpd.SQL.Add('select * from tbBalancete where dtBalan = '+data);
  qyInsUpd.open;

  if qyInsUpd.IsEmpty then
    testaQyConPagar := true
   else
     qyInsUpd.Last;
  if qyInsUpdvlPago.AsFloat <> 0 then
     testaQyConPagar := true
    else
     testaQyConPagar := false;
  //testaQyConPagar := false;
end;

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
Sim, colega. Não há erro na sintaxe. Já testei no Query Analizer.

Eu não afirmei que a sintaxe estava incorreta!

Somente disse que desconhecia (nunca tinha visto) esta sintaxe no SQL Server.

Rodei no Query Analizer aqui e deu erro de cara:

Server: Msg 170, Level 15, State 1, Line 1

Line 1: Incorrect syntax near '/'.

Server: Msg 170, Level 15, State 1, Line 13

Line 13: Incorrect syntax near 'do'.

Server: Msg 195, Level 15, State 1, Line 15

Pelo meu pouco conhecimento, sou iniciante, não esta me parecendo SQL Server.

Qual o erro retorna?

Qual a versão do SQL Server estais utilizando?

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --junior.ds --

Ok.

estou usando o Sql Server 2000.

Quando executo e tento mostrar o relatório, mostra um mesmo de erro sobre um

dos registros da tbContasPagar. Acho que o erro pode estar nesta linha:

qyPagdsForne.AsString

Também não sei se a logica da função está correta.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --junior.ds --

Yes. Delphi 7.

Consegui tirar os erros nas instruções SQL. Também consegui adicionar os registros da tbContasReceber na tabela

temporária. Mas estou com outro problema: quando vou adicionar os registros da tbContasPagar na temporária

a insersão do valor de uma conta paga era para ser inserida numa data existente da tabela temporária, porém tá

repetindo a data em um novo registro:

Aqui está a tabela temporária após adicionar os valores das tabelas: tbContasPagar e tbContasReceber:

idBalan    dtBalan    dsClien    dsForne    vlPago    vlReceb    vlSaldo
11    17/09/2009    FEMINI IMAGEM        0    142,5    0
12    11/11/2008    PYLA                        0      125,5            0
13    29/12/2008    CASA BLANCA        0    201,64    0
14    11/11/2008    OIOIOI                  53,23    0    0
15    30/10/2008    ASLFK                    123,54    0    0

Link para o comentário
Compartilhar em outros sites

  • 0
a insersão do valor de uma conta paga era para ser inserida numa data existente da tabela temporária, porém tá

repetindo a data em um novo registro

você quer dizer q já existe o registro e você quer simplesmente mudar o conteudo do campo de valor?? se for isso você deve usar o update em vez do insert.

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...