zapytanie SQL do bazy danych

0

Cześć
pisze pierwszy raz program, ktory ma się łączyć z bazą danych. Stworzylem sobie w Database Desktop baze danych (tabela.db). Program łączy się z nią i wyświetla za pomocą komponentu Query. Chcialem zrobić dodawanie czegoś do bazy danych za pomocą przycisku, szukając troszkę po pomocy i na intuicje doszedłem (nie wiem czy słusznie), że powinno to wyglądać jakoś tak:

Form2.Query1.Close;
Form2.Query1.SQL.Clear;
Form2.Query1.SQL.Add('INSERT INTO "tabela.db" () Values ()');
Form2.Query1.ExecSQL;

Tu niestety mam problem bo nie wiem jak prawidlowo powinny wyglądać zapisy w nawiasach w 3 lini zamieszczonego powyżej kodu. Próbowałem na kilka sposobów nigdy nie bylo błedu przy kompilacji, lecz po uruchomieniu programu i wciśnięciu przycisku zawsze pojawiał się błąd. (pola w bazie danych to: Id, Nr, Imie).

0

INSERT INTO tabela VALUES(1, '1', 'imie'); i powinno działać

0

Sprobowałem tak:

Form2.Query1.SQL.Add('INSERT INTO tabela Values ("","1254","Kazik")');

oraz tak:

Form2.Query1.SQL.Add('INSERT INTO tabela Values ("","1254","Kazik");');

Niestety zawsze wyskakuje ten sam błąd (przy naciśnięciu przycisku dodaj - kompilacje przechodzi) :
Project Start.exe raised exception class EDBEnginerError with message 'INSERT and UPDATE operations operations are not supported on autoincrement field type.'. Process stopped. Use Step or Run to continue.

I co teraz ? [glowa]

0

aaa, autoincrement jest. trzeba było tak od razu: spróbuj: INSERT INTO tabela VALUES(NULL, "1", "imie")

0

Sprobowalem tak jak radziłeś:

Form2.Query1.SQL.Add('INSERT INTO tabela Values (null,"1254","Kazik")');

Wciąż wywala ten sam komunikat :( Może jakieś właściwości powinienem nadać obiektowi Query? A może nadal jest coś nie tak z pytaniem SQL ? :( Sorrki za klopot i za marudzenie - ale bardzo mi na tym zależy!

0

a sprawdź:

('INSERT INTO <tabela> SET id="%s", name="%s", mail="%s"', [edtID.Text, edtLogin.Text, edtMail.Text])

ja tego używam na serwerach MySQL...
"id, name" itd. możesz sobie pozmieniać oczywiście.. tak samo jak komponenty TEdit (edtID.Text, edtLogin.Text, edtMail.Text) ;)
pozdro.

0

witam,

mam prosbe, zeby jakis dobry czlowiek umiescil na forum opis jak polaczyc sie do bazy ms access za pomoca Query. :-)

0

Nie rozumiem czemu uparłeś się na Query.
Z tego co przypuszczam jesteś początkującym, ayłoby Ci łatwiej z Table.
Najlepiej napisz co zamierzasz stworzyć.
na razie.

0

Owszem za pomocą Table było by prościej (bo nawet na probe zrobilem, ale to nie zdaje egzaminu). Chodzi mi o to że ktoś wciska przycisk "DODAJ" pojawia się formaularz który należy wypełnić! Po jego wypełnieniu trzeba nacisnać przycisk "ZAPISZ" i w tym momęcie przydzielony nr identyfikacyjny oraz imie ma się zapisać do pliku jako rekord natomiast wszystkie podane informacje mają zostać zapisane do bazy danych. Na stronie z formaularzem nie ma możliwości przegladania bazy danych, chodzi o to żeby informacje dodały się po naciśnięciu zwykłego Buttona a były pobrane z Edit oraz LabeledEdit. Jedyne co mi przyszlo do głowy to wstawienie Query i zadanie odpowiedniego zapytania, ktore by z Edit'ów i LabeledEdit'ów pobrało dane i umieściło w bazie.

0

Niewiem czy dobrze zrozumiałem ?
Chcesz dodać do tablicy dane wpisane w pola edit? Czytl innymi słowy wpisujesz jakieś dane do pola typu edit lub podobnego, klikasz buttona i masz zapisane w tablicy.
Jeśli o to ci biega to buttonowi przydziel procedurę nakazującą tablicy:
-przejście do końca tablicy,

  • utworzenie w tym miejscu noweg rekordu
  • dodanie do rekordu danuch z edita
  • zapisanie rekordu

W ten sposób jednym klikneciem wypłniasz kilka tablic w różnych miejscach. Aby dokonać zmian w wybranym mijscu tablicy musisz znaleźć ten rekord, ale i na to jest procedura.
na razie.

0

spróbuj Form2.Query1.Open;
i uruchamiaj program skompilowany a nie F9 , moze pomoze

0

A nie lepiej do tego użyć DBEdit ?

0

Cześć,
rozwiązanie jest dość proste ponieważ w bazie masz pole "autonumeru" to przy tworzeniu zapytania należy pominąć to pole bo ono uzupełni się samo, czyli możesz zrobić to tak:

Form2.Query1.Close;
Form2.Query1.Open;
Form2.Query1.SQL.Clear;
Form2.Query1.SQL.Add('INSERT INTO "tabela.db"  (Nr, Imie) Values ("'+Edit1.Text+'","'+Edit2.Text+'")');
Form2.Query1.ExecSQL;

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