Erro gravar atualização no banco de dados.
Boa tarde Amigos,
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?
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
Curtidas 0
Melhor post
Emerson Nascimento
19/06/2018
Qual a instrução exata que você está executando no IBExpert?
GOSTEI 1
Mais Respostas
Dirceu Morais
18/06/2018
Estou usando assim:
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;
GOSTEI 0
Dirceu Morais
18/06/2018
No ibexpert eu uso assim:
Na janela que surge eu informo os parametros NFnumnota e NFSerie
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
GOSTEI 0
Dirceu Morais
18/06/2018
Vê se podem me ajudar.
Nesta instrução gravou sem sem problemas.
Já nesta aqui deu o erro: Classe: TDBXErrorErro: Token unknown - line 1, column 145 1
Deve ser alguma coisa relacionada com a data?
Como Resolver isto?
Estou usando o Firebird 2.5, DBExpress e Delphi XE6
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
GOSTEI 0
Luiz Neto
18/06/2018
No primeiro comando executado no IBExpert funcionou e o segundo? <br />
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
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
GOSTEI 0
Emerson Nascimento
18/06/2018
tente passar todos os valores como parâmetros.
// 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;
// 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;
GOSTEI 0
Dirceu Morais
18/06/2018
Se eu gravar diretamente pelo IBExpert os <br>dois dão certo.</br>
Segundo comando executado pelo ibExpert
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
;(
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
tentou cravar no codigo para ver se da problema no processo de comunicação do Delphi com o FB?
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
;(
GOSTEI 0
Dirceu Morais
18/06/2018
tente passar todos os valores como parâmetros.
// 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;
// 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ú
:)
GOSTEI 0