Zeos und .mdb

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
efvhu
Beiträge: 3
Registriert: Do 21. Mär 2013, 19:37

Zeos und .mdb

Beitrag von efvhu »

Hallo,
ich bin das erste mal hier im Forum. Habe vor ca. 1 Jahr mit Pascal angefangen,weil ich ein Programm, was in Freepascal gechrieben wude, erweitern wollte ->und habe.
Habe Pascal durch Analyse des Programms "erlernt". so besteht mein Wissen aus einem Flickenteppich, bin also in Sachen Pascal ein 'Halbgebildeter'.

Ich will in obiges Programm eine Datenbank einbinden, deren Struktur (Tabellenname, Spaltennamen) durch ein anderes Programm vorgegeben sind und nicht geändert werden können. Diese Datenbank hat die Endung *.mdb. Sie lässt sich per "MDB-Viewer"-Programm auch betrachten, so das mir Tabellenname + Spaltennamen bekannt sind. In dem anderen Programm ist eine sqlite3.dll vorhanden, so das ich annehme, das dieses Protokoll verwendet wird.

Ich verwende Laz. 1.0.6 und Zeos 7... Gemäß der Anleitung "Erste Schritte mit Zeos.." habe ich mir ein Formular erstellt, um mir Records aus einer Spalte anzuschauen.
Wenn ich die Query aktiv setze, bekomme ich einen "SQL Error: file is encryptedor not a database".

Was habe ich falsch /fehlend parametriert ? Quelltexte der .lfm und .pas hängen dran.

LFM-Datei

Code: Alles auswählen

object Form1: TForm1
  Left = 491
  Height = 429
  Top = 196
  Width = 626
  Caption = 'Form1'
  ClientHeight = 429
  ClientWidth = 626
  LCLVersion = '1.0.6.0'
  object DBGrid1: TDBGrid
    Left = 43
    Height = 306
    Top = 113
    Width = 562
    Color = clWindow
    Columns = <>
    DataSource = Datasource1
    ReadOnly = True
    TabOrder = 0
  end
  object ZConnection1: TZConnection
    ControlsCodePage = cCP_UTF8
    AutoEncodeStrings = False
    Properties.Strings = (      'AutoEncodeStrings='    )
    Connected = True
    AfterConnect = ZConnection1AfterConnect
    HostName = 'localhost'
    Port = 0
    Database = 'C:\VCO\JT65\InArbeit\HRD_Test\Table1.mdb'
    User = 'matthias'
    Protocol = 'sqlite-3'
    LibraryLocation = 'C:\VCO\JT65\InArbeit\HRD_Test\sqlite3.dll'
    left = 45
    top = 27
  end
  object ZQuery1: TZQuery
    Connection = ZConnection1
    ReadOnly = True
    SQL.Strings = (       'SELECT col_call FROM table_hrd_contacts_v01'    )
    Params = <>
    MasterSource = Datasource1
    left = 123
    top = 31
  end
  object Datasource1: TDatasource
    DataSet = ZQuery1
    left = 190
    top = 36
  end
end   


pas - datei

Code: Alles auswählen

unit zeo;
{$mode objfpc}{$H+}
interface
uses
  Classes, SysUtils, db, FileUtil, Forms, Controls, Graphics, Dialogs, DBGrids,
  ZConnection, ZDataset;
