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