ADO und Recordset im Delphi 2005 (WIN32)

Hallo,

ich sitze gerade in einem Kurs für Delphi. Wir haben hier das ADO objekt durchgenommen aber irgendwie sind wir nicht auf einen grünen Zweig gekommen. Der Trainer konnte mir kein funktionierendes Beispiel zeigen. Ich hoffe das mir jemand hier HELFEN kann!

Ich möchte etwas „ganz simples“ von Delphi 2005 mittels ADO.

Ich will auf eine „Access Datenbank“ oder auch „MSSQL Server“ zugreifen und dort will ich per ADO und Recordset (oder eben dem nötigen Delphi 2005 objekt was „gleichwertig/oder besser“ ist) daten auslesen, berabeiten und löschen.

Ich will aber nicht immer SQL-Commandos verwenden müssen (sprich löschen zb. „DELETE…“, einfügen „INSTERT INTO…“, ich möchte einfach ein „Recordset“ füllen und bei diesem dann wenn möglich mit Recordset.Addnew daten hinzufügen. Damit ich dort dann auch gleich die eindeutige ID von dem neuen Datensatz zurückbekomme, dann damit „weiter schaffen“ könnte.

Oder ich will ein Recordset haben welches ich durchgehen kann mit zb. MoveNext und dann zb. jeden zweiten datensatz beareiten kann und mit „Recordset.update“ in die Datenbank zurückspeichern kann.

Oder ich möchte einfach sagen … ja den Datensatz möchte ich löschen zb: mit „recordset.delete“.

KANN MIR JEMAND HELFEN? Wie muss ich das in DELPHI 2005 (WIN32-Andwendung!!!) schreiben???

Ich möchte alles per Programmcode schreiben wenn möglich … ohne das ich Komponenten in ein Form (Unit) ziehen muss. Geht das?

DANKE FÜR EURE HILFE!!!

Gruss
Bernhard

Schau dir mal TADOTable an…

Schau dir mal TADOTable an…

Danke dir für den Tipp … werde mir die TADOTable mal anschauen.

Hi,

ich habe noch eine Frage … weiß jemand von euch „Seiten“ wo ich auch Quellcodebeispiele finden kann?

Ich würde mir nämlich gerne einige wirkliche Quellcodeauszüge ansehen … würde mich freuen wenn jemand von euch da was weiß :wink:

Gruss
Bernhard

Schau dir mal TADOTable an…

Hi,

habe mir jetzt die TADOTable angesehen … habe auch ein wenig herumprobiert … habe es auch geschafft insert und update sowie delete … wenn ich ALLE daten einer Tabelle hole … was ich nicht geschaft habe ist aber einen „SELECT“ Befehl abzuschicken damit ich nur einen Teil holen würde bzw. über mehrere Tabellen (am SERVER) daten holen könnte … So hab ich es gemacht:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ADODB;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

var
Form1: TForm1;
DB_Anbindung:TADOConnection;
DB_Tabelle:TADOTable;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
DB_Anbindung:=TADOConnection.Create(nil);
DB_Tabelle:=TADOTable.Create(nil);
DB_Anbindung.ConnectionString:=‚Provider=Microsoft.Jet.OLEDB.4.0:stuck_out_tongue_winking_eye:assword="";Data Source=C:\Kursbeispiele\DB\db1.mdb:stuck_out_tongue_winking_eye:ersist Security Info=True‘;
DB_Tabelle.Connection:=DB_Anbindung;

DB_Anbindung.Connected:=true;
if DB_Anbindung.Connected then
begin
DB_Tabelle.TableName:=‚Personen‘;
DB_Tabelle.ReadOnly:=false;
DB_Tabelle.TableDirect:=true;

DB_Tabelle.Active:=true;

DB_Tabelle.Insert;
DB_Tabelle.FieldByName(‚Name‘).Value:=‚Hintermeier1‘;
DB_Tabelle.FieldByName(‚Vorname‘).Value:=‚Hintermeier1‘;
{DB_Tabelle.Insert;
DB_Tabelle.FieldByName(‚Name‘).Value:=‚Hintermeier2‘;
DB_Tabelle.FieldByName(‚Vorname‘).Value:=‚Hintermeier2‘;
DB_Tabelle.Insert;
DB_Tabelle.FieldByName(‚Name‘).Value:=‚Hintermeier3‘;
DB_Tabelle.FieldByName(‚Vorname‘).Value:=‚Hintermeier3‘;}
DB_Tabelle.Post;

self.Caption:='ID: ’ + inttostr(DB_Tabelle.FieldByName(‚Personenid‘).value);

DB_Tabelle.Active:=false;
DB_Anbindung.Connected:=false;
end;

end;

end.

weiß noch wer wie ich es schreiben müsste damits „besser“ funktioniert?

Da Du hier ADO-Fachbegriffe verwendest, denk ich mal Du kennst ADO aus einer Visual Studio-Umgebung. In Delphi ist ADO ein bisschen anders implementiert, damit das dortige Datenmodell mit DataSets (inzwischen in ADO.NET eingeführt) unterstützt werden.
So viel ich weis, puffert ein Tabellen-Objekt die Records. Wenn du dies an ein Grid hängst mit einer DataSet so holt der nur so viele Datensäte wie er auch anzeigen kann.