Pobieranie wartości z bazy.

0

witam mam mały problem odnośnie pobierania wartości z bazy danych
mianowicie:

tabela baza
ID|data1|dara2|

x:=now; // np: 11/11/11 11:11:11
ADDCommand.CommandText:='INSERT INTO baza (data,data2) VALUE (data1,'+x+')';
ADDCommand.Execute;
 

to działa bez zarzutu, ale jak próbuje pobrać ID to mi nic nie wyświetla

ADDCommand.CommandText:='SELECT id FROM baza WHERE data2 LIKE '+x;
ADDCommand.Execute;

ADOCommand.Execute.Fields[0]
 

(czy jakoś tak już nie pamiętam)

i nic sie nie dzieje
ale gdy z bazy pobiorę datę
i wpisze coś takiego

ADDCommand.CommandText:='SELECT id FROM baza WHERE data2 LIKE "11/11/11 11:11:11"';
ADDCommand.Execute;

//to w tym
ADOCommand.Execute.Fields[0]
 

znajduje sie moje poszukiwane ID ...
teraz pytanie
jak mam zrobić aby po podaniu kolejnego pola do bazy pobrać jego aktualne ID

x:=now;
ADDCommand.CommandText:='INSERT INTO baza (data,data2) VALUE (data1,'+x+')';
ADDCommand.Execute;
ADDCommand.CommandText:='SELECT id FROM baza WHERE data2 LIKE '+x;
ADDCommand.Execute;
 

to nie działa

Proszę o wyrozumiałość i pomoc w tej kwestii

0

Jeżeli to mssql to po insercie dodaj:

select @@identity

Pozdrawiam
Paweł Dmitruk

1
ADDCommand.CommandText:='INSERT INTO baza (data,data2) VALUE (data1,"'+FormatDateTime('dd/mm/yy hh:nn:ss',x)+'")';
ADDCommand.CommandText:='SELECT id FROM baza WHERE data2 LIKE "'+FormatDateTime('dd/mm/yy hh:nn:ss',x)+'"';
0

Odpowiedź dotycząca powyższego problemu została rozwiązana, dzięki pomocy użytkownika "_13th_Dragon"
ale miałbym jeszcze jedno pytanie... Jeżeli można.
mianowicie jak wysyłam zapytanie o jedną wartość to jest ok

ADDCommand.CommandText:='SELECT id FROM baza WHERE data2 LIKE "11/11/11 11:11:11"';
ADDCommand.Execute;

ale jak chciałbym pobrać kilka rekordów np:.

ADDCommand.CommandText:='SELECT * FROM tablica WHERE data2 LIKE "11/11/11 11:11:11"';
ADDCommand.Execute;

wówczas dane pierwszego rekordu mam zawarte w:

ADDCommand.Execute.Fields.Items[x].Value;

jak mam odczytać dane kolejnych rekordów?

bo takie polecenie w ogóle nie działa

ADDCommand.Execute.MoveNext;

bardzo bym prosił o odpowiedź.

0

Dopóki miałeś błąd w rozumowaniu SQL'a to nie interesowało mnie czym jest obiekt ADDCommand ponieważ podałeś że inne polecenie z tym samym obiektem tobie działa jak należy.
Teraz pytasz jak się tym posługiwać, więc dopóki nie powiesz co to takiego to nikt kto nie posiada magicznej kuli nie będzie w stanie ci odpowiedzieć.

0

W sumie to sam nie wiem co to jest, nie potrafię tego określić bo korzystałem z różnych źródeł,
ale głównie odnosić to ma się do pobierania i zapisywania danych w bazie MS Access.

W Delphi 7 były jakieś tam komponenty typu ADO i z nich właśnie korzystam.
Chciałem ujednolicić kod programu ponieważ w jednej części korzystam z komponentu "tablicy"
a innej części z komponentu "Command".

Szczegółowych źródeł obecnie nie przytoczę ponieważ środowisko na którym pracuję obecnie znajduje się
poza moim dostępem. Zauważyłem że w obiekcie typu "ADOCommand" wpisuję zwykłe polecenia SQL
i mam możliwość operowania na pobranym rekordzie, dlatego chciałem się dowiedzieć jak
mógłbym zmieniać (odczytywać następny) rekord z bazy.

Ułatwiło by mi to dalszą pracę / zabawę i jednocześnie upiększyło kod programu.

ps. Nie jest to żadne błaganie o pomoc czy coś innego
jeżeli opisuję swój problem strasznie nie jasno / niezrozumiale to nie oczekuję
by ktoś korzystał z "magicznej kuli" i domyślał się o co mi chodzi.
Lecz jeżeli problem jest ewidentnie banalny jak z tym powyżej
tu w kodzie jest akurat błąd

x:=now; // np: 11/11/11 11:11:11
ADDCommand.CommandText:='INSERT INTO baza (data,data2) VALUE (data1,'+x+')';
ADDCommand.Execute;

ponieważ x nie jest typem Datetime a Stringiem

x:=DateTimeToStr(now);

w ten sposób to nie działało i nie rozumiałem dlaczego

po dodaniu twojego sposobu problem zniknął.

wracając do sedna
Obecny problem polega na niemożności (braku wiedzy)
jak przesunąć rekord na następną pozycję.

Korzystając z obiektu "ADOTable" wystarczyło wpisać coś takiego

ADOTable.Next;

a w obiekcie "ADOCommand" nie mam pojęcia jak tego dokonać;

Za ewentualną chaotyczność mojej wypowiedzi przepraszam.
Z poważaniem "szary użytkownik" ...

0

Właściwie to do select'a bardziej pasuje TADOQuery a nie TADOCommand.

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