Bonjour,

Je n'arrive pas à faire de publipostage avec delphi voici l'erreur :

com.sun.star.sdbc.sqlexecption:.
Voici le code avez vous une idée du problème

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
 
procedure Publipostage;
var
      OpenOffice      :Variant;
      OpenDesktop     :Variant;
      CoreReflection  :Variant;
      Datacontext     :Variant;
      document        :Variant;
 
 
      LoadParams : Variant;
      arguments  : Variant;
 
      Doc1 :Ansistring;
      sSource:Ansistring;
      instance:Variant;
      Connection:Variant;
      DocumentSetting:Variant;
      OOoMailMerge:Variant;
 
function CreatePropertyValue(nom,valeur:variant):variant ;
var
  PropertyValue :variant;
begin
  CoreReflection.forName('com.sun.star.beans.PropertyValue').createObject(PropertyValue);
  PropertyValue.Name := nom;
  PropertyValue.Value := valeur;
  result:=propertyvalue;
end;
 
begin
  try
     { Connection à Open Office ... et ouverture d'un nouveau document ... }
      OpenOffice      := CreateOleObject('com.sun.star.ServiceManager');
      OpenDesktop     := OpenOffice.createInstance('com.sun.star.frame.Desktop');
      CoreReflection  := OpenOffice.createInstance('com.sun.star.reflection.CoreReflection');
      LoadParams := VarArrayCreate([0, - 1], varVariant);
      { Ouvre un document vierge ... }
      Doc1 :=StringReplace('D:\Publipostage.doc', '\', '/',[rfReplaceAll]);
      sSource := 'file:///'+ StringReplace('D:\Dossier.Txt', '\', '/',[rfReplaceAll]);
 
      Document := OpenDesktop.LoadComponentFromURL( 'file:///'+Doc1 ,'_blank',0,LoadParams  );
      Datacontext:=OpenOffice.createInstance('com.sun.star.sdb.DatabaseContext');
      // creation d'un tableau dynamique de propertyvalues qui définissent le format de la datasource
      arguments:= VarArrayCreate([0,7], varVariant);
      arguments[0]:= createPropertyValue('Extension','txt' );
      arguments[1]:= createPropertyValue('CharSet','ISO-8859-15') ;//ou 'ISO646-FR1'
      arguments[2]:= createPropertyValue('FixedLength',true) ;
      arguments[3]:= createPropertyValue('HeaderLine',true)  ;
      arguments[4]:= createPropertyValue('FieldDelimiter',';') ;
      arguments[5]:= createPropertyValue('StringDelimiter','"') ;
      arguments[6]:= createPropertyValue('DecimalDelimiter','.') ;
      arguments[7]:= createPropertyValue('ThousandDelimiter',',') ;
      //création de la datasource avec parametres
      instance:=Datacontext.createInstance;
      instance.URL:= 'sdbc:flat:'+ sSource;
      instance.Info:= arguments;
      instance.DatabaseDocument.storeAsUrl('file:///' + StringReplace('D:\MySourceDossier1.odb', '\', '/',[rfReplaceAll]),  VarArrayCreate([0, - 1], varVariant));
      datacontext.registerObject('Dossier',instance);
      Connection:=instance.getconnection('','');
 
      DocumentSetting := Document.createInstance('com.sun.star.text.DocumentSettings'); { a Rajouté juste aprés l'ouverture du document ...}
      DocumentSetting.CurrentDatabaseDataSource  := 'MySourceDossier1.odb';
      DocumentSetting.CurrentDatabaseCommand     := 'Dossier';
      DocumentSetting.CurrentDatabaseCommandType := 0;
      {Jusqu'ici tous fonctionne correctement !}
 
      OOoMailMerge := OpenOffice.createInstance('com.sun.star.text.MailMerge');
      OOoMailMerge.ActiveConnection   := Connection;
      OOoMailMerge.DataSourceName     := 'MySourceDossier1.odb';
      OOoMailMerge.DocumentURL        := 'file:///'+ Doc1;
      OOoMailMerge.CommandType        := 0; { Mon erreur (1) venais de la ... remplacer 1 par 0 ... }
      OOoMailMerge.Command            := 'Dossier';
      OOoMailMerge.OutPutType         := 2;
      OOoMailMerge.OutPutURL          := 'file:///D:/';
      OOoMailMerge.FileNamePrefix     := 'Dossier.odt';
      OOoMailMerge.FileNameFromColumn := False;
      OOoMailMerge.Execute(VarArrayCreate([0,-1],varVariant)); //C'est ici que l'erreur se manifeste
  finally
      OOoMailMerge:=Unassigned;
      DocumentSetting:=Unassigned;
      arguments:=Unassigned;
      CoreReflection:=Unassigned;
      OpenDesktop:=Unassigned;
      OpenOffice:=Unassigned;
  end;
Ps la base de données et la table dossier est bien créer

merci de votre aide.
Qays