Discussion:
SQLite - pytanie
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
Tomasz Kisielewski
2010-11-08 09:34:18 UTC
Permalink
Mam pewien problem i nie mogę sobie z nim poradzić

Tabela w bazie ma dwa pola

id jako ftAutoInc
Nazwa jako string

do tabeli dodaję dane w następujący sposób

Query:=TSqlite3DataSet.Create(nil);
Query.Filename:=Baza;
Query.TableName:='szkolenia';
Query.SaveOnClose:=True;
Query.SaveOnRefetch:=True;

Query.Active:=True;
Query.Append;
Query.FieldByName('Nazwa').AsString:=E_Nazwa.Text;
Query.Post;



Query.Close;
Query.Free;

Oczywiście rekord dodaje się prawidłowo - pole id się zwiększa ale..

Jak bezpośrednio po Query.post odczytać wartość pola ID (jako pola
wypełnionego niejako z automatu)

Można oczwywiście coś a'la select max(id) from ...... ale czy jest
jakieś bardziej eleganckie rozwiązanie
pigobocian
2010-11-12 21:03:28 UTC
Permalink
Post by Tomasz Kisielewski
Mam pewien problem i nie mogę sobie z nim poradzić
Tabela w bazie ma dwa pola
id jako ftAutoInc
Nazwa jako string
do tabeli dodaję dane w następujący sposób
Query:=TSqlite3DataSet.Create(nil);
Query.Filename:=Baza;
Query.TableName:='szkolenia';
Query.SaveOnClose:=True;
Query.SaveOnRefetch:=True;
Query.Active:=True;
Query.Append;
Query.FieldByName('Nazwa').AsString:=E_Nazwa.Text;
Query.Post;
Query.Close;
Query.Free;
Oczywiście rekord dodaje się prawidłowo - pole id się zwiększa ale..
Jak bezpośrednio po Query.post odczytać wartość pola ID (jako pola
wypełnionego niejako z automatu)
Można oczwywiście coś a'la select max(id) from ...... ale czy jest
jakieś bardziej eleganckie rozwiązanie
Może tak:

select first 1 aaa.ID from szkolenia aaa order by aaa.ID descending

Otrzymasz w ten sposób wartość ostatniego dodanego klucza.

Loading...