[Delphi / InterBase] Wyciąganie zmiennej z BD

0

Mój kod wygląda następująco:

  IBQuery3.Active:=False;
  IBQuery3.SQL.Clear;

  if ( (Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'') and (Edit4.Text<>'') and (lot<>'') ) then
    begin
      if not IBTransaction1.InTransaction then
        begin
          IBTransaction1.StartTransaction;
          IBQuery3.SQL.Add('INSERT INTO klienci (ID_KLIENCI, IMIE, NAZWISKO, ADRES1, ADRES2) VALUES (''0'', '''+imie+''', '''+nazwisko+''', '''+adres1+''', '''+adres2+''')');
          IBQuery3.Active:=True;
          IBTransaction1.Commit;
        end;

Kolumna ID_KLIENCI jest kluczem głównym w tabelce, który jest generowany za pomocą Triggera.
Kod ten dopisuje do bazy bez problemu, a ja po dopisaniu chciałbym się jeszcze dowiedzieć jaki ID zostało przypisane temu wpisowi.
Oczywiście mogę to zrobić za pomocą SELECT:

          IBQuery3.SQL.Add('SELECT id_klienci FROM klienci WHERE imie='''+imie+''' and nazwisko='''+nazwisko+''' and adres1='''+adres1+''' and adres2='''+adres2+'''');

Ale jak wynik tego zapytania wpisać do jakiejś zmiennej?

0

procedura składowana, która najpierw pobierze nowy id, następnie wstawi rekord z tym id i go zwróci

0

Tak.
To zapytanie:

IBQuery3.SQL.Add('SELECT id_klienci FROM klienci WHERE imie='''+imie+''' and nazwisko='''+nazwisko+''' and adres1='''+adres1+''' and adres2='''+adres2+'''');

zwróci mi to ID, ale jak z niego zapisać to do zmiennej?

To:

zmienna:=IBQuery3.SQL.Add('SELECT id_klienci FROM klienci WHERE imie='''+imie+''' and nazwisko='''+nazwisko+''' and adres1='''+adres1+''' and adres2='''+adres2+'''');

nie działa :/
Muszę napisać własną procedurę? Czy istnieje jakaś prostsza metoda? Np. coś a'la:

zmienna:=IBQuery3.SQL.result;

:>

0
pasterz napisał(a)

Tak.
To zapytanie:

IBQuery3.SQL.Add('SELECT id_klienci FROM klienci WHERE imie='''+imie+''' and nazwisko='''+nazwisko+''' and adres1='''+adres1+''' and adres2='''+adres2+'''');

zwróci mi to ID

nieprawda - a jak będziesz miał dwa takie rekordy z innym ID :>

, ale jak z niego zapisać to do zmiennej?

po IBQuery.Open;
zmienna := IBQuery.FieldByName('id_klienci').AsInteger;

1 użytkowników online, w tym zalogowanych: 0, gości: 1