Consulta SQL

25/07/2008

1

não sei muito sobre conectar o delphi com o mysql, mais estou aprendendo e me deparei com um problemão...

1. Tenho uma Tabela teste chamada hahaha
3. Tenho 2 Campos Nesta Tabela,
o 1º é Chave Primária com AutoIncrement, tipo INT com limite de 4 digitos chamado COD
o 2º é um campo teste chamado HU.

Tenho um programa teste que insere o valor digitado no edit1.text nessa tabela no campo hu quando aperta um determinado botão.

após o código deste botão para inserir o codigo em hu


DM.SQLQuery1.Active := False;
DM.SQLQuery1.SQL.Clear;
DM.SQLQuery1.SQL.Add(´insert into hahaha (hu) values (´+´´´´+edit1.Text+´´´´+´) ´);
DM.SQLQuery1.ExecSQL;


após esse código, tenho um outro nesse mesmo botão que deveria jogar o valor que o mysql atribui (ele atribui, não tenho dúvidas) ao campo COD (auto increment) noutro compronete chamado label.

o código é o seguinte :

DM.SQLQuery1.Active := False;
dm.SQLQuery1.SQL.Clear;
dm.SQLQuery1.SQL.Add(´SELECT Cod FROM hahaha WHERE hu = :´+´´´´+edit1.Text+´´´´+´´);
dm.SQLQuery1.ParamByName(´cod´).AsInteger:= Codvar;
dm.SQLQuery1.Open;
label1.caption:=inttostr(codvar);


porém, quando eu insiro o valor no campo e aperto o botão, o erro:

Paramter COD Não Found


se dá e

o delphi da um break na linha

label1.caption:=inttostr(codvar);


do script.

Obs.: O Valor Declarado no Edit1 É Inserido na Tabela com Sucesso.

Estou tentando de todas as maneiras outra solução para este problema e não consigo, se alguem puder me ajudar, eu serei grato.


Responder

Posts

25/07/2008

Marco Salles

troque o codigo por

DM.SQLQuery1.Active := False; 
dm.SQLQuery1.SQL.Clear; 
dm.SQLQuery1.SQL.Add(´SELECT Cod FROM hahaha WHERE hu = ´+QuotedStr(edit1.Text)); 
dm.SQLQuery1.Open; 
label1.caption:=dm.SQLQuery1.fieldbyname(´COD´).AsString;


que ira funcionar ....

Mas da para fazer tudo isso com apenas um Sql ... não precisa fazer duas conexões ...


Responder

25/07/2008

Czao

kra, não deu, tá dando invaid field type...
o campo hu é varchar
e cod é int

tentei esse código que você postou e uma adaptação que eu fiz :

DM.SQLQuery1.Active := False;
dm.SQLQuery1.SQL.Clear;
dm.SQLQuery1.SQL.Add(´SELECT Cod FROM hahaha WHERE hu = ´+QuotedStr(edit1.Text));
dm.SQLQuery1.Open;
codvar:=dm.SQLQuery1.fieldbyname(´COD´).AsInteger;
label1.caption:=inttostr(codvar);


sendo codvar uma variável integer.


Responder

25/07/2008

Marco Salles

kra, não deu, tá dando invaid field type... o campo hu é varchar e cod é int



DM.SQLQuery1.Active := False; 
dm.SQLQuery1.SQL.Clear; 
dm.SQLQuery1.SQL.Add(´SELECT Cod FROM hahaha WHERE hu = ´+QuotedStr(edit1.Text)); 
dm.SQLQuery1.Open; 
label1.caption:=dm.SQLQuery1.fieldbyname(´COD´).AsString;


tem erro não .... a não ser voce esteja usando o codigo sem ter adicionado um registro na base de dados com o valor do conteudo
do edit.text... Ai sim , tera um problema de conversão . Pois
dm.SQLQuery1.fieldbyname(´COD´).AsString tera RETORNO nULO
devido a clausu-la Where ... [b:fe35e675df]Verifique isto [/b:fe35e675df]


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira