Voilà, je dois réaliser un publipostage openoffice en le pilotant à partir d'une
appli delphi. Ce publipostage concerne un .sxw et un .txt (avec des ";" comme
séparateurs)
Je sais réaliser un publipostage si la source existe dans openoffice, mon
problème est que lors de l'installation de l'application , la source ne sera
pas dans openoffice... Il me faut donc savoir la créer (on ne va pas demander à
un utilisateur lambda de le faire).
Je me suis donc renseigné et j'ai trouvé comment créer une DataSource... Celle
ci se crée bien mais le problème est qu'elle ne contient aucune table...
Comment puis je faire pour qu'elle en contienne ou que celles ci soient
visibles.

Je vous passe mon code en même temps (juste pour la DataSource mais si quelqu'un
veut le MailMerge en Delphi c'est tout à fait faisable)

procedure TTest.bt_creation_datasourceClick(Sender: TObject);
var  arguments:variant;
     PropertyValue :variant;
     CoreReflection: Variant;
begin
   //création d'un database context qui contient toutes les sources de données
   //connait open office
   Datacontext:=OpenOffice.createInstance('com.sun.star.sdb.DatabaseContext');
   //si openoffice connait la source src1
   if Datacontext.hasbyname('src1')
   then Memo_Enumeration.Lines.Add('src1 trouvé')
   else
      begin
      // Core reflection est utilisé pour pouvoir créer des property value
      CoreReflection := OpenOffice.createInstance
                     ('com.sun.star.reflection.CoreReflection');
      // un tableau dynamique de propertyvalues
      arguments:= VarArrayCreate([0,7], varVariant);

CoreReflection.forName('com.sun.star.beans.PropertyValue').createObject(PropertyValue);
      PropertyValue.Name := 'Extension';
      PropertyValue.Value := 'txt';
      arguments[0]:= PropertyValue ;
      PropertyValue.Name := 'Charset';
      PropertyValue.Value := 0;
      arguments[1]:= PropertyValue ;
      PropertyValue.Name := 'FixedLength';
      PropertyValue.Value := true;
      arguments[2]:= PropertyValue ;
      PropertyValue.Name := 'HeaderLine';
      PropertyValue.Value := true;
      arguments[3]:= PropertyValue  ;
      PropertyValue.Name := 'FieldDelimiter';
      PropertyValue.Value := ';';
      arguments[4]:= PropertyValue ;
      PropertyValue.Name := 'StringDelimiter';
      PropertyValue.Value := '"';
      arguments[5]:= PropertyValue ;
      PropertyValue.Name := 'DecimalDelimiter';
      PropertyValue.Value := '.';
      arguments[6]:= PropertyValue ;
      PropertyValue.Name := 'ThousandDelimiter';
      PropertyValue.Value := ',';
      arguments[7]:= PropertyValue ;
      //création de la datasource avec parametres
      Datasource:=OpenOffice.createInstance('com.sun.star.sdb.DataSource');
      //enregistrement dans openoffice
      datacontext.registerObject('src1',Datasource);
      Datasource.URL:= 'sdbc:flat:file:///C:/Dossiers/coquery';
      Datasource.Info:= arguments;
      connection:=datasource.getconnection('','');
      {datasource.TableFilter.('essai');
      datasource.TableTypeFilter.'TABLE';}
       datasource.TableTypeFilter.getType
      {connection.tables;}
    end;
end;
Je rappelle mon problème vient du fait que le MailMerge ne détecte pas ma table
(essai) qui correspond au fichier .txt

Sinon toutes mes excuses à Laurent Godard que j'ai importuné sur un mail
professionnel alors que cette liste existait...(je ne le savais pas encore)


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à