vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Word Vorlage mit .dat Datei füllen(Schleifen, Tabellen, Aktionen) 
Autor: StereotypMonoton
Datum: 09.04.17 23:53

Hallo Zusammen,

bin noch n ziemlicher Neuling und könnt hier schon viel lernen, aber jetzt google ich mir seit Std die Finger wund.
Unsere Branchensoftware hat ne tolle Art Word Vorlagen zu füllen. Die zu übermittelnden Daten werden in Tabellen in einer
Datei "Gesamt.dat" abgelegt. Wenn man diese in Excel öffnet und Text in Spalten mit Semikolon als Trennzeichen
anwendet sieht man schön die einzelnen Tabellen mit den Überfabewerten.

z. B. Eine Tabelle aus der Gesamt.dat
[ADD1]
idADD1; FIRMA; STRASSE; HNR; PLZ; KDNR; ......
50000432; Musterfirma; Hauptstraße; 35a; .....

Es gibt aber auch Tabellen mit mehreren Zeilen. Z. B. mit Produkteigenschaften

[POS1]
BEZEICHNUNG; BESCHREIBUNG;
Format; 210 mm x 315 mm x 115mm;
Material; Holz;
Spezifikation; Eiche;
Gewicht; 350;
Einheit; g;
Zusatzinfo; ;

In Word wird das ganze dann innerhalb einer Vorlage (.dotm, .dotx oder .xml), die in einem festgelegten Ordner abgelegt ist,
folgendermaßen abgerufen: {ADD1.NAME} würde dort mit "Musterfirma" ersetzt.

Bei den Mehrzeiligen läuft das ganze ähnlich an, jedoch mit einer Art Schleife:
[Start
{POS1.BEZEICHNUNG } {POS1.BESCHREIBUNG}
END]
Fügt man die beiden Spaltennamen in eine Tabelle ein, mit dem [START vor und dem END] nachher,
bekommt man die Zeilen sauber aufgelistet im Word ausgegeben.

Ich hab in meiner Software das Ganze über Textmarken gelöst, jedoch find ich diese Lösung wesentlich eleganter.
Gerade weil man schnell neue Vorlagen erstellen kann, ohne 100 Textmarken zu setzen.

Zudem gibts noch Formatierungsschalter. Wenn man zB ein .1 anhängt wird die Zeile einer Schleife gelöscht wenn der Wert leer ist.
Bei .4 wird auf 2 nachkommastellen gerundet, bei .5 ohne Kommastellen ausgegeben, bei .V die Vorherige bei .N die nächste Zeile gelöscht wenn die Zelle leer ist.
[START
{POS1.BEZEICNUNG} {POS1.BESCHREIBUNG.1}
END]
Hier würde die Zeile Zusatzinfo gelöscht

Mich würd interessieren wo ich Infos zu dem Thema finde.
Will mir auch so n cooles Query programmieren.

Wär Euch sehr Dankbar wenn Ihr mir da weiterhelfen könnt

Gruß aus dem Chiemgau
Mathias'
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Word Vorlage mit .dat Datei füllen(Schleifen, Tabellen, Aktionen) 
Autor: Franki
Datum: 10.04.17 04:28

Hallo Mathias,

eure Branchensoftware kann das, aber die macht ja auch nichts anderes als die Daten auszuwerten und die entsprechenden Bedingungen zu analysieren und die Ergebnisse zu setzten. (Ind die Word Vorlagen usw.)

Wenn deine Software das auch können soll, dann mußt du die Logik sekbst implementeren und nur das Ergebnis ausliefern an die Word Dateien oder sost wo hin.

Um die Analyse, die Bedingungen, die Schleifen, die Kontrollen der Daten die Plausibilitätsprüfungen, Kontrolle auf Pflichteinganben usw. usw. mußt du selbst machen. Erst wenn das alles erledigt ist kannst du in eine Datei (welches Format auch immer) schreiben die dann in Word weiter verarbeitet werden kann.

Wie genau das aussieht kann dir aber niemand sagen, da wir die Programmlogik nicht kennen bzw. was unter welchen Umständen aus den Daten erzeugt werden soll. Dein Beispiel würde zwar einige Anhaltspunkte geben, ist aber mit Sicherheit nicht vollständig.