type
  { TForm1 }
  TForm1 = class(TForm)
   Datasource1: TDatasource;
   DBGrid1: TDBGrid;
   ZConnection1: TZConnection;
   ZQuery1: TZQuery;
   procedure Datasource1DataChange(Sender: TObject; Field: TField);
   procedure ZConnection1AfterConnect(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
var
implementation
{ TForm1 }
{$R *.lfm}
 
procedure TForm1.ZConnection1AfterConnect(Sender: TObject);
begin
end;
 
procedure TForm1.Datasource1DataChange(Sender: TObject; Field: TField);
begin
end;
 
end.                         
 

Wie gesagt, habe natürlich erheblich Wissenslücken, für eine diesem Wissenstand
entsprechende Hilfe wäre ich dankbar.

Gruß efvhu
Zuletzt geändert von Lori am Mo 25. Mär 2013, 18:07, insgesamt 1-mal geändert.
Grund: Highlighter

MmVisual
Beiträge: 1437
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Zeos und .mdb

Beitrag von MmVisual »

Editiere Dein Posting nochmal und mache den Quellcode mit dem "Highlighter" Freepascal/Lazarus, dann kann man das besser lesen.

Mit ZEOS kann man keine Access Datenbank verwenden. SQLite ist was ganz was anderes, siehe www.sqlite.org.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6197
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Zeos und .mdb

Beitrag von af0815 »

Ein möglicher Zugriff auf Access Datenbanken ist hier beschrieben. Zusätzlich gibts zum Thema ODBC hier unter ODBCConn noch Infos. Ist alles Windows only.

Man kann natürlich auch Google mit den Keywords "Lazarus Access" verwenden. Aber pssstttt, das ist Top Secret. SCNR
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: Zeos und .mdb

Beitrag von gocher »

Access Datenbanken haben die Endung .mdb!
Um Zeos mit ADO unter Lazerus zu betreiben um Access nutzen zu können brauchst Du:
eine oledb.pas welche man über Google findet
den Patch: download/file.php?id=1935
Der passende Code aus der LFM-Datei wäre dann:

Code: Alles auswählen

 
  object ZConnection1: TZConnection
    ControlsCodePage = cCP_UTF8
    AutoEncodeStrings = False
    Properties.Strings = ('AutoEncodeStrings=')
    Connected = True
    AfterConnect = ZConnection1AfterConnect
    HostName = ''
    Port = 0
    Database = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\VCO\JT65\InArbeit\HRD_Test\Table1.mdb'
    User = ''
    Protocol = 'ado'
    LibraryLocation = ''
    left = 45
    top = 27
  end
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Zeos und .mdb

Beitrag von mschnell »

Wird der Patch bald in die offizielle Version übernommen ?

Wenn ich das im anderen Thread richtig mitbekommen habe, kann die aktuelle offizielle Version JET (mdb/Access/ <allgemein ADO ? > ) Datenbanken zwar unter Delphi, nicht aber unter fpc/Lazarus. Gibt es dafür einen Grund ?

-Michael

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: Zeos und .mdb

Beitrag von gocher »

Hallo Michael,
ich gehöre nicht zum Entwicklerteam von Zeos mir war nur die Problematik aus meiner ADO-Implementierung bekannt, das man halt auf oledb zugreifen muss, unter Delphi existiert eine oledb.pas unter Free Pascal glaube ich noch nicht (ist halt System spezifisch)! Um eine solche Interface Datei zu erzeugen braucht man als Grundlage die oledb.h und transact.h von Microsoft und übersetzt sie nach Pascal, oder man hat Delphi oder sucht unter Google (ob das Rechtlich korrekt ist bezweifele ich)!
Ich habe den ersten aufwendigen Weg genommen was die ADO Geschichte so steinig gemacht hat :oops: !
Ich schätze h2Pas der C-Header-Dateikonverter unter Lazarus könnte die Arbeit heutzutage leichter machen, muss ich mal testen.
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Zeos und .mdb

Beitrag von mschnell »

Ich habe einen entsprechenden Thread im ZEOSLib Forum gelesen (und teilweise sogar verstanden :wink: ).

Anscheinend gibt es tatsächlich Lizenzrechtliche Probleme mit der Einbindung des ADO OLE Providers. Mir ist nicht klar warum bei fpc, aber bei Delphi nicht, und was das bedeutet.

Jedenfalls toll, dass es jetzt geht !

-Michael

gocher
Beiträge: 298
Registriert: Di 23. Nov 2010, 23:41
OS, Lazarus, FPC: Ubuntu/Win, Lazarus trunk, FPC trunk
CPU-Target: 32Bit/64Bit
Wohnort: Geldern
Kontaktdaten:

Re: Zeos und .mdb

Beitrag von gocher »

Eigentlich braucht man den Zugriff über %CommonProgramFiles%\System\Ole DB\oledb32.dll
den C-Header-File oldedb.h findet man unter http://www.microsoft.com/en-us/download ... x?id=21995
im Installationsverzeichnis Microsoft Data Access SDK 2.8\Inc\
im Moment finde ich leider transact.h nicht mehr, weiß jemand wo man den noch mal findet, ich hab es leider vergessen?

Wenn man alles zusammen hat könnte man sich mal so ansehen was die Tools von Lazarus schon so alles taugen, also wie viel Arbeit sie einem abnehmen! "Import Type Library" und "H2Pas" sind mir schon richtig ans Herz gewachsen!
MfG Gocher
akt. Projekt: Webserver(HTTPS HTTP/2) mit integrierten CMS in Free Pascal - www.gocher.me

Antworten