Wpisywaniem danych do tabeli SQL-co z tym kodem ?

0

Witam wszystkich. Mam pewien problem z wpisywaniem danych do tabeli w bazie danych SQL. Kod ktorego uzywam dio wpisywania danych :

   IBDataBase1.Connected:=False;
   IBDatabase1.Connected:=True;
   if not IBTransaction1.InTransaction then IBTransaction1.StartTransaction;
   zapytanieInsert('',IBQuery1);
    IBQuery1.Close;              
    IBQuery1.SQL.Clear;           
    IBQuery1.SQL.Add('INSERT INTO NEW_TABLE (NR,ILOSC,CENA,REKLAMA,TECHNOLOGIA) VALUES ('+nrfirmy1.Text+','+Magazyn1.Text+','+Cena1.Text+','+Reklama1.Text+','+technologia1.text+'); 
    IBQuery1.ExecSQL;  
   IBTransaction1.Commit;

ten kod jest prawidlowy bo kompilator nie krzyczy ze wystepuje jakis blad. Problem w tym ze DBGrid nie wyswietla dodanych danych w bazie. Co zrobic ??

0

Wiesz co... odpowiem ci ale ostatni raz i przy okazji przeczytaj to sobie bo to jest między innymi do ciebie http://4programmers.net/Forum/viewtopic.php?id=79435
Masz tak

IBQuery1.SQL.Add('INSERT INTO NEW_TABLE (NR,ILOSC,CENA,REKLAMA,TECHNOLOGIA) VALUES ('+nrfirmy1.Text+','+Magazyn1.Text+','+Cena1.Text+','+Reklama1.Text+','+technologia1.text+');

A raczej powinno być tak:

IBQuery1.SQL.Add('INSERT INTO NEW_TABLE (NR,ILOSC,CENA,REKLAMA,TECHNOLOGIA) VALUES ('''+nrfirmy1.Text+''','''+Magazyn1.Text+''','''+Cena1.Text+''','''+Reklama1.Text+''','''+technologia1.text+''')');

Napisz jak przywiązałeś kwerendę do DBGrid... powinno być tak:

IBQuery1.Connection := jakies_connection;
DataSource1.DataSet := IBQuery1;
DBGrid1.DataSource1 := DataSource1;

Sprawdź i napisz czy Ci to coś pomogło

0

Niestety nie dziala nadal. DBGrida powiazalem dobrze. Problem jest w tym ze w trybie projektu w DBGridzie pojawiaja sie rekordy natomiast po kopilacji gdy program jest uruchomiony DBGrid jest pusty.

P.S. Szukalem podobnego tematu na forum i nie znalazlem zadnego ktory moglby mi pomoc dlatego postanowilem utworzyc nowy. Przeczytalem takze artykół http://4programmers.net/article.php?id=587 ktory mi bardzo pomogl lecz nie odpowiadzial na moje pytanie. Takze nie jestem jakims lamerem ktory nie potrafi szukac rozwiazania.. Pozdrawiam

0

wlkej tu cały kod to mu się przyjżę ...
Na dzieńdobry widać kilka zasadniczych błędów które robisz ....
A z tym że szukałeś... no zobaczymy jak to będzie jak wkleisz kod .. ale wydaje mi się że odpowiedzi mimo wszystko udzieliłem Ci wyżej...

0
procedure zapytanieSelect(zapytanie:string; IBQuery:TIBQuery);
//procedura wykonuje zapytanie SELECT - wyświetla wszystkie dane w tabeli
begin
    IBQuery.Close;                //zamykamy komponent Query - musimy to zrobić
    IBQuery.SQL.Clear;            //czyścimy treść starego zapytania
    IBQuery.SQL.Add(zapytanie);   //wpisujemy nowe zapytanie
    IBQuery.Open;                 //wykonujemy zapytanie Open dla zapytania typu SELECT
end;
procedure zapytanieInsert(zapytanie:string;IBQuery:TIBQuery);
//procedura dodaje jeden wpis do bazy danych
begin
    IBQuery.Close;               //zamykamy komponent Query - musimy to zrobić
    IBQuery.SQL.Clear;           //czyścimy treść starego zapytania
    IBQuery.SQL.Add(zapytanie);  //wpisujemy nowe zapytanie
    IBQuery.ExecSQL;             //wykonujemy zapytanie ExecSQL dla zapytań typu INSERT, UPDATE, DELETE
end;

główny kod:

//ZAPISANIE DANYCH PLIK.TXT
   IBDataBase1.Connected:=False;
   IBDatabase1.Connected:=True;
   if not IBTransaction1.InTransaction then IBTransaction1.StartTransaction;
   zapytanieInsert('INSERT INTO NEW_TABLE (NR,ILOSC,CENA,REKLAMA,TECHNOLOGIA) VALUES ('''+nrfirmy1.Text+''','''+Magazyn1.Text+''','''+Cena1.Text+''','''+Reklama1.Text+''','''+technologia1.text+''');',IBQuery1);
   IBTransaction1.Commit;
   zapytanieSelect('select * from NEW_TABLE',IBQuery1);
   //KONIEC---PLIK.TXT

   //-ZAPIS HISTORII
  IBDataBase1.Connected:=False;
  IBDatabase1.Connected:=True;
  if not IBTransaction1.InTransaction then IBTransaction1.StartTransaction;
  zapytanieInsert('INSERT INTO HISTORIA (RUNDA,FIRMA,MAGAZYN,CENA,REKLAMA,PIEN1,PIEN2,ZM,RATA,ODSETKI,ILOSC) VALUES ('''+NrRundy1.Text+''','''+NrFirmy1.Text+''','''+Magazyn1.Text+''','''+Cena1.Text+''','''+Reklama1.Text+''','''+Pieniadze1.Text+''','''+Pieniadze2.Text+''','''+Zmienne1.Text+''','''+Rata1.Text+''','''+Odsetki1.Text+''','''+Ilosc1.Text+'''); ',IBQuery1);
  IBTransaction1.Commit;
  zapytanieSelect('select * from HISTORIA',IBQuery1);
  //-KONIEC HISTORII
0

Tutaj jest błąd:

zapytanieInsert('INSERT INTO NEW_TABLE (NR,ILOSC,CENA,REKLAMA,TECHNOLOGIA) VALUES (+nrfirmy1.Text+,+Magazyn1.Text+,+Cena1.Text+,+Reklama1.Text+,+technologia1.text+);',IBQuery1);

Tutaj też

zapytanieInsert('INSERT INTO HISTORIA (RUNDA,FIRMA,MAGAZYN,CENA,REKLAMA,PIEN1,PIEN2,ZM,RATA,ODSETKI,ILOSC) VALUES (+NrRundy1.Text+,+NrFirmy1.Text+,+Magazyn1.Text+,+Cena1.Text+,+Reklama1.Text+,+Pieniadze1.Text+,+Pieniadze2.Text+,+Zmienne1.Text+,+Rata1.Text+,+Odsetki1.Text+,+Ilosc1.Text+); ',IBQuery1);

a poza tym powiedz mi dlaczego zrywasz połączenie a później nawiązujesz?
Powinieneś zrobić za pomocą:

IF connection.connectet = false then connection.connected := true else ;

No i poza tym to po co robisz IBQuery.Free?
Jak chcesz aby zostało wyczyszczone to używasz
.SQL.clear;
A jak zwalniasz komponent to chyba trzeba by go utworzyć ponownie nie uważasz?
używaj .SQL.clear;
i zamiast execute do Query używaj IBQuery.Active := true;
bo wtedy dowiesz się czy w ogóle zapytanie zwróciło jakiechś wartości i łatwiej będzie ci dojść do tego co masz nie tak...

0
Darkanar napisał(a)

Witam wszystkich. Mam pewien problem z wpisywaniem danych do tabeli w bazie danych SQL. Kod ktorego uzywam dio wpisywania danych :

   IBDataBase1.Connected:=False;
   IBDatabase1.Connected:=True;
   if not IBTransaction1.InTransaction then IBTransaction1.StartTransaction;
   zapytanieInsert('',IBQuery1); <b> <-- po co to????</b>
    IBQuery1.Close;              
    IBQuery1.SQL.Clear;           
    IBQuery1.SQL.Add('INSERT INTO NEW_TABLE (NR,ILOSC,CENA,REKLAMA,TECHNOLOGIA) VALUES ('+nrfirmy1.Text+','+Magazyn1.Text+','+Cena1.Text+','+Reklama1.Text+','+technologia1.text+'); 
    IBQuery1.ExecSQL;  
   IBTransaction1.Commit;

Po pierwsze to słyszałeś kiedyś o parametrach???? Nie to poczytaj
Po drugie połączenie nawiązuje się przy starcie a kończy przy zamykaniu programu
Po trzecie jak masz ustawioną transakcję dla Query DBGrida i jak masz dla Query wstawiającego dane (bo to raczej nie jest to samo Query :> )

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