Problemas com execSQL

Delphi

13/02/2003

Estou usando esse codigo para atualizar um registro no meu bd interbase

query.close;
query.sql.clear;
query.sql.add(´update tabela ´);
query.sql.add(´set hr_saida =:hr_saida, dt_saida = :dt_saida´);
query.sql.add(´where co_historico = :co_historico´);
query.parambyname(´hr_saida´).astime := datetimepicker1.time;
query.parambyname(´dt_saida´).asdatetime := datetimepicker2.date;
query.aprambyname(´co_historico´) := tabela.fieldbyname(´campo´).asinteger;
query.execsql;

qdo executo essa utlima linha da o seguinte erro:
unassigned code

o campo hr_saida eh time
o campo dt_saida eh timestamp
e co_historico eh integer

alguem sabe pq dah esse erro?

como solucionar?
obrigada,
K-ROL


K-rol

K-rol

Curtidas 0

Respostas

Flavio Sanches

Flavio Sanches

13/02/2003

Eu não tenho a mínima ideia, seu código parace estar perfeito, só resta vc procurar consistências nos campos, ou seja, se a data esta vazia ou se esta passando valor inválido, derepente o banco está configurado pra mm/dd/yy e vc manda dd/mm/yy ou dd/mm/yyyy ou até mesmo um 34/13/9999

de qq jeito, o negócio parece estar nos valores, não na instrução sql.

beijo


GOSTEI 0
Rrodrigues

Rrodrigues

13/02/2003

Tenta substituir a ultima linha por:

query.parambyname(´co_historico´) .asinteger:= tabela.fieldbyname(´campo´).asinteger;

Att.


GOSTEI 0
Anonymous

Anonymous

13/02/2003

K-Rol, passe o parametro de dt_saida assim

qyr.ParamByName(´dt_saida´).AsDate := DateTimerPicker.Date;

Apenas AsDate .... v c funciona


GOSTEI 0
Mecq_clayton

Mecq_clayton

13/02/2003

Well eu acho que é isso, se a ultima altenativa passada no forúm não funcionar vc pode tenta isso, coloque uma outra query na tela e na propriedade SQL vc digita o comando update, depois vc entra na propriedade params e nela vai aparecer a relação de todos os parametros criados, selecione um parametro e vc vera no object inspector que vai aparecer algumas opçõe de configurações, na propriedade DataType vc coloca o tipo do parametros, exemplo se o paramentro for referente ao campo codigo vc coloca o DataType como integer, e faça isso com todos os parametros ai creio que não dé mais problemas. Caso vc queria fazer isso via programação vc tera que digitar a configuração de cada parametro criado mais ai eu acho que dá mais trabalho.
Exemplo se vc criar no comando SQL o parametro CODIGO, vc vai ter digitar a linha para fazer a referencia e configuração do mesmo.

Query1.Parameters.CreateParameter(´Codigo´, ftInteger, pdInput, 4, Null);

Well espero ter ajudo qualquer coisa poste algo no forúm.


GOSTEI 0
POSTAR