Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Frage zu Datagridview Arbeitet extrem langsam in Verbindung mit Word Interop

Frage Entwicklung Basic

Mitglied: florengray

florengray (Level 1) - Jetzt verbinden

21.01.2010 um 19:49 Uhr, 5506 Aufrufe, 6 Kommentare

Hallo.
Ich habe diesmal einfach nur ein hoffentlich simples Problem.
Ich habe eine Anwendung geschrieben, die mir eine Wordvoralage ausfüllt. Dabei füllt der User mit Hilfe der Anwendung
ein komplexes Formular aus. Wenn er das getan hat soll damit eine vorgefertigte Wordvorlage gefüllt werden.
Einzelheiten darf ich nicht schreiben. (Datenschutz)
Ich habe aber ein Problem welches ich mit Google und anderen diversen Foren nicht behoben kriege.
Und zwar dauert es eine Ewigkeit bis alle Daten in die Vorlage übertrugen wurden.
Warum weiß ich leider nicht.
Meine Wordvorlage enthält FormFields. Allen habe ich einen Namen gegeben.
Diese spreche ich dann so in meiner Anwednugn an:
01.
With Word_Document.FormFields 
02.
 
03.
                .Item("xyz").Result = TextBox_xyz.Text
Davon gibt es 23.
Dann habe ich noch einen Datagridview. Der fungiert als Tabelle.
Die Daten werden ausgelesen und dann verarbeitet und dann in eine Wordtabelle übertragen.
Das sieht bei mir so aus:
01.
For a = 1 To DataGridView1.Columns.Count - 2  
02.
                
03.
For b = 1 To DataGridView1.Rows.Count - 1 
04.
 
05.
Word_Document.Tables.Item(Wordtable).Cell(b + 11, a).Range.Text = DataGridView1.Rows(b - 1).Cells(a).Value 
06.
 
07.
Next 
08.
 
09.
Next
Der Code funktioniert. Aber es dauer einfach zu lange bis die Tabelle komplett übertragen wurde.
Ich benutze einfach die Objekt Library von Word um mit der Wordvorlage zu "kommunizieren".
Ich glaube ich benutze diesen Datagridview einfach falsch. Zumal ich gerade dieses Value bei Cells(a) nirgends finden kann.
Ich habe einfach probiert bis ich die Zellen im Datagridview abfragen konnte. Mit xyz.Value hat es funktioniert.
Aber dieses Value kam nicht als Auswahl bei meinem VB2008.
Könnt ihr mir einen Tipp geben wie ich meinen Code schneller machen kann?
Ich wäre auch unendlich dankbar.

Schöne Grüße!
Florengray
Mitglied: dog
21.01.2010 um 20:00 Uhr
Wäre es nicht vielleicht schlauer anstatt sich Spalten-Zeilen-Weise Zeilen-Splaten-Weise fortzubewegen?

Am Besten du findest erstmal heraus was so lange dauert.
Sprich einmal führst du nur das Abrufen aus dem DataGridView und einmal nur das Zuweisen nach Word durch (mit statischem Text).

Grüße

Max
Bitte warten ..
Mitglied: florengray
21.01.2010 um 20:22 Uhr
Hallo!

Also das mit dem Datagridview dauert so lange.
Da ist es nicht mal linear ansteigend. Also nicht 5 Zeilen = 30 Sekunden und 10 Zeilen 60 sondern sogar 80 Sekunden.
Ja das mit dem Zeilenweise ist vielleicht richtig. Aber es dürfte doch egal sein ob ich z.B. 20 Zellen so oder so abfrage.
Das mit den Formfields geht noch. Ich habe mir das mal angeschaut mit Application.visible = True
Da geht das richtig flott. Wenn ich aber die Zeit messe wenn ich App.visible = False mache dauert es komischerweise länger.
Wenn ich vor dem Durchlauf dort einen Break setze und etwas warte und dann den Code weiter ausführen lasse, dann geht es noch schneller.
??? Nun verstehe ich gar nichts mehr. ??? Ist die Schnittstelle einfach so lam?
Wenn ich mir die Mühe mache und tausende von Varibalen anlege die mit dem Event TextChanged immer mit dem neuen Wert aktualisiert werden und diese dann direkt nach Word schicke dann geht es auch schon sehr schnell.
Also gibt es ein Problem mit dem ?Datenextrahieren? aus dem Objekt. Dauert das einfach so lange oder spreche ich das Objekt falsch an?

