Autor Beitrag
Marauder
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 72



BeitragVerfasst: Sa 21.05.05 17:47 
Hallo Leute,
ich sollte die Felddefinitionen einer Tabelle abfragen in der noch kein Satz
vorhanden ist.

Datenbank : Microsoft SQL.
Zugriff : ADO .NET /SQLDatareader /SQLDataset

Wenn ein Satz in der Tabelle vorhanden ist, klappt es bestens, aber wie komme ich an
die Felddefinitionen, wenn die Tabelle leer ist ?

Der Sourcecode sieht so aus :
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
ds := Dataset.Create ('sTable') ;
da := SQLDataAdapter.Create(sql,cn);
   try
      cn.open;
      da.fill (ds,0,1,'sTable');
      cn.close;
   except
      on ex: Exception do
         begin
            Messagebox.show(ex.Message,'Fehler');
            Exit;
         end;
   end;
// Folgendes funktioniert nur, wenn mindestens 1 Satz in der Tabelle vorhanden ist !
   for a := 0 to ds.Tables['sTable'].Columns.Count-1 do // Field aus Datareader heraussuchen
     begin
        if ds.Tables['sTable'].Columns[a].ColumnName.ToUpper = sSplittet.Strings[1].ToUpper then  
           // Wenn DataReaderfeld mit ControlFeld übereinstimmt
           begin
               bFormField := True;
           end;
     end;
   if bFormField = False then
     begin
        messagebox.show ('ACHTUNG ! Tabellenfeld : ' + sSPlittet.Strings[1] + ' in Komponente : ' + co.Name + ' ist nicht in DB vorhanden !');
        exit;
     end;


Bei ds.Tables['sTable'].Columns[a].ColumnName.ToUpper knallts dann natürlich.

Weiss jemand wie ich die Definitionen abrufen kann ohne das ein Satz in der Tabelle steht ?

Gruß
Herby
Marauder Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 72



BeitragVerfasst: Sa 21.05.05 18:38 
Hrmpf ! :shock:
Hat sich erledigt, die Felddefinitionen stehen drin, auch wenn die Tabelle keine
Zeilen enthält, der Fehler lag an der TStringList... (war noch nicht befüllt)

Vergesst's also... :wink: