jokybordaux
Mitglied
hi
Ich habe folgendes Problem, und zwar:
Ich habe ein Programm geschrieben, dass aus einer Datenbank mit Namen Auer, eine Tabelle ins Excel schreibt und umgekehrt sollte es auch funktionieren. Normalerweise müsste das ja auch klappen, weil es ja in eine Richtung funktioniert und die Verbindung der 2 Datenbank besteht. Aber in die Richtung Excel -> Auer funktioniert das nicht, da eine Fehlermeldung kommt.
Und zwar: Objektvariable oder With-Blockvariable nicht festgelegt. Bei der Fehlermeldung wir die Zeile: LV.DBPut() und LV.REC=1 gelb angestrichen.
Hier der Code, der eigentlich funktionieren müsste:
Wäre super, falls sich jemand damit auskennt und mir helfen kann?!
lg tina
Ich habe folgendes Problem, und zwar:
Ich habe ein Programm geschrieben, dass aus einer Datenbank mit Namen Auer, eine Tabelle ins Excel schreibt und umgekehrt sollte es auch funktionieren. Normalerweise müsste das ja auch klappen, weil es ja in eine Richtung funktioniert und die Verbindung der 2 Datenbank besteht. Aber in die Richtung Excel -> Auer funktioniert das nicht, da eine Fehlermeldung kommt.
Und zwar: Objektvariable oder With-Blockvariable nicht festgelegt. Bei der Fehlermeldung wir die Zeile: LV.DBPut() und LV.REC=1 gelb angestrichen.
Hier der Code, der eigentlich funktionieren müsste:
Code:
Option Explicit On
Public Class Form3
Inherits System.Windows.Forms.Form
Public LV As New BS4ServerV3.LV
Public PRJ As New BS4ServerV3.PRJ
Public bs4 As New BS4ServerV3.BS4
Public Kalk As New BS4ServerV3.KALK
Public BML As New BS4ServerV3.BML
Public BMM As New BS4ServerV3.BMM
Public Excel As New Excel.Application
Public B As String
Public PN As String
Public KT
Public EH
Public Ans
Public Zeile
Public BM
Public PN1 As Integer
Public i As String
Public ii
Public iii
Public z
Public PN2
Public BS4Name$
Public Pos
Public Pos1
Public saa
Public poa
Public Übersicht As Form
Private Sub Auslesen()
Dim Name As String
'Dim B As String
'Dim PN As String
'Dim KT 'Variable Kurztext
'Dim EH 'Variable Einheit
'Dim Ans 'Variable Ansatzformel
'Dim Zeile 'Variable zum Excel auslesen
'Dim BM 'Variable Betriebsmittelnr.
'Dim PN1 As String
'Dim i As String
'Dim ii 'Schleifenvariable
'Dim iii 'Schleifenvariable
'Dim z 'z wird um 1.5 erhöht wenn i 0 ist
'Dim PN2 'Schleifenvariable
'Dim Pos 'LVPositionsvariable
'Dim Pos1 'LVPositionsvariable
'Dim saa
'Dim poa
Private Sub Auslesen()
Dim Name As String
'Dim B As String
'Dim PN As String
'Dim KT 'Variable Kurztext
'Dim EH 'Variable Einheit
'Dim Ans 'Variable Ansatzformel
'Dim Zeile 'Variable zum Excel auslesen
'Dim BM 'Variable Betriebsmittelnr.
'Dim PN1 As String
'Dim i As String
'Dim ii 'Schleifenvariable
'Dim iii 'Schleifenvariable
'Dim z 'z wird um 1.5 erhöht wenn i 0 ist
'Dim PN2 'Schleifenvariable
'Dim Pos 'LVPositionsvariable
'Dim Pos1 'LVPositionsvariable
'Dim saa
'Dim poa
B = dlg1.FileName 'B wird der Excelfilename zugewiesen
Zeile = 3 'Zeile bekommt den Wert 3 damit in der zweiten Zeile gestartet wird
Name = "" 'PLV Filename wird gelöscht damit nicht versehntlich in das falsche File geschrieben wird
'Excel.Workbooks.Open(B) 'Excel wird geöffnet
'Excel.Visible = True 'Excelsheet wird "sichtbar" gemacht
Server.startserver() 'Server wird gestartet
Name = dlg2.FileName 'Variable Name wird der PLV Name übergeben
PRJ.DBOpen(Name) 'Projekt wird geöffnet
'Zeile = 2
'i = Excel.Cells(Zeile, 2).value
While i <> ""
i = Excel.Cells(Zeile, 2).value 'i bekommt den Wert des Zeilenfeldes
PN = Excel.Cells(Zeile, 1).value 'Positionsnummer
poa = Excel.Cells(Zeile, 3).value 'Kurztext
EH = Excel.Cells(Zeile, 7).value 'Einheit
Ans = Excel.Cells(Zeile, 9).value 'Ansatzformel
BM = Excel.Cells(Zeile, 8).value 'Betriebsmittelnr.
If i = "0" Then 'Wenn i Null ist wird eine Position geschrieben
LV.DBInsertKey(PN) 'Positionsnummer wird geschrieben
LV.PoA = poa 'Kurztex
LV.EH = EH 'Einheit
Else
Kalk.DBInsert() 'Kalkulation wird geöffnet
Kalk.BNr = BM 'Betriebsmittelnummer
Kalk.Ans = Ans 'Ansatzformel
LV.DBPut() 'Änderungen speichern
End If
Zeile = Zeile + 1 'Zeile erhöhen
i = Excel.Cells(Zeile, 2).value 'Zeile auslesen
End While
Pos = 1
Pos1 = 0
'LV.Rec = 1
If LV.Anz = 1 Then 'Wenn nur eine Position geschrieben wurde
Server.Endserver() 'wird das Programm beendet sonst kommt es zu
MsgBox("Positionen erfolgreich geschrieben") 'einer Fehlermeldung
End
End If
For PN2 = 1 To LV.Anz 'Schleife um doppelt geschriebene
Pos1 = Pos1 + 1 'Positionen zu löschen
Pos = Pos + 1
If Pos1 > LV.Anz Or Pos > LV.Anz Then 'Prüfen ob Variablen kleiner als LV.anz sind
Pos1 = 1 'Ansonsten werden nicht alle
Pos = 2 'Positionen geprüft
End If
LV.Rec = Pos 'Auslesen der 2ten Position im LV
PN1 = Trim(Format(LV.PNr)) 'Zurechtstutzen der Variablen
LV.Rec = Pos1 'Auslesen der 1ten Position im LV
PN = Trim(Format(LV.PNr)) 'Zurechtstutzen der Variablen
If PN = PN1 Then 'Kontrollieren ob Positionen gleich sind
LV.DBDelete() 'löschen der Position
LV.DBPut() 'Speichern der Änderung
End If
Next PN2 'Wiederholen der Schleife
LV.DBPut()
PRJ.DBClose() 'Projekt wird geschlossen
Server.Endserver() 'Server wird geschlossen
'MsgBox("Positionen erfolgreich geschrieben") 'Wenn erfolgreich ->Rückmeldung
End Sub
Wäre super, falls sich jemand damit auskennt und mir helfen kann?!
lg tina