Grüße Florengray
Bitte warten ..
Mitglied: dog
21.01.2010 um 20:35 Uhr
Ein DataGridView ist ja nun eben primär ein View, also für die visuelle Darstellung konzipiert.
Benutzt du ihn auch so?

Wenn nicht reicht nämlich ein einfacher multidimensionaler Array.
Bitte warten ..
Mitglied: florengray
21.01.2010 um 20:46 Uhr
Hmm. Ja. Bei dem Grid View ging es mir um die Tabelle die mir da zur Verfügung gestellt wird.
Es wird nämlich automatisch eine neue Zeile hinzugefügt wenn man die braucht.
Und nein ich mißbrauche den GridView. Nicht zum darstellen, sondern zum Daten kurzfristig zwischenzuspeichern.
Gibt es ein anderes Steuerelement das dazu geeigneter wäre?
Ich wüsste nicht wie man das anstellen würde aber könnte man einen Datatable nehmen den man ständig aktualisiert und dann den nach Word schickt? Dann würde man sich das einzelne Zellen ansprechen sparen.

Grüße Florengray
Bitte warten ..
Mitglied: florengray
24.01.2010 um 16:03 Uhr
Hallo nochmals.

Also wenn ich das richtig verstanden habe:
Ein Dataset könnte man vergleichsweise wie eine Excelworkbook beschreiben.

In diesem Dataset kann mann dann viele Datatables anlegen. Das wären dann die Excelsheets.
Jedes Excelsheet enthält dann Spalten und Zeilen.
Das gleiche könnte ich dann mit einem spezifischen Datatabel machen. Richtig? Also dort per Add Spalten und Zeilen hinzufügen.
Meine Überlegung: Ich binde einen Datatabel über die Eigenschaftsspalte an meinen Datagridview.
Dann müsste doch diese Tabelle immer vom datagridview aktualisiert werden bzw. imme reine Kopie des Datagridviews sein?
Dann bräuchte ich ja nur diesen Datatable abfragen und dann die Daten nach Word schicken. Richtig?

Bis dann Florengray
Bitte warten ..
Mitglied: florengray
04.03.2010 um 17:28 Uhr
Also,
das erste was viel "Zeit" kostet sind FormFields. Jedenfalls bei mir.
Also habe ich alles über eine Tabelle gelöst.
Dann noch was ganz komisches.
Wenn ich Word_App.Visible = True mache und mein Proggi da dann die Daten in die Tabelle einträgt genügt es, wenn ich
mit der Maus irgendwo auf das Doc klicke und dann rasst das Ding dadurch und füllt alles 10mal schneller aus.
Warum konnte ich mir bis heute nicht erklären.
Die Frage war jetzt wie ich diesen "Klick" simuliere.
Es geht auf jeden Fall mit der Kombi aus:
Word_App.Visible = True
Word_App.Activate
Word_App.Visible = False.
Das Problem ist nur, dass dann der Bildschirm kurz flackert.
Das kann man auch lösen indem man Word_App.WindowState auf Minimized stellt.
Was anderes kann ich im Moment dazu nicht bieten.
Habe da was mit aktiven Handels im Verdacht aber das sind nur Vermutungen.

florengray
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Vmware
gelöst Server 2008 R2 in VMware (ESX-Farm) extrem langsam (10)

Frage von YotYot zum Thema Vmware ...

Windows Update
gelöst WSUS-Downloads im LAN extrem langsam seit Win-10-Anniversary-Update 1607 (1)

Frage von departure69 zum Thema Windows Update ...

Hyper-V
gelöst Win Server 2012 und Hyper V gleich Netzwerk extrem langsam (20)

Frage von Edaseins zum Thema Hyper-V ...

Windows 10
FTP ist extrem langsam (3)

Frage von grka zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...