Autor |
Beitrag |
dontello
      
Beiträge: 60
Erhaltene Danke: 2
|
Verfasst: Mi 16.03.11 15:03
Hallo,
wie kann ich aus einer MSSQL Datenbank Tabelle die Spaltennamen und Datentypen auslesen mit Hilfe der AdoTable Komponmenten?
|
|
mikhal
      
Beiträge: 109
Windows 10 Professional 64-Bit
VS 215 CE, Delphi 10.1 Berlin Professional
|
Verfasst: Mi 16.03.11 15:11
TAdoConnection.GetTabelNames um Tabellennamen einer Datenbank zu ermitteln
TAdoConnection.GetFieldNames um Feldnamen einer Tabelle zu ermitteln
TField.DataType um den Feldtyp zu ermitteln.
Grüße
Mikhal
_________________ Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
|
|
dontello 
      
Beiträge: 60
Erhaltene Danke: 2
|
Verfasst: Mi 16.03.11 15:21
|
|
mikhal
      
Beiträge: 109
Windows 10 Professional 64-Bit
VS 215 CE, Delphi 10.1 Berlin Professional
|
Verfasst: Mi 16.03.11 15:29
Wo ist der ConnectionString, mit dem du die TAdoConnection mit deinem SQl Server verbindest? Ich würde ausserdem nicht TStrings sondern TStringList verwenden.
Grüße
Mikhal
_________________ Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
|
|
dontello 
      
Beiträge: 60
Erhaltene Danke: 2
|
Verfasst: Mi 16.03.11 15:39
|
|
mikhal
      
Beiträge: 109
Windows 10 Professional 64-Bit
VS 215 CE, Delphi 10.1 Berlin Professional
|
Verfasst: Mi 16.03.11 15:43
leg dir mal ein Formular an, packe da eine TAdoConnection aus der Komponentenliste drauf, klicke doppelt auf das Komponentensymbol und stelle den ConnectionString zusammen (Provider auswählen, Datenbankauswählen, Benutzer eintragen, Passwort eintragen). Nach dem Bestätigen deiner Eingaben, solltest du im Dialog den fertigen ConnectionString vorfinden. Bevor du den aber einfach kopierst, teste erst mal, ob er korrekt ist, indem du die Property Connected der TAdoConnection im ObjectInspector auf True setzt.
Grüße
Mikhal
_________________ Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
|
|
guinnes
      
Beiträge: 182
Erhaltene Danke: 14
|
Verfasst: Mi 16.03.11 16:05
|
|
mikhal
      
Beiträge: 109
Windows 10 Professional 64-Bit
VS 215 CE, Delphi 10.1 Berlin Professional
|
Verfasst: Mi 16.03.11 16:11
@Guiness: Habe ich gar nicht zur Kenntnis genommen...
Grüße
Mikhal
_________________ Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
|
|
guinnes
      
Beiträge: 182
Erhaltene Danke: 14
|
Verfasst: Mi 16.03.11 16:33
|
|
dontello 
      
Beiträge: 60
Erhaltene Danke: 2
|
Verfasst: Mi 16.03.11 16:56
|
|
guinnes
      
Beiträge: 182
Erhaltene Danke: 14
|
Verfasst: Mi 16.03.11 17:03
Kannst du uns erklären was der Schei... soll ?
Warum steht da immer noch das liste.Create; ?
Warum glaubst du, die AdoConnection wird grundsätzlich anders erzeugt als eine Stringliste ?
Ich rate dir dringend zu einem Grundlagenkurs
|
|
dontello 
      
Beiträge: 60
Erhaltene Danke: 2
|
Verfasst: Mi 16.03.11 17:10
Sorry. Habs einfach überlesen hier die ganze Zeit.
Beim Debuggen bekomm ich beim ConnectionString noch ein Fehler. Über die Ado Komponente Verbindungstest funktioniert der Verbindungstest. Wenn ich auf Verbindung true gehe, gebe ich Paswort und User ein und kriege die Verbindung. Muss ich dem connection String den User + Benutzername noch irgendwie mitgeben?
Was muss ich bei AdoConn.Create(hier eintragen) ?
|
|
mikhal
      
Beiträge: 109
Windows 10 Professional 64-Bit
VS 215 CE, Delphi 10.1 Berlin Professional
|
Verfasst: Mi 16.03.11 18:59
Schau dir mal dieses Tutorial an. Hier geht es zwar um die Anbindung von Access, aber das Prinzip ist bei SQL Server das gleiche.
Grüße
Mikhal
_________________ Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
|
|
dontello 
      
Beiträge: 60
Erhaltene Danke: 2
|
Verfasst: Do 17.03.11 16:37
Danke es klappt jetzt soweit.
Habe noch eine andere Frage bezüglich des Datentypes.
Ich habe den Datentyp jetzt als TFieldType vorliegen. Gibt es eine Möglichkeit mir den als String ausgeben zu lassen?
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Do 17.03.11 17:50
Delphi-Quelltext 1: 2: 3:
| uses Typinfo;
GetEnumName(TypeInfo(TFieldType), Ord(f.DataType)) |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
dontello 
      
Beiträge: 60
Erhaltene Danke: 2
|
Verfasst: Fr 18.03.11 11:51
Gibt es dafür ein gutes Beipiel im Netz oder kann hier jemand eins aufführen zum auslesen der Datentypen von Tabellenspalten?
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Fr 18.03.11 12:21
zum Fertigbasteln...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| type TFieldInfoRec=Record Name:String; Size:Integer; DataType:String; End; TFieldinfoArray=Array of TFieldInfoRec;
Function PGetFields(ds:Tdataset):TFieldinfoArray; var i:Integer; begin SetLength(Result,ds.FieldCount); for i := 0 to ds.FieldCount - 1 do begin Result[i].Name := ds.Fields[i].FieldName; Result[i].Size := ds.Fields[i].Size; Result[i].DataType := GetEnumName(TypeInfo(TFieldType), Ord(ds.Fields[i].DataType)) end; end; |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
dontello 
      
Beiträge: 60
Erhaltene Danke: 2
|
Verfasst: Fr 18.03.11 15:16
Wie erfolgt dann eine Ausgabe der Daten?
delphi 1: 2: 3:
| fieldarray := GetFields(tabelle);
edit1.Text := fieldarray[1].DataType; |
So korrekt ?
|
|