Besser wäre es ja in der Ausgangssoftware schon vor dem Speichern dafür zu sorgen, dass nur "richtige" Daten in die zu spreichernde Datei gelangen, das ersprart spätere Fehleranalysen usw. Aber darauf hast du wahrscheinlich keine Einfluß (!?)

Ich behaupte mal dein Wunsch ist kein einfaches Thema, du mußt dich ausführlich mit den Grundlagen der Programmierung beschäftigen damit du die Aufgabe zur Zufriedenheit lösen kannst.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Word Vorlage mit .dat Datei füllen(Schleifen, Tabellen, Aktionen) 
Autor: StereotypMonoton
Datum: 10.04.17 17:51

Hallo Frank,

danke für Deine ausführliche Antwort. Soweit dass meine Ergebnisse und Ausgabedaten stimmen bin ich schon. Wie gesagt, hab ich das ganze mit Textmarken bereits realisiert. Die Ausgabe ist richtig.

Nur leider ist das mit den Textmarken so ne Sache. Man muss Sie im Word ziemlich zeitraubend anlegen, und dann jede im Quellcode verknüpfen. Vor allem deswegen und wegen der Schleifen finde ich die Lösung mit der .dat Datei auch so genial.

Erstellt man neue Vorlagen, muss man einfach nur den "Pfad" zur Tabelle angeben, ohne irgendwelche Textmarken oder irgendwas im Quellcode zu verändern.

Mir gehts wirklich rein darum wie ich meine Daten in die .dat so reinbringe, dass ich Sie im Word mit den "Pfaden" a la {POS1.STRASSE} usw auch wieder abfragen kann. Hab heute nochmal nachgeschaut,.. in den Vorlagen ist kein Makro o ä hinterlegt, welche die Zuweisung der Pfade übernehmen würde. Also geh ich davon aus, dass diese alles aus der .net Anwendung kommt.

Heißt, es schreibt die Daten in die .dat datei, und sucht dann die Word Vorlage nach den "Pfaden" ab, und überschreibt diese mit den Daten aus der .dat Tabelle.

Nur Leider find ich im Netz nichts vergleichbares bei dem man sich n paar Klassen oder Funktionen abschauen könnte,.. deswegen bin ich jetzt auf Hilfe angewiesen,....

Achja, mit den Daten passiert nichts mehr. Die werden in die Word Vorlage geschrieben und diese gespeichert, gedruckt oder per Mail als PDF verschickt. Die Daten sind Quasi alle fertig und können sowohl aus einer Datenbanktabelle (bzw verschiedenen) bezogen, oder aber direkt aus der Form ausgelesen werden, da dort alle Daten die ausgegeben werden angezeigt werden.

Gruß Mathias

Beitrag wurde zuletzt am 10.04.17 um 18:16:18 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Word Vorlage mit .dat Datei füllen(Schleifen, Tabellen, Aktionen) 
Autor: Franki
Datum: 11.04.17 02:35

Hallo Mathias,

es kann ja durchaus auch sein, dass die Anwendung die notwendigen Textmarken selbst anlegt und dann mit Daten füllt.

Stichwort:
.Bookmarks.Add Name:=

Damit kann eine Anwendung eine Textmarke in einer Vorlage anlegen die noch nicht existiert und sie dann auch mit Daten füllen. Kann gut sein, dass das so läuft. Dann müssen in der für dich sichtbaren Vorlage auch keinerlei Textmarken vorhanden sein, die werden dann durch die Fremdanwendung erstellt.

Wie gesagt, das ist kein (für dich) einfaches Thema. Tatsache ist aber, dass die ganze Programmlogik (inkl. Kontrolle der Daten) irgendwo geleistet werden muss, sei es in der Fremdanwendung oder in deiner eigenen.

Du kannst natürlich die *.dat Datei selbst analysieren, die notwendigen Texmakten usw. selbst erstellen und dann die Word Vorlage füllen. Aber wie schon gesagt, du mußt dann die Programmlogik selbst programmieren.

Es ist natürlich auch schwierig zu antworten weil hier ja niemand die konkrete Fremdanwendung kennt und was sich dahinter verbirgt.

