AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fernsteuerung von Word

Ein Thema von MaxMara · begonnen am 18. Aug 2004 · letzter Beitrag vom 19. Aug 2004
 
MaxMara

Registriert seit: 27. Apr 2004
Ort: Wien
77 Beiträge
 
Delphi 2007 Enterprise
 
#1

Fernsteuerung von Word

  Alt 18. Aug 2004, 07:01
Hallo Leute.

Ich habe derzeit ein kleines Problem mit Word und Delphi 7. Ich möchte über meine Delphiapplikation einen Datenbankquery (ich verwende die MyComponents) machen und das Ergebnis davon als Adressetiketten in Word ausgeben.
Das ganze funktioniert zwar, aber nur ziiiiemlich langsam. Im Endeffekt sollen immer so ca. 9000 Etiketten ausgegeben werden, dass würde dann in etwa 1 Stunde dauern bis alles im Worddokument drinnen ist.

Das ganze sieht so aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  FileName, ov : OleVariant;
  AdrStr : String;
  Counter,Anzahl : Integer;

begin
   with MySQLDataset1 do begin
       ClearMacros;
       TableName := 'adr_adressen';
       MacroByName('JOIN').AsString := 'INNER JOIN adr_countries ON (adr_adressen.adr_cou_id = adr_countries.cou_id)';
       MacroByName('WHERE').AsString := 'WHERE adr_kat1_id like "%bc%"';
       MacroByName('ORDER').AsString := 'order by adr_countries.cou_name, adr_adressen.adr_plz';
       open;
   end;
   Anzahl := MySQLServer1.DatasetFrom('Select count(*) as MyMenCount from adr_adressen WHERE adr_kat1_id like "%bc%"','MyCount').FieldByName('MyMenCount').AsInteger;
   MySQLServer1.FreeDataset('MyMenCount');
  Progressbar1.Max := Anzahl;
  Progressbar1.Step := 1;
  if OpenDialog1.Execute then
    FileName:=OpenDialog1.FileName
  else
    exit;
  WordApplication1.Connect;
  WordApplication1.Documents.OpenOld(FileName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
  WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
  Counter := 1;
  WordApplication1.Visible := true;
  while not MySQLDataset1.Eof do begin
      AdrStr := MySQLDataset1.FieldByName('adr_anrede').AsString + ' ' + MySQLDataset1.FieldByName('adr_titel').AsString + Chr(13);
      if (MySQLDataset1.FieldByName('adr_vorname').AsString = '') and (MySQLDataset1.FieldByName('adr_nachname').AsString = '') then
         AdrStr := AdrStr + MySQLDataset1.FieldByName('adr_institut').AsString + Chr(13)
      else
         AdrStr := AdrStr + MySQLDataset1.FieldByName('adr_vorname').AsString + ' ' + MySQLDataset1.FieldByName('adr_nachname').AsString + Chr(13);
      AdrStr := AdrStr +
                MySQLDataset1.FieldByName('adr_strasse').AsString + Chr(13) +
                MySQLDataset1.FieldByName('adr_plz').AsString + ' ' + MySQLDataset1.FieldByName('adr_ort').AsString;
      WordApplication1.Selection.TypeText(AdrStr);
      if MySQLDataset1.FieldByName('adr_cou_id').AsInteger <> 153 then
      begin
         AdrStr := Chr(13) + MySQLDataset1.FieldByName('cou_name').AsString;
         WordApplication1.Selection.Font.Bold := integer(True);
         WordApplication1.Selection.TypeText(AdrStr);
         WordApplication1.Selection.Font.Bold := integer(False);
      end;
      If counter <> 3 then
        WordApplication1.Selection.Cells.Item(1).Next.Select;
      If Counter = 3 then
      begin
        ov := 1;
        WordApplication1.Selection.InsertRowsBelow(ov);
        Counter := 0;
      end;
      MySQLDataset1.Next;
      Counter := Counter + 1;
      Progressbar1.StepIt;
  end;
  WordApplication1.Disconnect;
  MySQLDataset1.Close;
end;
Hat jemand von euch eine schnellere Lösung für mich bzw. einen Tipp was ich da machen könnte?

Vielen Dank und Grüße aus Wien
Christian.

BTW: Happy Birthday Daniel
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz