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

Dúvida comando sql na minha aplicação


carlosgmjr

Pergunta

Amigos,

Tenho um código que foi feito inicialmente focando conexão com BD SQL Server. Ocorre que no meio do desenvolvimento, foi decidido que a melhor opção seria o Firebird.

Daí começaram os erros com execução, principalmente nos scripts SQL. Um deles já foi solucionado, visto que o erro era somente a troca de uma sentença que só existia no SQL Server.

Agora é o seguinte, minha aplicação reconhece os dados de um arquivo .txt e coloca no BD. Daí, temos um controle para evitar que arquivos duplicados sejam gravados.

Funcionava perfeitamente com o SQL Server, mas agora, a aplicação roda mas só grava uma linha de cada arquivo. acredito que o erro seja na sentença sql, mas não consigo resolver.

A sentença é: select * from programacao where ID = ' + quotedstr(VID);

onde ID é um campo criado pelo sistema através da sentença:

VID :=

(yano+'/'+ymes+'/'+ydia)+

copy(vnomecampos,10,3) +

copy(vnomecampos,15,7) +

copy(vnomecampos,23,3) +

copy(vnomecampos,27,3) +

copy(vnomecampos,32,5);

A sentença toda fica assim:

// verificar se existe ID no banco de dados

// fecha a tabela

escalaDM.CDSescala.close;

// coloca a instrucao SQL para buscar o ID

escalaDM.CDSescala.CommandText :=

' select * from programacao where ID = ' + quotedstr(VID);

// abre a tabela

escalaDM.CDSescala.open;

// verifica se foi encontrado mais de um registro

if escalaDM.CDSescala.RecordCount > 0 then

begin

// se for encontrado, significa que o ID já esta no banco

// e faz a proxima leitura do registro

Readln(sArquivo,vnomecampos);

//se a proxima leitura for Fim de arquivo

if eof(sArquivo) then

begin

// saia do loop

break

end

else

begin

// senao volte lá pra cima.

continue

end;

end;

Atualmente estou trabalhando com Delphi 2007 e BD Firebird 2.5

Só pra enfatizar....o problema que etsou tendo é: Os arquivos são escalas, com datas de 01 à 30 dependendo do mês e o software reconhece e grava todos estes dias, mês à mês. Tudo funcionava corretamente no SQL Server, mas no Firebird, o código começa a ler as escalas, mas só retorna o último dia de cada mês.

Obrigado

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
onde ID é um campo criado pelo sistema através da sentença:

VID :=

(yano+'/'+ymes+'/'+ydia)+

copy(vnomecampos,10,3) +

copy(vnomecampos,15,7) +

copy(vnomecampos,23,3) +

copy(vnomecampos,27,3) +

copy(vnomecampos,32,5);

Se não me engano o erro está na formatação da data no firebird ... experimente dia/mes/ano ou mes/dia/ano

abraço

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...