CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Podstawy
Strona 1 z 1

Podstawy

Nowy postNapisane: sobota, 26 października 2013, 23:38
przez oneiro
Witam,

InterBase w wydaniu FB 2.5 Komponenty w kodzie.

KOD cpp:     UKRYJ  
IBDatabase1->DatabaseName=nazwa_pliku;
IBDatabase1->Connected=true;
IBTransaction1->Active=true;
IBDataSet1->SelectSQL->Text="select rdb$relation_name from rdb$relations where rdb$view_blr is null  and (rdb$system_flag is null or rdb$system_flag = 0);";
IBDataSet1->Active=true;
 


Dalej mam połączenie z DBGrid, gdzie mam wynik (wynik to lista tabel). A jak teraz przyporządkować to do zmiennej w programie? Czyli jak skierować odpowiedź do zmiennej (tablicowej)?
Tutaj jest trochę zagmatwane, gdyż mogę mieć więcej niż jeden wynik (stąd albo zmienna albo tabelaryczna zmienna).

I jeszcze jedno pytanie z podstaw - jak odczytać/zapisać konkretny rekord (komórkę z tabeli).
Ja to widzę tak - jest tabela, pewnie jest jakiś wskaźnik numeru wierszu, który muszę podać oraz kolumną. Zapewne na podstawie tych danych mogę wyciągnąć/zapisać konkretne dane.

PS. Może podacie jakieś linki jak w technologii InterBase zrobić cały program, albo jakieś działające przykłady, ewentualnie artykuły. Nic konkretnego nie mogę znaleźć :/

Krzysiek

Re: Podstawy

Nowy postNapisane: poniedziałek, 28 października 2013, 14:39
przez Mironas
To może zamiast odpowiedzi wstawię mały poradnik:

Tworzenie bazy danych w IBExpert:

Baza >> Utwórz bazę danych...
Serwer: Lokalny
Baza danych: C:\BAZA01.FDB
Użytkownik: SYSDBA
Hasło: masterkey
Zestaw znaków: WIN1250
Dialekt SQL: Dialekt 3

Rejestracja bazy danych w IBExpert:
Parametry jak powyżej.

Połączenie z bazą danych:
DblClick na wybranej DB w zakładce 'Bazy danych'.

Tworzenie tabeli:
Baza >> Nowa tablica
Nazwa: np PERSONEL
Pierwsze pole ID (autonumerowane):
- Komórka 'PK': kliknąć podwójnie (klucz główny)
- Komórka 'Nazwa pola': ID
- Komórka 'AutoInc': zaznaczyć, w oknie 'Pole autoincrement'
- - Zakładka 'Generator' zaznaczyć 'Utwórz generator'
- - Zakładka 'Wyzwalacz' zaznaczyć 'Utwórz wyzwalacz'
- - Zakładka 'Procedura' zaznaczyć 'Utwórz procedurę'
- OK
Pozostałe pola utworzyć wg uznania
Utworzenie tabeli: Kompiluj (Ctrl+F9)

Re: Podstawy

Nowy postNapisane: poniedziałek, 28 października 2013, 14:44
przez Mironas
Podłączenie bazy FB za pomocą komponetów IBX:

IBDatabase1:
DatabaseName = "C:\BAZA01.FDB";
DblClick >>
- User Name: sysdba
- Password: masterkey
- Character Set: wIN1250
- Login Prompt: false

IBTransaction1:
DefaultDatabase = IBDatabase1;
DefaultAction = TACommit;
DblClick >> wybrać opcję 'Read Committed'

IBQuery1
(Jeśli chcesz podłączyć tabelkę w trybie ReadOnly lub jeśli chcesz wykonywać pojedyncze zapytania select/update)
Transaction = IBTransaction1
SQL = "select * from PERSONEL"
DblClick >> RightClick >> Add all fields
- to pozwala na dostęp do wybranego pola za pomocą:
KOD cpp:     UKRYJ  
IBQuery1NAZWISKO->AsString = "Kowalski";


IBDataSet1
(Jeśli chcesz zmieniać zawartość podłączonej tabeli za pomocą komponentów edycyjnych)
Transaction = IBTransaction1;
SelectSQL = "select * from PERSONEL"
RightCilck >> Dataset Editor... >>
- W 'Key Fields' wybrać pole 'ID'
- W 'Updade Fielda' wybrać wszystkie pola
- Kliknąć: 'Generate SQL', 'OK'
GeneratorField >>
- Generator = "GEN_PERSONEL_ID"
- Field = "ID"
DblClick >> RightClick >> Add all fields

DataSource1
DataSet = IBQuery1/IBDataSet1

DBGrid1
DataSource = DataSource1
DblClick >> RightClick >> Add All Fields

KOD cpp:     UKRYJ  
  // Podłączenie do bazy danych, otwarcie tabel
  IBDatabase1->Open();
  IBQuery1->Open();
  IBQuery1->Open();

  // Zamknięcie połączenia
  IBDatabase1->Close();
 

Re: Podstawy

Nowy postNapisane: poniedziałek, 28 października 2013, 14:52
przez Mironas
Powyższy przykład pokazuje najprostszy sposób zatwierdzania transakcji gdzie każda zmiana jest natychmiast zatwierdzana. W praktyce lepiej stosować zatwierdzenie transakcji w tym momencie kiedy nam to odpowiada. Np jeśli mamy w oddzielne okno do edycji jakiejś tabeli to w tym oknie można umieścić oddzielny TIBTransaction z parametrem:
DefaultAction = TARollbackRetaining;
A po wykonaniu jakiś zmian (np przy zamknięciu okna):
KOD cpp:     UKRYJ  
IBTransaction1->CommitRetaining();

A jeśli chcemy anulować zmiany:
KOD cpp:     UKRYJ  
IBTransaction1->RollbackRetaining();

Tylko trzeba pamiętać aby zawsze zatwierdzić lub anulować wprowadzone zmiany.

Re: Podstawy

Nowy postNapisane: poniedziałek, 28 października 2013, 15:05
przez Mironas
No i jeszcze przykład dodania rekordu do tabeli za pomocą kodu:
KOD cpp:     UKRYJ  
  IBDataSet1->Append();
  IBDataSet1NAZWISKO->AsString = "Kowalski";
  IBDataSet1IMIE->AsString = "Jan";
  IBDataSet1->Post();
  IBTransaction1->CommitRetaining();