CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Przykładowa baza danych FIREBIRD

Przykładowa baza danych FIREBIRD

Problemy związane z tworzeniem i zarządzaniem programami bazo-danowymi.
Regulamin działu


Zadając pytania dotyczące baz danych należy podawać szczegółowe informacje o bazie danych nad którą się pracuje, czyli:

  • Rodzaj serwera bazodanowego: MySql, MSSQL, Oracle itp.
  • Wersja bazy danych
  • Technologia bazodanowa używana w programie: ADO, DbExpress, InterBase
  • Komponenty użyte do zestawienia połączenia: ADOConnection, SqlConnection
  • Sposób zestawienia komponentów bazodanowych np. DataSet - DataSource - DbGrid lub DataSet - DataSetProvider - ClientDataSet - DataSource - DbGrid
  • Jeżeli używane były biblioteki innych firm niż Borland, CodeGeer i Embarcadero proszę podać ich nazwy, numer wersji i adres źródła.

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rafalskraba » czwartek, 15 kwietnia 2010, 19:21

Wielkie dzięki zaraz będę pisał kod w/g wskazówek które podałeś.
Pierwsze poprzez zapytanie SQL działało mi poprawnie. Nie wiedziałem jak zapisać dane z komponenty TEdit. Z parametrami powinienem sobie dać radę, natomiast ze względu na moje początki z praca w bazami danych mogę mieć problemy z obsługą błędów.

Możesz mi podać jakieś pomocne informacje ewentualnie literaturę.

Pozdrawiam

Rafał
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rafalskraba » piątek, 16 kwietnia 2010, 12:49

Zrobiłem zgodnie w Twoimi wskazówkami

Kod: Zaznacz cały
SimpleDataSet1->DataSet->CommandText="insert into test values(:a)";
SimpleDataSet1->Params->ParamByName("a")->AsAnsiString=Edit1->Text;
SimpleDataSet1->Execute();


i dostaję komunikat


InternalDataSet: Cannot preform this operation on an open dataset.

"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez banita » piątek, 16 kwietnia 2010, 13:27

jesli uzywasz tego samego obiektu dataset do pobrania danych i do instrukcji insert to najpierw musisz ten dataset zamknac(close()).
jesli podczas dodawania pozycji checsz miec otwarty dataset to musisz skozystac z nowego obiektu.


obiekty operujace na bazach danych zucaja odpowiednie wyjatki w pewnych sytuacjach(np blad polaczenia). musisz sie z nimi zapoznac i podczas proby operowania na danych uwzglednic sytuacje wyjatkowe. (try i catch)
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
Podziękował : 1
Otrzymał podziękowań: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    Windows 7Opera

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rafalskraba » piątek, 16 kwietnia 2010, 18:05

Zrobiłem w ten sposób

Kod: Zaznacz cały
SimpleDataSet1->DataSet->Close();
SimpleDataSet1->DataSet->CommandText="insert into przyklad(ID1) values(:ID1)";
SimpleDataSet1->DataSet->ParamByName("ID1")->Value=2;
SimpleDataSet1->DataSet->Prepared=true;
SimpleDataSet1->Execute();


Pola w tablicy są oznaczone następująco:
1. ID (primary key) integer
2. ID1 integer
3. OPIS char

Po wykonaniu w/w kodu dostaje komunikat


Table unkown
PRZYKLAD
At line 1, column 13.



Co jeszcze robię nie tak?
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez banita » piątek, 16 kwietnia 2010, 18:09

co masz ustawione dla simpledataset->dataset->commandtype ?
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
Podziękował : 1
Otrzymał podziękowań: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    Windows 7Opera

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rafalskraba » piątek, 16 kwietnia 2010, 18:13

Mam ustawione ctQuery.
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez banita » piątek, 16 kwietnia 2010, 18:52

a czy nazwa tabeli nie musi byc duzymi literami i w "" ?
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
Podziękował : 1
Otrzymał podziękowań: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    Windows 7Opera

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rafalskraba » piątek, 16 kwietnia 2010, 19:23

Jest ok może być również małymi literami. Po prostu zle wpisałem w zapytaniu SQL nazwę tabeli. Ale ze mnie gapa.
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rafalskraba » poniedziałek, 26 kwietnia 2010, 22:31

Witam
Dane do tabeli wpisuję poprzez parametry - to działa poprawnie.

Kod: Zaznacz cały
DataModule2->SimpleDataSet1->DataSet->Close();
DataModule2->SimpleDataSet1->DataSet->CommandText="insert into test(ID,DYSTANS,INFO) values(:ID,:DYSTANS,:INFO)";
DataModule2->SimpleDataSet1->DataSet->ParamByName("ID")->Value=StrToInt(Edit1->Text);
DataModule2->SimpleDataSet1->DataSet->ParamByName("DYSTANS")->Value=StrToFloat(Edit2->Text);
DataModule2->SimpleDataSet1->DataSet->ParamByName("INFO")->Value=Memo1->Lines->Text;
DataModule2->SimpleDataSet1->Execute();


Jak zrobić aby po wpisaniu danych był aktualizowany komponent odpowiedzialny za prezentację danych DBGrid. W moim przypadku dane są widoczne dopiero po ponownym uruchomieniu programu.
Proszę o jakieś sugestie.
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez banita » wtorek, 27 kwietnia 2010, 14:10

zobacz czy obiekt posiada jakas metode reload/refresh. jesli nie to poprzez close/open.

ps.
postaram sie dzis wyslac material o ktorym pisalem w prywatnej wiadomosci.(wypdalo z pamieci;))
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
Podziękował : 1
Otrzymał podziękowań: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    Windows 7Opera

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rafalskraba » wtorek, 27 kwietnia 2010, 14:42

