Fehler beim Öffnen einer Datenbank

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:

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
 
Tut mir leid ich find keine Zeile die LV.DBPut() und LV.REC=1 enthält.

Im Übrigen solltest Du deinen Quellcode vor dem Posten, ein wenig entrümpeln.
Besonders solche Auskommentierte Codezeilen, da sie nicht sehr zur Übersichtlichkeit betragen, da man im Codefenster keine farbliche Markierung für Kommentare hat.
 
mage hat gesagt.:
Tut mir leid ich find keine Zeile die LV.DBPut() und LV.REC=1 enthält.
ich schon ;)

also eigentlich darf die Fehlermeldung nicht auftreten, da du ja LV oben mit As New deklarierst und instanziierst. Würde also vor den Zeilen sowas machen

if LV is nothing then
VL = new ....
end if


wenn du glück hast wars das schon.


ansonsten tut der Code irgendwie in den Augen weh :(
 
Mit einem hast recht, NRFi, der Code tut wirklich in den Augen weh, aber für das, dass ich erst seit 2 wochen VB.Net mir selber beibring, find ich ihn nicht schlecht
Zwecks entrümpelt: Die Sachen im Code, die kommentiert sind, hab ich selbst kommentiert und weil ich nicht weiß, ob die Sachen nicht vielleicht doch wichtig sind, hab ich sie drinnen lassen und mitabgeschickt.

Hab das ausprobiert, was NRFi geschrieben hat: Es kommt trotzdem noch der gleiche Fehler Keine Ahnung, aber irgendwas hats da und ich find den sch*** Fehler nicht

Aber trotzdem DANKE für die Hilfe

lg tina
 

Neue Beiträge

Zurück