Aber machbar ist alles, wie gesagt, man auch leere Vorlagen mit Textmarken füllen, diese dann mit Daten versorgen usw. Da sieht der Otto-Normal-Anwender gar nichts von wenn er sich die Vorlage ansieht. Das ist ja auch so gewollt von gewerblichen Anwendungen z.B. damit der User da keinen Einfluss hat aber trotzem die Flexibilität der Anwendung gewährleistet ist. Ich weiß, das ist kein einfaches Thema...

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Word Vorlage mit .dat Datei füllen(Schleifen, Tabellen, Aktionen) 
Autor: StereotypMonoton
Datum: 11.04.17 06:43

Hallo Frank,

naja, es soll garnicht sein dass der Anwender nichts sieht. Gerade deswegen finde ich diese Textmarken in den geschwungenen Klammern ja so genial, Weil der Nutzer einfach über die Adressierung in den Textmarken eigene Dokumentvorlagen erstellen kann. Man geht in die .dat Datei via Excel, schaut sich die Tabellennamen an, und gibt in der Vorlage einfach nur {Tabelename.Tablecolumn} ein, und schon hat man den Wert dem Formular zugewiesen. So kann man sich eigene Layouts erstellen, oder auch nur zusätzlich Daten abfragen, die der Programmierer nicht berücksichtigt hat.

Ich stells mir momentan so vor. Ich schreibe ne Textdatei, die ich als .dat statt als .txt speichere. Diese Datei wird bei jeder Formularausgabe überschrieben(falls vorhanden), also am besten erst geleert und dann überschrieben. Falls mal leere Datensätze auf vorher gefüllte treffen wohl die bessere Lösung.

Das ist soweit kein großer Act denk ich,... Sollte mit writline und n bißchen Tipperei möglich sein.
Evtl noch n paar IF Abfragen rein, dass wenn Daten nicht benötigt werden, diese auch nicht mitgeschrieben werden.

Alternativ könnt ich mir vorstellen ne xml datei zu erstellen, szs gleichen Schema, auch als .dat speichern.

Dann würd ich ne Klasse bauen, die die Word Vorlage durchsucht. Gesucht wird nach den Klammern. Der Inhalt der Klammer wird dann in den xml pfad eingefügt, und somit der wert abgefragt der dann die Klammer überschreibt. Das ganze in ne Schleife bis keine geschweiften Klammern mehr gefunden werden.

Soweit die Theorie. Ich denk es müsste funktionieren. Die Frage ist nur, wie bekomm ich die Klammern gesucht, den Inhalt da raus und wie überschreib ich das ganze *g*

Achja, und einfach solls ned sein ;) Ich mag zum einen die Herausforderung, zum anderen will ich ja was lernen *g* Will auch nicht dass mir des jemand programmiert. Ich will wirklich nur Tips wie ich das am besten anstell.

Gruß Mathias
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Word Vorlage mit .dat Datei füllen(Schleifen, Tabellen, Aktionen) 
Autor: StereotypMonoton
Datum: 11.04.17 20:19

Also um jetzt mal etwas Ergebnisorientierter zu werden *g*
Das mit der .dat Datei funzt schon mal ;)

Lässt sich auch im Excel schon mal öffnen,.. jetzt noch die Werte in Variablen und ich hab meine gewünschte Tabellenstruktur
Imports System.IO.Path
Imports System.IO
 
Module DATschreiben
    Public Sub DATerzeugen()
        Dim File As File = Nothing
        Dim strTempPath As String
 
        ' TEMP-Verzeichnis ermitteln: 
        strTempPath = IO.Path.GetTempPath       
 
        Dim Writer As StreamWriter
 
        Writer = New StreamWriter(strTempPath & "Gesamt.dat", True, _
          Text.Encoding.UTF8)
        Writer.WriteLine("")
        Writer.WriteLine("[ADD1]")
        Writer.WriteLine("FIRMA;" & "STRASSE;" & "HAUSNUMMER;" & "PLZ;" & _
          "ORT;")
        Writer.WriteLine(";" & ";" & ";" & ";" & ";")
        Writer.Close()
    End Sub
End Module
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Du postest ins falsche Forum 
Autor: Blackbox
Datum: 12.04.17 18:59

Du codest in .NET, nicht in classic VB.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Du postest ins falsche Forum 
Autor: StereotypMonoton
Datum: 13.04.17 19:10

ups, sorry....

kann des jemand verschieben bitte??
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel