Hallo allerseits,
Ich mach grad eine Übungsaufgabe mit
DB für die Schule. Ich möchte, dass mien Prog unter anderem folgendes kann:
1. über eine DBComboBox (oder andere ComboBox) zwischen den Tabellen schalten
2. dass meine DBEdit's die Eigenschaft "DataField" automatisch zugewiesen bekommen, je nach angezeigter Tabelle - sie dienen zum Editieren einzellner felder in einem Datensatz.
Zu 1. : mit
GetTableNames(form2.DBComboBox1.Items, False);
werden zwar meine Tabellen in der DBComboBox aufgefürt, aber es lässt sich KEINE/NIX
auswählen (als ob es schreibgeschütz wäre) - DBComboBox bleibt immer leer, egal welchen Eintrag man wählt. Komischerweise geht es mit ListBox:
Delphi-Quellcode:
for i := 0 to Listbox2.Count - 1 do
if listbox2.Selected[i] then k:=i;
self.ADOTable1.Active:=false;
self.ADOConnection1.Connected:=false;
self.ADOTable1.TableName:=listbox2.Items[k];
self.ADOConnection1.Connected:=true;
self.ADOTable1.Active:=true;
Zu 2. : Wenn ich "DataField" festlege, ist alles ok. Automatische Zuweisung wäre besser. So, wie jetzt funzt es nicht:
DBEdit1.DataField:=(string(dbgrid1.Columns[0]))
da krieg ich örgentein Error mit Zugriffsverletzung bla in Modul "Kernel32.dll"
Vorschläge?
EDIT1
Punkt 1. gelöst - mit der normalen ComboBox
Delphi-Quellcode:
procedure TForm2.ComboBox1Change(Sender: TObject);
begin
GetTableNames(self.ComboBox1.Items, False);
self.ADOTable1.Active:=false;
self.ADOConnection1.Connected:=false;
self.ADOTable1.TableName:=(ComboBox1.text);
self.ADOConnection1.Connected:=true;
self.ADOTable1.Active:=true;
end;
EDIT2
Punkt 2. gelöst - bei den Eigenschaften von DBGrid die Option "dgEditing" auf "True" gestellt. Jetzt kann man die Felder bearbeiten (speichern nicht vergessen).