Erro gravar atualização no banco de dados.
18/06/2018
0
Estou tendo alguns problemas ao fazer atualização no banco de dados, usando instrução SQL.
Quando tento usar este comando para atualizar:
Update NFSaida Set NFeStatus = ''+QuotedStr(''100'')+
'',NFEPROTOCOLO = ''+QuotedStr(''152180019364488'')+'',NFEDATARECIBO = ''+QuotedStr(''18.06.2018 14:18'')+
'' Where NFNumNota = :0 and NFSerie = :1''
Me retorna o seguinte erro:
Classe: TDBXErrorErro:
Token unknown - line 1, column 145
1
Mas se eu faço a jogo este comando no IBEXPERT ele grava normalmente.
O que pode ser?
Dirceu Morais
Post mais votado
19/06/2018
Emerson Nascimento
Mais Posts
19/06/2018
Dirceu Morais
SqlQuery.sql.text:='Update NFSaida Set NFeStatus = ''+QuotedStr(''100'')+ '',NFEPROTOCOLO = ''+QuotedStr(''152180019364488'')+'',NFEDATARECIBO = ''+QuotedStr(''18.06.2018 14:18'')+ '' Where NFNumNota = 1233 and NFSerie = 1'' SqlQuery.ExecSQl;
19/06/2018
Dirceu Morais
Update NFSaida Set NFeStatus = '100' ,NFEPROTOCOLO = '152180019364488',NFEDATARECIBO = '18.06.2018 14:18' Where NFNumNota = :0 and NFSerie = :1
Na janela que surge eu informo os parametros NFnumnota e NFSerie
21/06/2018
Dirceu Morais
Nesta instrução gravou sem sem problemas.
'Update NFSaida Set NfIdNFE = ''52180601017680000119550010000165581675393370'',NFeStatus = ''100'',NFEPROTOCOLO = ''152180019373004'',NFEDATARECIBO = ''20.06.2018 18:49'' Where NFNumNota = :0'
Já nesta aqui deu o erro: Classe: TDBXErrorErro: Token unknown - line 1, column 145 1
'Update NFSaida Set NfIdNFE = ''52180601017680000119550010000165631228129800'',NFeStatus = ''100'',NFEPROTOCOLO = ''152180019374440'',NFEDATARECIBO = ''21.06.2018 10:05'' Where NFNumNota = :0'
Deve ser alguma coisa relacionada com a data?
Como Resolver isto?
Estou usando o Firebird 2.5, DBExpress e Delphi XE6
21/06/2018
Luiz Neto
Por um acaso o primeiro comando (que deu certo) tentou cravar no codigo para ver se da problema no processo de comunicação do Delphi com o FB?
Att
LM
21/06/2018
Emerson Nascimento
// usei variáveis porque não sei de onde você tira os valores
strStatus := '100';
strProtocolo := '152180019374440';
dtDataHora := StrToDateTime( '06/21/2018 10:05:00' ); // MM/DD/YYYY HH:mm:ss
intNumero := 1233;
intSerie := 1;
SqlQuery.Sql.text := 'Update NFSaida Set NFeStatus = :nfStatus, NFEPROTOCOLO = :nfProtocolo, NFEDATARECIBO = :nfDataRecibo Where NFNumNota = :nfNum and NFSerie = :nfSerie';
SqlQuery.ParamByName('nfStatus').AsString := strStatus;
SqlQuery.ParamByName('nfProtocolo').AsString := strProtocolo;
SqlQuery.ParamByName('nfDataRecibo').AsSQLTimeStamp := DateTimeToSQLTimeStamp( dtDataHora );
SqlQuery.ParamByName('nfNum').AsInteger := intNumero;
SqlQuery.ParamByName('nfSerie').AsInteger := intSerie;
SqlQuery.ExecSQL;
21/06/2018
Dirceu Morais
Segundo comando executado pelo ibExpert
Update NFSaida Set NfIdNFE = '52180601017680000119550010000165631228129800',NFeStatus = '100', NFEPROTOCOLO = '152180019374440',NFEDATARECIBO = '21.06.2018 10:05' Where NFNumNota = 16563 Plan PLAN (NFSAIDA INDEX (PK_NFSAIDA)) 1 record(s) was(were) updated in NFSAIDA ------ Performance info ------ Prepare time = 0ms Execute time = 47ms Current memory = 35.586.460 Max memory = 36.819.356 Memory buffers = 2.048 Reads from disk to cache = 0 Writes from cache to disk = 0 Fetches from cache = 15
Não entendi bem sua pergunta, mas tentei gravar várias vezes pelo programa. Sempre o primeiro dá certo e o segundo dá erro.
Tentei usando o Firedac e também apresentou o mesmo erro.
Tentei mudando a data para: yyyy.mm.dd hh:mm e a mesma coisa um dá certo e outro não
;(
21/06/2018
Dirceu Morais
// usei variáveis porque não sei de onde você tira os valores
strStatus := '100';
strProtocolo := '152180019374440';
dtDataHora := StrToDateTime( '06/21/2018 10:05:00' ); // MM/DD/YYYY HH:mm:ss
intNumero := 1233;
intSerie := 1;
SqlQuery.Sql.text := 'Update NFSaida Set NFeStatus = :nfStatus, NFEPROTOCOLO = :nfProtocolo, NFEDATARECIBO = :nfDataRecibo Where NFNumNota = :nfNum and NFSerie = :nfSerie';
SqlQuery.ParamByName('nfStatus').AsString := strStatus;
SqlQuery.ParamByName('nfProtocolo').AsString := strProtocolo;
SqlQuery.ParamByName('nfDataRecibo').AsSQLTimeStamp := DateTimeToSQLTimeStamp( dtDataHora );
SqlQuery.ParamByName('nfNum').AsInteger := intNumero;
SqlQuery.ParamByName('nfSerie').AsInteger := intSerie;
SqlQuery.ExecSQL;
Hum!
Não sei o critério usado pelo sql, por aceitar algumas data/hora e outras não. Mas passei como parâmetro a data, numero da nota e a serie e deu certo na instrução que estava com erro.
Agora vou fazer mais testes com estes parâmetros.
Brigadú
:)
Clique aqui para fazer login e interagir na Comunidade :)