Dr-manMedlem sedan juli 2002732 inlägg Jag har följande problem med SQL i Delphi!
När försöker köra följande kod i Delphi version 5.
with Query1 do
begin
SQL.Clear;
Close;
SQL.Add('insert into address2(Name,Telefon) values(:'+Edit1.Text+',:'+Edit2.Text+')');
ExecSQL;
end;
får jag detta felmeddelande
Query1 Field is of an unknown type
fnuttar
jag antar att Name och Telefon är av typen sträng. Isf ska du ha fnuttar runt datan du skickar in i SQL-satsen, enklast fixar du detta med funktionen QuotedStr som finns i sysutils:
with Query1 do
begin
SQL.Clear;
Close;
SQL.Add('insert into address2(Name,Telefon) values('+quotedstr(Edit1.Text)+','+quotedstr(Edit2.Text)+') ');
ExecSQL;
end;
mvh Tony
Dr-manMedlem sedan juli 2002732 inlägg Tack nu fungerar det!
Hur löser jag följande?
Koden:
SQL.Add('delete from address where Namn='+DBGrid1.SelectedField);
Får felmeddelandet:
Incompatible types: 'String' and 'TField'
SQL.Add('delete from address where Namn='+qutoedstr(DBGrid1.SelectedField.asstring));
mvh Tony
Dr-manMedlem sedan juli 2002732 inlägg Annars vet du nån bra manual som tar upp sql i Delphi?
Här finns en ganska bra nybörjarguide till delphi, samt en artikel om delphi och ADO:
http://www.fuzzydizzie.com/d_index.htm
/Tony
Dr-manMedlem sedan juli 2002732 inlägg Vad är det för fel när det inte vill fungera fast jag trycker på knapp
som skall radera det markerade fältet?
Kod:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
Check:=True;
Button1.Enabled:=True;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if DBGrid1.SelectedRows.Count<0 then
begin
with Query1 do
begin
SQL.Clear;
SQL.Add('delete from address2 where Namn='+quotedstr(DBGrid1.SelectedField.asstring));
ExecSQL;
end;
Button1.Enabled:=False;
end;
end;
Uppfylls verkligen villkoret i if-satsen?
Dr-manMedlem sedan juli 2002732 inlägg Har ingen aning!
Men hur skall man korrigera detta för att få det att fungera?
så här kan du göra:
if DBGrid1.SelectedField.asstring<>'' then
begin
with Query1 do
begin
SQL.Clear;
SQL.Add('delete from address2 where Namn='+quotedstr(DBGrid1.SelectedField.asstring));
ExecSQL;
..
mvh Tony
Dr-manMedlem sedan juli 2002732 inlägg När jag använder koden i det föregående inlägget, får jag
följande felmeddelande:
Access violation at adress 0048D797 in module 'sqlprog.exe'
Read of adress 00000000
Kan nån hjälpa mig?
En liten observation.
Borde du inte kolla om SelectedRows.Count är större än noll istället för mindre än noll?
/Ante
Dr-manMedlem sedan juli 2002732 inlägg Kan ingen hjälpa med problemet?!
Eller finns det nån annan lösning?
@ndersMedlem sedan juni 200032 969 inlägg
Dr-man skrev:
Kan ingen hjälpa med problemet?!
Var det inte det Hardrocker försökte göra?
Läs hans inlägg igen. Utan att kunna Delphi tycker jag att just det ser konstigt ut.
Dr-manMedlem sedan juli 2002732 inlägg Problemet har inget med if-satsen att göra utan närmare bestämt med denna rad
SQL.Add('delete from address2 where Namn='+quotedstr(DBGrid1.SelectedField.asstring));
Efter jag satt till denna rad, så började problemet
Access violation at adress 0048D797 in module 'sqlprog.exe'
Read of adress 00000000
Ingen som har någon aning?
Kontrollera selectedfield verklig är assignad.
Testa följande:
if assigned(DBGrid1.SelectedField) then
SQL.Add('delete from address2 where Namn='+quotedstr(DBGrid1.SelectedField.asstring))
else
showmessage('hej hopp');
/Ante