Zrobiłem to w ten sposób i nawet działa, nie wiem czy jest to fachowe rozwiązanie ale działa:

KOD sql:     UKRYJ  
DataModule2->SimpleDataSet1->DataSet->Close();
DataModule2->SimpleDataSet1->DataSet->CommandText="insert into test(ID,DYSTANS,INFO) values(:ID,:DYSTANS,:INFO)";
DataModule2->SimpleDataSet1->DataSet->ParamByName("ID")->Value=StrToInt(Edit1->Text);
DataModule2->SimpleDataSet1->DataSet->ParamByName("DYSTANS")->Value=StrToFloat(Edit2->Text);
DataModule2->SimpleDataSet1->DataSet->ParamByName("INFO")->Value=Memo1->Lines->Text;
DataModule2->SimpleDataSet1->Execute();
DataModule2->SimpleDataSet1->DataSet->CommandText="select* from test"; // pomowne wywołanie tabeli
DataModule2->SimpleDataSet1->Execute();
DBGrid1->DataSource->DataSet->Refresh();
Dziękuję za wskazówkę.
Pozdrawiam
Rafał
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rolek » poniedziałek, 27 września 2010, 13:25

witam,
odświeżę temat. Bardzo pomogły mi tutaj wiadomości. Jednak wstawiania danych do bazy zupełnie nie rozumiem (jakich użyć komponentów i jak ich użyć to jest pytanie).

Konkretnie:
1. Mam baze w firebirdzie. Nazwa bazy: Adresy. Są trzy kolumny: Nazwisko, adres, telefon.
2. Mam połączenie z bazą, na Formie wyświetla mi się zawartość bazy i jest ok.
3. Chcę zrobić trzy pola (formularz) aby wprowadzać kolejne rekordy do bazy. W pola wpisywałbym dane a przycisk "dodaj kontakt" wprowadzałby dane do bazy.
4. Fajnie byłoby poźniej to wydrukować.

Jeśli załapię schemat to do moich potrzeb zupełnie by mi to wystarczyło. podsyłam zdjęcie formy jakie utworzyłem.

Jak byście się do tego zabrali? Bardzo proszę o pomoc. dziękuję.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
rolek
Bladawiec
Bladawiec
 
Posty: 4
Dołączył(a): poniedziałek, 27 września 2010, 13:06
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP
Kompilator: C++ Builder 2010 (trial...)
Gadu Gadu: 0
    Windows XPFirefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rafalskraba » sobota, 2 października 2010, 08:57

Witaj rolek.
Jednym ze sposobów dodawania rekordów do bazy danych jest wykorzystanie polecenia języka sql INSERT INTO oraz parametrów.
Dodaj niewizualny komponent SQLDataSet i podepnij go pod SQLConnection1.
W twoim przypadku wyglądał by to w ten sposób:

KOD mysql:     UKRYJ  
SQLDataSet1->CommandText="INSERT INTO adresy(Nazwisko,Adres,Telefon) VALUES(:Nazwisko1,:Adres1,:Telefon1)";
SQLDataSet1->ParamByName("Nazwisko1")->Value=Edit1->Text;
SQLDataSet1->ParamByName("Adres1")->Value=Edit2->Text;
SQLDataSet1->ParamByName("Telefon1")->Value=Edit3->Text;
Form1->SQLDataSet1->ExecSQL();
Musisz również uwzględnić typy danych jakie masz zadeklarowany w Twojej tablicy i dokonać ewentualnych konwersji.
W przypadku wydrukowania danych zamieszczonych w tablicy proponuje wykorzystać komponenty z palety Rave ewentualnie w starszych wersjach środowiska komponent QuickReoprt.
Ostatnio edytowano piątek, 8 października 2010, 10:40 przez rafalskraba, łącznie edytowano 1 raz
"Jednym z rodzajów szczęśliwości jest zdolność podejmowania dobrych decyzji."

- Platon-
Avatar użytkownika
rafalskraba
Intelektryk
Intelektryk
 
Posty: 122
Dołączył(a): czwartek, 5 marca 2009, 10:20
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: RAD Studio XE2 Update 4 HotFix 1
SKYPE: rafal.skraba
Gadu Gadu: 0
    Windows 7Firefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rolek » piątek, 8 października 2010, 10:28

dzięki wielkie rafalskraba ! Zabieram się do pracy. Trochę zmęczyło mnie szukanie "po ciemku". Zobaczę co mi z tego wyjdzie teraz.
Avatar użytkownika
rolek
Bladawiec
Bladawiec
 
Posty: 4
Dołączył(a): poniedziałek, 27 września 2010, 13:06
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP
Kompilator: C++ Builder 2010 (trial...)
Gadu Gadu: 0
    Windows XPFirefox

Re: Przykładowa baza danych FIREBIRD

Nowy postprzez rolek » sobota, 19 lutego 2011, 16:27

witam, chwilę mnie nie było.

Zrobiłem tak jak pisał rafalskraba i zadziałało. Dane dodają się do bazy ale jest znany problem z odswieżaniem danych w gridzie zaraz po kliknięciu na przycisk (w nim opisałem dodawanie do bazy). Probowałem to jakoś uruchomić ale nijak nie działa. Poradzilibyście cos w moim przypadku? Gdzie wpisać odpowiedni kod? Dzięki wielkie i sorki za być może błachy problem.
Avatar użytkownika
rolek
Bladawiec
Bladawiec
 
Posty: 4
Dołączył(a): poniedziałek, 27 września 2010, 13:06
Podziękował : 0
Otrzymał podziękowań: 0
System operacyjny: Windows XP
Kompilator: C++ Builder 2010 (trial...)
Gadu Gadu: 0
    Windows XPOpera

Poprzednia stronaNastępna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Bazy danych

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 2 gości

cron