Edycja bazy danych w Delphi

0

Witam
Mam za zadanie zrobic program w delphi do ktorego bedzie mozna podpinac dowolna wybrana baze danych interbase przez użytkownika i bedzie mozna ja edytowac. Podlaczanie baz juz mi dziala, ale jak mam sie zabrac do edycji prosze o rady i ciekawe pomysly.

0

No to napisz jak to "podłączasz" bo można to interpretować na 100 sposobów. Co do edycji, to najprościej dać TDBGrid'a z możliwością edycji, oczywiście jest pare niuansów, ale to zależy od wykorzystywanej przez Ciebie technologii.

b

0

szukanie
OpenDialog1.Execute;
edit1.text:=(OpenDialog1.FileName);

wczytywanie bazy
procedure TForm2.Button1Click(Sender: TObject);
var S:string;
begin

S:=edit1.text;

datamodule4.IBDatabase1.Close;

datamodule4.IBDatabase1.Params.Clear;

datamodule4.IBDatabase1.DatabaseName := S;

datamodule4.IBDataBase1.Params.Add('USER_NAME=SYSDBA');
datamodule4.IBDataBase1.Params.Add('PASSWORD=masterkey');

datamodule4.IBDatabase1.Open();
datamodule4.ibtransaction1.active:=true;

label1.caption:=('Połączono z bazą '+S);
form6.listbox1.items.add(S);

0

bObik jak bedziesz na forum to daj mi znac, albo podaje Ci maila mojego [email protected] mozesz sie odezwac to wyjasnie konkretnie o co mi chodzi bo moze zle cos napisalem

0

Skoro używasz IBX'ów, to najprostszy z najprostszych sposobów (oczywiście nie zalecany) do zrealizowania za pomocą standardowych narzędzi:

  • wrzucasz IBTransaction, podpinasz go pod baze, baze podpinasz pod transakcje
  • wrzucasz IBTabele, podpinasz pod baze, wybierasz tabele do edycji
  • wrzucasz IBUpdateSQL, podpinasz IBTable pod IBUpdate, w IBUpdate generujesz zapytanka
  • wrzucasz TDatasource, podpinasz go pod IBTable
  • wrzucasz TDBNavigatora i podpinasz go pod DataSource'a
  • wczucasz TDBGrid i podpinasz go pod datasource'a, ustawiasz Active w IBTable na true i już.

Przydało by sie w IBTransaction jeszcze ustawić poziom ReadCommited, i kilka opcji na commit.

A tak najlepiej to by było jakbyś przeczytał pierwszy lepszy tutorial o korzystaniu z komponentów bazodanowych (jakichkolwiek). Zajrzyj też do katalogu Demo Twojego Delphika. No i oczywiście Google Twoim przyjacielem jest ...

b

0

Ok działa ten sposób, tylko wyświetla zawartość tabel z wczytanej bazy.
A jak zrobić żeby wyświtlało tabele systemowe (mam odpowiednie zapytania sql, które to robią) tylko jak wyświetlić ich wynik w celu ich modyfikacji? (nazw tabel, typów danych, kluczy obcych)

0

Ech, zrozumiałem że chcesz edytować zawartość bazy a nie metadane ...

No więc jeśli chcesz edytować metadane, to polecam do tego celu używać, ALTER, CREATE, DROP zamiast grzebać w tabelach systemowych. Ta druga opcja rządzi się swoimi prawami, i nie jest to zazwyczaj kwestia jednego insert'a/update'a/delete'a.

Nigdy w gridzie nie wyświetlałem zawartości tabel systemowych, więc na 100 procent nie odpowiem Ci czy to możliwe, jesli tak to powinno to się odbywać wg standardowych zasad (SELECT * FROM RDB$RELATIONS). Dobrze by było abyś to robił na userze SYSDBA/ownerze bazy.

Ściągnij sobie FlameRobin'a i zobacz jak on rozwiązuje mechanizmy zmian w metadanych.

Zresztą FlameRobin jest na SF, więc jak znacz C, to możesz też przeglądnąć jego źródła.

b

0

czyli twoim zdaniem co bedzie najlepszym rozwiazaniem bo mi nie zalezy jak to bedze zrobione tylko zeby dzialalo bo jak na razie to mi nic nie wychodzi

0

Zbuduj sobie ładne drzewko (TABELE, POLA, INDEKSY, TRIGGERY, WIĘZY, PROCEDURY, WIDOKI, ROLE ....), i zaimplementuje funkcjonalność generującą składnie CREATE, ALTER, DROP.

Tak czy siak to nie jest 5 minut roboty.

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