Entwickler-Ecke

Datenbanken - einen Access-db-Datensatz hinzufügen, ohne BDE


MathiasH - Fr 14.06.02 19:06
Titel: einen Access-db-Datensatz hinzufügen, ohne BDE
Hi Leute
Ich braüchte für ein simples Datenbankprogramm eine Möglichkeitin eine Access-Tabbelle einen Datensatz hinzuzufügen, ohne dabei auf "große" Dinge wie die BDE zurückgreifen zu müssen(Programm < Diskette!!!)

Mathias


Alfons-G - Fr 14.06.02 20:03

Es gibt z.B. die KaDAO-Komponenten (z.B. bei Torry), mit denen man ohne BDE auf Access zugreifen kann. Bei Torry & Co findest Du auch weitere Access-Zugriffs-Kompos.

Ob das resultierende Programm auf 'ne Diskette passt, weiss ich allerdings auch nicht.

Wenn der Anwender ohnehin Access (oder Excel mit Jet-Engine) installiert hat, wäre auch ein Zugriff über OLE-Automation möglich.

;)


MathiasH - Sa 15.06.02 09:59

Der Anwender hat auf jeden Fall Access( wenn's sein muss auch laufend)!
aber wie geht das dann mit dem OLE-Zugriff in die DB?

Mathias


Klabautermann - So 16.06.02 21:23

Hallo,
ich habe kürzlich mir ADO auf bestehende Access Datrenbanken zugegrifen. Klapt gut und du kannst alles machen außer neue Datenbanken anlegen (denn du must dich mir ADO irgendwo einloggen um arbeiten zu können).

Ich verwende die Deersoft Komponenten, welche du bei den üblichen verdächtigen wie z.B. auf der DSP [http://sunsite.informatik.rwth-aachen.de/delphi] finden kannst.

Die verbindung baust du über einen Conection String auf, welcher für Access so ausehen kann:

Quelltext
1:
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source={PfadUndDateinameMeinerAdbDatei};Persist Security Info=False'                    


Ich arbeite ausschließlich per SQL auf dieser Access Datenbank und verwende überwiegend CREATE TABLE und INSERT VALUES.

Gruß
Klabautermann


MathiasH - Di 18.06.02 17:27

@klabautermann
und dann? wie füge ich jetzt den datensatz hinzu?
(eine funktion regtnex liefert den jeweils folgenden/ersten Eigenschaftswert)

Mathias


Klabautermann - Di 18.06.02 21:52

MathiasH hat folgendes geschrieben:
@klabautermann
und dann? wie füge ich jetzt den datensatz hinzu?


Wie gesagt, ich verwende SQL. Das grund Query sieht so aus:


Quelltext
1:
2:
INSERT INTO tablename [(columname1, columname2, ...)] 
VALUES (valColum1, valColum2, ...)


Um das grundgerüßt nicht immer neu eingeben zu müssen habe ich dieses in eine funktion gekapzelt:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function TDMaccess.InsertValues(aTable, aValues: STRING): BOOLEAN;
begin
  RESULT := TRUE;
  qWork.Close;
  qWork.SQL.Clear;
  qWork.SQL.Add('INSERT INTO ' + aTable);
  qWork.SQL.Add('VALUES ('+ aValues + ')');
  TRY
    qWork.ExecSQL;
  EXCEPT
    Result := FALSE;
  END; // TRY EXCEPT
end; // Insert Values


Ich hoffe das hilft dir erstmal weiter.

Gruß
Klabautermann


MathiasH - Do 20.06.02 15:08

und was brauch ich da für kompos, wie werden die vernetzt usw?
auf meinem formular hab ich jetzt verbunden
DataSoure;SQLTable;SQLConnection
und im DBexplorer werde ich immer nach ominösen Passwörtern gefragt(in IBLocal)

PS.: ich hab D.P.6


Klabautermann - Do 20.06.02 15:49

Zitat:
DataSoure;SQLTable;SQLConnection


Moment. Wenn du SQLTable und SQLConnection verwendest arbeitest du mit dbExpress, nicht mit BDE und was hat IBLocal mit der sache zu tun? Du willst doch auf eine Access Tabelle zugreifen?

Ob und wie du mit DBExpress auf Access zugreifen kannst weiß ich nicht. Wenn du ADO verwenden möchtest solltest du ADO Komponenten verwenden (wenn du nicht über die ensprechende API arbeiten möchtest). Ich verwende die Komponenten von Deersoft [http://www3.telus.net/dukai/deersoft/main.html].
Ferner mus ein Access ADO Treiber installiert sein. Meines wissens nach ist der bei neueren Windows Versionen von Haus aus dabei.
Bei mir war er vorhanden obwohl ich kein Access auf dem Rechner hatte.

Gruß
Klabautermann