Einzelnen Beitrag anzeigen

djpaull
(Gast)

n/a Beiträge
 
#1

Prob mit DBCombox und DBEdit

  Alt 30. Jan 2008, 20:28
Datenbank: mdb-Datei • Version: k.Ahnung • Zugriff über: ADO
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).
  Mit Zitat antworten Zitat