ich bin neu hier und möchte mich kurz Vorstellen.
Mein Name ist Andreas. Ich programmiere sonst mit Delphi (im Moment in der Version XE5 Ultimate).
Wir arbeiten hier mit talend (ist ein Java Codegenerator). Dieser läuft auf einer Ubuntu Kiste. Mit talend fülle ich eine AccessDB dabei werden jedoch die Indizes nicht korrekt erstellt und diese sind nach der Befüllung korrupt. Nach einen Repair der Accessdatenbank sind diese wieder konsistent. Dieses Repair kann ich aber nicht mit talend durchführen.
Daher ist mir die Idee gekommen mit Lazarus ein Linux Programm zu schreiben das dieses Repair nachträglich macht. In Delphi unter Windows ist das auch kein Problem. Wenn ich das Programm jedoch unter Lazarus kompilieren möchte (erst einmal unter Windows) bekomme ich einen Fehler
Hier das Programm
Code: Alles auswählen
unit main;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ComObj;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
function CompactAndRepair(DB: string): Boolean; {DB = Path to Access Database}
var
v: OLEvariant;
begin
Result := True;
try
v := CreateOLEObject('JRO.JetEngine');
try
V.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DB,
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DB+'x;Jet OLEDB:Engine Type=5');
DeleteFile(DB);
RenameFile(DB+'x',DB);
finally
V := Unassigned;
end;
except
Result := False;
end;
end;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
CompactAndRepair('C:\Lazarus_Programme\outMMCD_2668.mdb');
end;
end.
Dieser kommt an dieser Stelle
Code: Alles auswählen
V.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DB,
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DB+'x;Jet OLEDB:Engine Type=5');
Gruß
Andreas