|
 
  Member
  Beiträge: 16
 
  | Moin Peter,  
hier der Code zum Einlesen der als Tabelle verknüpften Textdatei:  
  
rs.Open "[Textfile]", CurrentProject.Connection, adOpenKeyset, adLockOptimistic 'auslesen  
rs2.Open "[Daten]", CurrentProject.Connection, adOpenKeyset, adLockOptimistic 'einlesen  
rs.MoveFirst  
  
'je nach Version liegt unterschiedliche Datensatzstruktur vor  
Select Case rs.Fields(0)  
Case "V010"  
    vOffSet_PZN = 4  
Case "V200"  
    vOffSet_PZN = 5  
End Select  
  
On Error Resume Next   
  
je Textzeile sind 9 Einträge PZN möglich, werden aber nicht alle genutzt  
deshalb Umbruch, so dass für jede PZN ein separater Datensatz angelegt wird  
dazu max Anzahl von PZNi in Spalten der verlinkten Textdatei bestimmen  
Dim Tabelle As dao.TableDef, db As Database, typ, j  
Set db = CurrentDb  
Set Tabelle = db.TableDefs("textfile")  
On Error Resume Next  
For i = 1 To 10  
    typ = Tabelle.Fields("PZN" & i).Type  
    If Err.Number = 3265 Then  
        j = i - 1: Err.Clear: Exit For  
    End If  
Next  
Set Tabelle = Nothing: Set db = Nothing  
  
Dim z As Long 'zählt alle PZNs, soviele DS muss Daten am Ende enthalten!  
z = 0  
Do Until rs.EOF  
    For i = 1 To j  
     If IsNull(rs.Fields("pzn" & i)) = False Then  
            z = z + 1  
            rs2.AddNew  
            rs2.Update "VOID", rs.Fields(6)  
            rs2.Update "Nr", CStr(i)  
            rs2.Update "Quartal", rs.Fields(3)  
Die wichtigsten Felder werden direkt geupdated, damit der Datensatz angelegt ist, sollten im weiteren fehlerhafte Werte auftreten  
              
            rs2.Fields("bsnr9") = rs.Fields(2)  
            rs2.Fields("lanr9") = rs.Fields(1)  
            rs2.Fields("VO-Datum") = rs.Fields(7)  
              
            rs2.Fields("EGKVNR") = rs.Fields(8)  
            rs2.Fields("GebDat") = rs.Fields(9)  
              
            rs2.Fields("PZN") = rs.Fields(13 + (i - 1) * vOffSet_PZN)  
              
            rs2.Fields("VOF") = rs.Fields(14 + (i - 1) * vOffSet_PZN)  
            rs2.Fields("Netto") = rs.Fields(16 + (i - 1) * vOffSet_PZN)  
              
            rs2.Fields("valid") = 0  
              
        Else  
            Exit For  
        End If  
    Next  
    rs.MoveNext  
Loop  
  
Gruß |  |
 
  |