Mein Tip: Lass diese Datenkomponenten weg. Die machen einem Wahnsinnig.
Erzeug alles von Hand. Wenn du auf eine Accesdatenbank zugreifen willst, machst es so:
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: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| uses ... System.Data, System.Data.OleDb;
var connSTR : String; dr : OLEDBDataReader; cn : OLEDBConnection; da : OLEDBDataAdapter; cmd : OLEDBCommand; dv : DataView; ds : DataSet;
connSTR :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+application.StartupPath +'\test.mdb';
procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs); begin try cn := OLEDBConnection.Create(connSTR); cmd := OLEDBCommand.Create('Select * from tblPersonen',cn); da := OLEDBDataAdapter.Create(cmd); cn.open(); except on ex: Exception do messagebox.show (ex.message,'Fehler bei Verbindungsaufbau !'); end; ds := DataSet.Create; da.Fill (ds,'tblPersonen');
DataGrid1.DataSource := NIL; DataGrid1.CaptionText := 'DataGrid mit DataSet'; DataGrid1.GridLineStyle := DataGridLineStyle.Solid ;
DataGrid1.setDataBinding (ds,'tblPersonen'); DataGrid1.DataSource := ds; DataGrid1.DataMember :='tblPersonen' |
für den SQLServer ist es praktisch gleich, du nimmst nur SQL als präfix anstatt OLEDB bei denen hier :
dr : OLEDBDataReader;
cn : OLEDBConnection;
da : OLEDBDataAdapter;
cmd : OLEDBCommand;
Beispiel :
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: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69:
| uses ... System.Data,System.Data.SqlClient;
Procedure GetDR (var dr:SQLdatareader;SQL:String;var conn : SQLconnection); var cmd : SQLCommand; begin conn := SQLConnection.create('Server=icecube;Initial Catalog=Northwind;Integrated Security=true'); try cmd := SQLCommand.Create(SQL,conn); conn.open(); dr :=cmd.ExecuteReader (); except on ex: Exception do messagebox.show (ex.message,'Fehler bei Verbindungsaufbau !'); end; end;
Procedure LoadListView (lView : ListView;SQL :String); var item1: ListViewItem; SubItem: ListViewItem.ListViewSubItem ; a : integer; lvwCol : ColumnHeader; dr : SQLDatareader; cn : SQLConnection; begin LView.Clear; LView.View := View.Details; LView.FullRowSelect := True;
getDR (dr,SQL,cn);
if dr.read = True then begin with LView.Columns do begin for a := 0 to dr.FieldCount -1 do begin lvwCol := ColumnHeader.Create; lvwCol.Text := dr.GetName(a).ToString; Add (lvwCol); end; end; end; getDR (dr,SQL,cn);
while dr.read do begin item1 := ListViewItem.Create(dr.GetValue(0).toString.trim, 0); for a := 1 to dr.FieldCount -1 do begin SubItem := item1.SubItems.Add(dr.GetValue(a).toString.trim); end; LView.Items.Add(item1); end; for a := 0 to LView.Columns.Count -1 do begin try LView.Columns[a].Width := -2; except end; end; dr.close; cn.close; end;
procedure TWinForm.TWinForm_Load(sender: System.Object; e: System.EventArgs); Begin LoadListView (ListView1,'Select * from Shippers'); end; |
Schau das du hier :
conn := SQLConnection.create(
'Server=icecube;Initial Catalog=Northwind;Integrated
Security=true');
deinen Server entsprechend einbaust und deine Security einstellst.
Mit dieser Methode bist du viel freier als mit den Komponenten. Apropos. Die Beispiele
sind aus meinem Buch, kommt im Oktober auf den Markt...
da steht alles über
Delphi und .Net drin, lauter Beispiele und Lösungen...
Gruß
Herby