tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
857
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    friedemannhw friedemannhw ist offline Mitglied
    Registriert seit
    Feb 2010
    Beiträge
    11
    Hallo zusammen

    ich benötige bitte Eure Hilfe!
    Ich muss eine .dat-Datei in Access einlesen und die damit gewonnenen Daten in unterschiedliche Tabellen aufteilen.
    Hab leider nur Grundwissen was Access betrifft!
    Die Daten haben folgende Struktur:

    380|10|100|SDA44000100801|20070116|1127|DPAG-EDICC|5007734370|
    380|10|200|1|6909103191|50077343700150|20070110||Bis zum 20.01.2007 ohne Abzug|20070102|20070110|EUR|
    380|10|210|DPEED GMBH & CO. OHG|NL V EXPRESS DEUTSCHLAND|||RUNGEDAMM||HAMBURG|21035||DE||4073465440|4073465449||DE813312787|DE|37010050|235506|Po stbank|51222 Köln|||
    380|10|220|Testkunde||||Bburgallee 50||Trier|54294|Hamburg|DE||040/85560-0|0651-490||DE801182049||||||||
    380|10|300|1||512-513|||20070102|100510315|EUROPACK national BIS 31,5 KG|||||||80|ST|0.000|0.000|0.000|B|251.20||C1|19.00|||0.00||251.20||

    Ich möchte also zu allererst die komplette Datei (kann bis zu 40000 Zeilen enthalten) in ein Array einlesen, aber schon dort scheitere ich...

    Wo liegt in meinem Code der Hund begraben? (Habe grad erst angefangen zu schreiben, also ist es noch nicht so umfangreich. Es geht mir hauptsächlich erst einmal um das Befüllen des Arrays "RDaten")

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    
    Option Compare Database
     
    Function Einlesen()
    Dim strsql As String
    Dim Rechnungsnummer As Long
    Rechnungsnummer = 0
    Dim filecontents As String
    Dim RDaten(33)
    Dim Zeile, Feld
    Open "C:\temp\ElektronischeRechnung.Dat" For Input As #1
    Do Until EOF(1)
    Input #1, filecontents
    'Debug.Print filecontents
    RDaten = Split(filecontents, "|")
    Debug.Print RDaten
     
    Select Case RDaten(1)
     
        Case 380
        
            Select Case RDaten(3)
                Case 100
                Case 200
                
                    If Rechnungsnummer <> RDaten(5) Then
                    Rechnungsnummer = RDaten(5)
                    End If
                
                strsql = "Insert into Rechnungen(Rechnungsnummer,Kundennummer,Rechnungsdatum) select " & Rechnungsnummer & ", " & RDaten(6) & ", '" & RDaten(7) & "'"
                Debug.Print strsql
                
                Case 210
                Case 220
                Case 230
                Case 300
                Case 301
                Case 310
                Case 330
                Case 340
                Case 400
                Case 800
                Case 890
            End Select
                
        Case 381
        
            Select Case RDaten(3)
                Case 100
                Case 200
                Case 210
                Case 220
                Case 230
                Case 300
                Case 301
                Case 310
                Case 330
                Case 340
                Case 400
                Case 800
                Case 890
            End Select
     
    End Select
    End If
    Loop
    Close #1
    End Function

    Vielen Dank im Voraus für Eure Hilfe

    friedemannhw
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Was hast du denn für einen Fehlermeldung?
    Was egben dir deine zwei debug.prints aus?
    Code vb:
    1
    2
    
    Debug.Print filecontents
    Debug.Print RDaten
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    friedemannhw friedemannhw ist offline Mitglied
    Registriert seit
    Feb 2010
    Beiträge
    11
    An der Stelle

    Code :
    1
    
    RDaten = Split .......

    erhalte ich den Fehler:

    Fehler beim Kompilieren:
    Keine Zuweisung an Datenfeld möglich!

    Aufgrund dieses Fehlers erhalte ich gar keine Ausgabe durch
    Code :
    1
    
    Debug.Print...
     

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    RDaten ist falsch definiert. Du musst RDaten als String-Array ohne Dimension angeben

    Ich hab das mal schnell ausprobiert
    Code vb:
    1
    2
    3
    4
    5
    
    Public Sub testArray()
        Dim RDaten() As String
        RDaten = Split("a|b|c", "|")
        Debug.Print RDaten(1)
    End Sub
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    friedemannhw friedemannhw ist offline Mitglied
    Registriert seit
    Feb 2010
    Beiträge
    11
    Hallo yaslaw

    ich hab meinen Code nun mal auf das Nötigste beschränkt und die Änderung eingepflegt:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    Option Compare Database
     
    Function Einlesen()
    Dim strsql As String
    Dim Rechnungsnummer As Long
    Rechnungsnummer = 0
    Dim filecontents As String
    Dim RDaten() As String
    Open "C:\temp\ElektronischeRechnung.Dat" For Input As #1
    Do Until EOF(1)
    Input #1, filecontents
    'Debug.Print filecontents
    RDaten = Split(filecontents, "|")
    'Debug.Print RDaten
     
    Loop
    Close #1
    End Function

    Nun erhalte ich folgenden Fehler:

    Fehler beim kompilieren:
    Variable oder Prozedur anstelle eines Moduls erwartet.

    Leider wirft er mir den Fehler nur beim Ausführen des Codes und nicht beim kompilieren raus.
    Ich kann also nicht mit Bestimmtheit sagen, an welcher Stelle der Fehler nun auftritt, aber ich schätze mal,
    dass mit RDaten noch etwas im Argen liegt!?
     

  6. #6
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Debugen.... Dann weisst du wo der Fehler passiert
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  7. #7
    friedemannhw friedemannhw ist offline Mitglied
    Registriert seit
    Feb 2010
    Beiträge
    11
    OK, das funktioniert soweit erstmal.
    Vielen Dank

    Nun hab ich aber noch eine Frage:

    Wie muss ich den o.g. Code anpassen, damit ich ein vordimensioniertes Array erhalte?
    Also z.B. 33 Spalten und beliebig viele Zeilen!

    Mit
    Code :
    1
    
    Dim RDaten(33) As String
    funktioniert es nicht
     

  8. #8
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Mit Split kannst du keinen vordefinierten Array füllen.
    Die einzige möglichkeit die ich gerade sehe, ist im kopieren...

    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    Public Sub testArray()
        Dim tempFields() As String
        Dim RDaten(3) As String
        Dim i
        
        tempFields = Split("a|b|c", "|")
        
        'IsEmptyArray ist eine Funktion aus meiner ArrayFunctons-Sammlung
        'http://wiki.yaslaw.info/wikka/VbaArrayFunctions
        If IsEmptyArray(tempFields) Then
            'Leere Ziele
        Else
            For i = 0 To UBound(RDaten)
                If UBound(tempFields) >= i Then
                    RDaten(i) = tempFields(i)
                End If
            Next i
        
        End If
        
        Debug.Print RDaten(3)
     
    End Sub
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

Ähnliche Themen

  1. CSV Datei einlesen Access 2003 VBA
    Von RzumAP im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 18.03.10, 10:16
  2. Antworten: 6
    Letzter Beitrag: 14.09.07, 11:29
  3. Antworten: 1
    Letzter Beitrag: 28.06.07, 07:55
  4. array einlesen array schreiben
    Von DerWisser im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 27.03.07, 17:40
  5. Aus Access Listenfeld in VBA Array schreiben
    Von Orphelina im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 17.03.05, 13:41

Stichworte