Maeștri de delphi, export de la bd la cuvânt

Exportați din DB în Word

Articolul oferă exemple de lucru cu
  • tabele
  • marcaje
  • anteturile și subsolurile
  • inscripții
  • fonturi
  • săgeată

Nu voi înfunda în trăsăturile legării târzii și timpurii, pentru că informațiile pe această temă sunt deja suficiente.







Deci, sarcina este de a exporta o anumită masă în Word. Chiar și așa, este necesar să creați un document complex cu anteturi și anteturi de tabel etc. și altele asemenea.

Există două moduri minunate de a obține informații despre interfața Word.
  1. Pentru a învăța cum să faci ceva de la Delphi în Word-e, trebuie să mergi la meniul Tools / Macro / Start Recording din Word. Faceți apoi în Word-e ceea ce trebuie să faceți de la Delphi și finalizați înregistrarea macro. Și în final Serviciu / Macro / Macrocomenzi. selectați înregistrate. Editați și vedeți cum funcționează. După aceasta, traducerea sintaxei VBA în sintaxa Delphi este simplă și ușoară.
  2. Un alt instrument bun pentru obținerea cunoștințelor este componentele precum TWordApplication. Am aruncat-o pe formular, în orice tip de operator WordApplication1. apăsați ctrl + space și citiți cu atenție. Semnificația funcțiilor și proprietăților disponibile este, de obicei, ușor de înțeles intuitiv.

Există încă unul, mi sa spus, modul cel mai logic - ajutorul VBA, dar nu trebuia să-l folosesc ...

Acum un pic de teorie, extras prin aceste moduri ... Cuvântul are o colecție de documente

Fiecare colecție are o proprietate număr - numărul este astfel w1.Documents.count - numărul de documente.

Folosirea unei variabile de tip olevariant (în acest caz vr) este uneori necesară, uneori nu.

Documentul are colecții proprii:
  1. scrisori Acum puteți accesa
  2. mese Și astfel puteți alege a doua coloană a ultimului tabel.
  3. alineatele
  4. cifrele
Ei bine, etc ...

Există, de asemenea, obiecte de selecție utile - regiunea și intervalul selectat - și selectați funcția. Se poate selecta o coloană de tabel (din nou W1.ActiveDocument.Tables.Item (W1.ActiveDocument.Tables.Count) .Columns.Item (2); selectați), litere, gama, punctul, etc ...

De ce structura este exact așa - nu contează ... este doar un exemplu. Sarcina specifică este de a exporta locuitorii străzilor Akhmetov și Letchikov.
Și documentul de ieșire ar trebui să aibă o pagină de titlu, pe care este scris un anumit text, din a doua pagină există un antet superior, unde este scris și un anumit text. Apoi, există două moduri de a implementa acest lucru.





  1. Fără a utiliza un șablon.

Se creează un nou document, unde sunt create anteturile și subsolurile etc.
Acest mod nu merită folosit. pe diferite computere pot avea inițial diferite setări ale paginii, fonturile, paragrafele și un document frumos formatat pe computerul dvs. pot părea foarte diferit. Puteți, desigur, seta programatic toate setările necesare, dar, în primul rând, nu luați în considerare, în al doilea rând sunt frâne mari și o mulțime de cod.

  • Utilizând un șablon.

    Linia de jos este faptul că un document vord este creat în avans, care este folosit ca un șablon. În cazul nostru, în șablonul de la locul potrivit din centrul primei pagini, am pus un obiect de tipul unei inscripții, în care punem fontul și alinierea de care avem nevoie. De asemenea, facem o pauză în secțiune. Pe a doua pagină a antetului, introduceți și obiectul inscripției. În acesta vom introduce numele documentului. Apoi, facem o macro, în care repetăm ​​acțiunile pe care trebuie să le facem de la Delphi.
    1. în inscripția obiectului din prima pagină pentru a face textul
    2. mergeți la sfârșitul documentului
    3. du-te la antet
    4. în inscripția obiectului din antetul textului
    5. reveniți la a doua pagină
  • Obținem următoarea macrocomandă: dacă convertim la codul Delphi, obținem astfel Deci, am format pagina de titlu și subsolul.

    Apropo, în plus față de obiecte de „Legendă“ pot fi mai eficiente pentru a utiliza marcajele. Ce trebuie să știe cum să lucreze cu ei, este suficient să se înregistreze macro corespunzător, și de exemplu, selectați textul între prima și a doua filă, puteți: Apropo, dacă cineva găsește o soluție frumoasă, fără utilizarea variabilelor OleVariant - otpishite săpun meu.

    Datele de ieșire de la baza de date la document pot fi fie utilizând o îmbinare, fie linie pe linie. Pentru a fuziona, codul arată astfel: O persoană care cunoaște elementele de bază ale unei baze de date poate converti cu ușurință acest cod pentru a se potrivi nevoilor sale schimbând șirul de conectare și interogarea.

    Pentru ieșire progresivă, am folosit procedura am creat TableExport (DataSet: TDataSet; Title, FlagText: string), care este prezentat în exemplul. Acesta trece setul de date, antetul tabelului și parametrul de text FlagText. Dacă este egal cu "", atunci întregul tabel este exportat. În caz contrar, numai acele înregistrări cu ultima valoare de câmp egală cu FlagText sunt exportate. Acest lucru se face în scopul de a obține probe, care a fost mult timp calculat, acesta poate fi prezentat în mai multe tabele în raport.
    Subiect, lățimea coloanei, și dacă este sau nu domeniu specificat de următorul domeniu parametri De altfel afișați, în acest exemplu, datele sunt mai întâi ejectat în Word, apoi convertit într-o singură masă de comandă.

    Acum avem câteva caracteristici utile: Dacă utilizați un OleContainer, atunci nici un rău va fi tipul de echipa care a eliminat meniurile relevante, care de obicei zbura peste forma.
    Dacă lucrați prin CreateOleObject, este de a obtine valoarea constantelor VisualBasic, Delphi care, în general, nu le înțelege, este necesar să se scrie un macro in interiorul MsgBox (nuzhnaya_konstanta). Apoi va arăta valoarea numerică, apoi le va folosi în Delphi.

    Acum dau codul întregului program

    Dacă cineva vede în acest articol tehnicile pe care le-am descris aici, vă rog să nu vă jigniți. )







    Articole similare

    Trimiteți-le prietenilor: