App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Textdateien in Tabelle
- Ersteller Krümmelmonster
- Erstellt am
Krümmelmonster
Grand Admiral Special
Habe einen Ordner mit ca 2000 Textdateien alle tragen 2 buchstaben und das datum als namen.
Von diesen Text dateien brauch ich alle die eine gewisse zeichenfolge enthalten.
Alle Textdateien die diese Zeichenfolgen enthalten sollen in einer Tabelle zusammengefasst werden.
Wie zum Teufel mach ich das?
Habe mich kurz mit Access und VBS beschäftigt..
das sah dann so aus.
Function Einlesen()
Dim db As Database, rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("tabelle")
Dim q%, x$, i%
Dim varTDat(5000) ' erhöhen wenn >100
Dim Text1$, Text2$, Text3$, Text4$, Text5$, Text6$, Text7$, Text8$, Text9$
For i = 0 To 99
varTDat(i) = ""
Next
i = 0
x = Dir("c:\log\log\*.txt")
varTDat(0) = x
Do While x <> ""
i = i + 1
x = Dir
varTDat(i) = x
Loop
For q = 0 To i - 1
On Error GoTo bye
Open "c:\" & varTDat(q) For Input As #1
Do While Not EOF(1)
Input #1, Text1, Text2, Text3, Text4, Text5, Text6, Text7, Text8, Text9
rs.AddNew
rs("feld1") = Text1
rs("feld2") = Text2
rs("feld3") = Text3
rs("feld3") = Text4
rs("feld3") = Text5
rs("feld3") = Text6
rs("feld3") = Text7
rs("feld3") = Text8
rs("feld3") = Text9
rs.Update
Loop
Close #1
Next q
bye:
rs.Close
End Function
das funktioniert natürlich total nicht weil ich auch keine ahnung von vbs habe und sonstigen sprachen ausser batch..
aber jemand ne idee muss nicht access und vbs sein kann auch mysql oder sowas sein..
Von diesen Text dateien brauch ich alle die eine gewisse zeichenfolge enthalten.
Alle Textdateien die diese Zeichenfolgen enthalten sollen in einer Tabelle zusammengefasst werden.
Wie zum Teufel mach ich das?
Habe mich kurz mit Access und VBS beschäftigt..
das sah dann so aus.
Function Einlesen()
Dim db As Database, rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("tabelle")
Dim q%, x$, i%
Dim varTDat(5000) ' erhöhen wenn >100
Dim Text1$, Text2$, Text3$, Text4$, Text5$, Text6$, Text7$, Text8$, Text9$
For i = 0 To 99
varTDat(i) = ""
Next
i = 0
x = Dir("c:\log\log\*.txt")
varTDat(0) = x
Do While x <> ""
i = i + 1
x = Dir
varTDat(i) = x
Loop
For q = 0 To i - 1
On Error GoTo bye
Open "c:\" & varTDat(q) For Input As #1
Do While Not EOF(1)
Input #1, Text1, Text2, Text3, Text4, Text5, Text6, Text7, Text8, Text9
rs.AddNew
rs("feld1") = Text1
rs("feld2") = Text2
rs("feld3") = Text3
rs("feld3") = Text4
rs("feld3") = Text5
rs("feld3") = Text6
rs("feld3") = Text7
rs("feld3") = Text8
rs("feld3") = Text9
rs.Update
Loop
Close #1
Next q
bye:
rs.Close
End Function
das funktioniert natürlich total nicht weil ich auch keine ahnung von vbs habe und sonstigen sprachen ausser batch..
aber jemand ne idee muss nicht access und vbs sein kann auch mysql oder sowas sein..
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.664
- Renomée
- 1.247
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
Code:
Function Einlesen()
Dim bHasString As Boolean
Dim db As Database
Dim rs As Recordset
Dim i As Integer
Dim q As Integer
Dim x As String
Dim varTDat(5000) As String ' erhöhen wenn >100
Dim Text1 As String
Dim Text2 As String
Dim Text3 As String
Dim Text4 As String
Dim Text5 As String
Dim Text6 As String
Dim Text7 As String
Dim Text8 As String
Dim Text9 As String
Set db = CurrentDb
Set rs = db.OpenRecordset("tabelle")
x = Dir("c:\log\log\*.txt")
While x <> ""
If x <> "." And x <> ".." Then
varTDat(i) = x
i = i + 1
End If
x = Dir
WEnd
On Error GoTo bye
For q = 0 To i - 1
Open "c:\" & varTDat(q) For Input As #1
While Not EOF(1)
Input #1, Text1, Text2, Text3, Text4, Text5, Text6, Text7, Text8, Text9
' Text1 bis Text9 enthält jetzt jeweils 1 Zeile!
bHasString = (Text1 Like "xyz")
bHasString = bHasString Or (Text2 Like "xyz")
bHasString = bHasString Or (Text3 Like "xyz")
bHasString = bHasString Or (Text4 Like "xyz")
bHasString = bHasString Or (Text5 Like "xyz")
bHasString = bHasString Or (Text6 Like "xyz")
bHasString = bHasString Or (Text7 Like "xyz")
bHasString = bHasString Or (Text8 Like "xyz")
bHasString = bHasString Or (Text9 Like "xyz")
' wenn eine Zeile die Zeichenfolge xyz enthält, ist bHasString jetzt True
' man kann auch Platzhalter verwenden: "abcyz" Like "*yz" gibt True zurück
rs.AddNew
rs("feld1") = Text1
rs("feld2") = Text2
rs("feld3") = Text3
rs("feld3") = Text4
rs("feld3") = Text5
rs("feld3") = Text6
rs("feld3") = Text7
rs("feld3") = Text8
rs("feld3") = Text9
rs.Update
WEnd
Close #1
Next q
bye:
rs.Close
End Function
Zuletzt bearbeitet:
Krümmelmonster
Grand Admiral Special
verdammt ich weiss nicht mal wie man das gescheit einbindent..
wieso geht das copy & paste ned?
wieso geht das copy & paste ned?
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.664
- Renomée
- 1.247
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
Hatte noch einen kleinen Fehler drin. Übrigens ist das VBA und kein VBS.
Hmmm, gute Frage. Das letzte Mal, dass ich mit Access und VBA hantiert habe war vor ziemlich genau 3 Jahren beim Bund. Seitdem nutze ich auch kein Access mehr.Original geschrieben von Friday69
verdammt ich weiss nicht mal wie man das gescheit einbindent..
Was genau geht denn nicht?Original geschrieben von Friday69
wieso geht das copy & paste ned?
Krümmelmonster
Grand Admiral Special
Original geschrieben von Campari
Access bietet doch aber auch so eine Importfunktion. Habe auf Arbeit so selber schon große Textdateien importiert.
ja aber das sind mehr als 2000 textdateien
und da hab ich ja also diesen schönen code.. also geh ich auf access.erstelle ein neues modul und kopier den code da rein oder?
ich seh schon.. beschränktes denken
habt ihr ne idee.. für was anderes als access bezüglich datenbanken.. den dieses access hängt mir sowas zum hals raus.
zum beispiel my sql oder was auch immer?
Zuletzt bearbeitet:
PuckPoltergeist
Grand Admiral Special
Original geschrieben von Friday69
habt ihr ne idee.. für was anderes als access bezüglich datenbanken.. den dieses access hängt mir sowas zum hals raus.
zum beispiel my sql oder was auch immer?
Du solltest wissen, was du willst und brauchst. Access ist ein DB-frontend, keine Datenbank. Für eine richtige DB kannst du dir mal MySQL oder PostgreSQL ansehen. Vor allem ersteres ist sehr gut dokumentiert, und für kleinere Sachen vollkommen ausreichend. Beide DBMS sind frei verfügbar, mach dich im Netz dazu schlau.
Krümmelmonster
Grand Admiral Special
Also um das ganz deutlich zu machen..
Es sind 601 Textdateien aber es werden mehr hinzukommen Tag für Tag.
Die Grösse dieser Dateien reich von ein paar Bytes bis zu 300Kbyte.
Die Namensgebung der Dateien ist ähnlich aber nicht gleich.
Gesucht werden alle Textdateien die z.b den Inhalt "Mail@Sms.li" enthalten.
Dieso sollen dann ausgewertet werden d.h die Daten von der Datei in eine Datenbank zu übernehmen.
Ob man jetzt zuerst herausfiltert und dann in die Datenbank integriert oder zuerst alles in eine Datenbank und dann die Sachen herausfiltert ist egal.
Hier mal ein Beispiel einer Datei:
00000 192.********* Wed, 28 Apr 2004 00:01:27 +0200 <-- +OK MERCUR POP3-Server (v4.02.12 *********) for Windows NT ready <*******@mail.sms.li-gate.com>
00456 192.********* Wed, 28 Apr 2004 00:01:28 +0200 --> HELO
00456 192.********* Wed, 28 Apr 2004 00:01:28 +0200 <-- +OK ****.li-gate.com Hello 192.*********
00456 192.********* Wed, 28 Apr 2004 00:01:28 +0200 --> QUIT
00456 192.********* Wed, 28 Apr 2004 00:01:28 +0200 <-- +OK
00000 192.********* Wed, 28 Apr 2004 00:06:28 +0200 *** POP3-User 192.1****
connect
irgendwie so sieht das aus..
Vielleicht merken einige das es sich um Logdateien handelt.
Wie man aus einer Datenbank in Access Abfragen erstellt usw.. weiss ich ja aber wie zum Teufel kann ich über 600 Textdateien durchsuchen und diejenigen die das Resultat enthalten einbinden?
Ich will einfach die einfachst möglichste Lösung.. Ich bin eine Niete was DB anbelangt und von programmieren kann ich nur ein bisschen Batch.
Es sind 601 Textdateien aber es werden mehr hinzukommen Tag für Tag.
Die Grösse dieser Dateien reich von ein paar Bytes bis zu 300Kbyte.
Die Namensgebung der Dateien ist ähnlich aber nicht gleich.
Gesucht werden alle Textdateien die z.b den Inhalt "Mail@Sms.li" enthalten.
Dieso sollen dann ausgewertet werden d.h die Daten von der Datei in eine Datenbank zu übernehmen.
Ob man jetzt zuerst herausfiltert und dann in die Datenbank integriert oder zuerst alles in eine Datenbank und dann die Sachen herausfiltert ist egal.
Hier mal ein Beispiel einer Datei:
00000 192.********* Wed, 28 Apr 2004 00:01:27 +0200 <-- +OK MERCUR POP3-Server (v4.02.12 *********) for Windows NT ready <*******@mail.sms.li-gate.com>
00456 192.********* Wed, 28 Apr 2004 00:01:28 +0200 --> HELO
00456 192.********* Wed, 28 Apr 2004 00:01:28 +0200 <-- +OK ****.li-gate.com Hello 192.*********
00456 192.********* Wed, 28 Apr 2004 00:01:28 +0200 --> QUIT
00456 192.********* Wed, 28 Apr 2004 00:01:28 +0200 <-- +OK
00000 192.********* Wed, 28 Apr 2004 00:06:28 +0200 *** POP3-User 192.1****
connect
irgendwie so sieht das aus..
Vielleicht merken einige das es sich um Logdateien handelt.
Wie man aus einer Datenbank in Access Abfragen erstellt usw.. weiss ich ja aber wie zum Teufel kann ich über 600 Textdateien durchsuchen und diejenigen die das Resultat enthalten einbinden?
Ich will einfach die einfachst möglichste Lösung.. Ich bin eine Niete was DB anbelangt und von programmieren kann ich nur ein bisschen Batch.
Krümmelmonster
Grand Admiral Special
Function Einlesen()
Dim db As Database, rs As Recordset
Set db = CurrentDb("currentdb")
Set rs = db.OpenRecordset("tabelle")
Dim q%, x$, i%
Dim varTDat(1000) ' erhöhen wenn >100
Dim Text1$, Text2$, Text3$, Text4$, Text5$, Text6$, Text7$, Text8$, Text9$, Text10$, Text11$, Text12$, Text13$, Text14$, Text15$
'---Dateinamen feststellen und im 100-Array speichern
For i = 0 To 1000
varTDat(i) = ""
Next
i = 0
x = Dir("c:\log\log\*.txt")
varTDat(0) = x
Do While x <> ""
i = i + 1
x = Dir
varTDat(i) = x
Loop
'--- Dateien einlesen mit jeweils 3 Zeilen
For q = 0 To i - 1
On Error GoTo bye
Open "c:\log\log\" & varTDat(q) For Input As #1
Do While Not EOF(1)
Input #1, Text1, Text2, Text3, Text4, Text5, Text6, Text7, Text8, Text9, Text10, Text11, Text12, Text13, Text14, Text15
rs.AddNew
rs("feld1") = Text1
rs("feld2") = Text2
rs("feld3") = Text3
rs("feld4") = Text4
rs("feld5") = Text5
rs("feld6") = Text6
rs("feld7") = Text7
rs("feld8") = Text8
rs("feld9") = Text9
rs("feld10") = Text10
rs("feld11") = Text11
rs("feld12") = Text12
rs("feld13") = Text13
rs("feld14") = Text14
rs("feld15") = Text15
rs.Update
Loop
Close #1
Next q
bye:
rs.Close
End Function
Laufzeitfehler 3734
Die Datenbank wurde vom Benutzer Admin auf Computer SOundSo in einen Status versetzt, in dem sie nicht geöffnet oder gesperrt werden kann.
Wenn ich dann auf Debuggen klicke ist die 3. Zeile " Set db = CurrentDb("currentdb") " Gelb umrandet also anscheinend Fehlerhaft.
Weiss da jemand was?
Dim db As Database, rs As Recordset
Set db = CurrentDb("currentdb")
Set rs = db.OpenRecordset("tabelle")
Dim q%, x$, i%
Dim varTDat(1000) ' erhöhen wenn >100
Dim Text1$, Text2$, Text3$, Text4$, Text5$, Text6$, Text7$, Text8$, Text9$, Text10$, Text11$, Text12$, Text13$, Text14$, Text15$
'---Dateinamen feststellen und im 100-Array speichern
For i = 0 To 1000
varTDat(i) = ""
Next
i = 0
x = Dir("c:\log\log\*.txt")
varTDat(0) = x
Do While x <> ""
i = i + 1
x = Dir
varTDat(i) = x
Loop
'--- Dateien einlesen mit jeweils 3 Zeilen
For q = 0 To i - 1
On Error GoTo bye
Open "c:\log\log\" & varTDat(q) For Input As #1
Do While Not EOF(1)
Input #1, Text1, Text2, Text3, Text4, Text5, Text6, Text7, Text8, Text9, Text10, Text11, Text12, Text13, Text14, Text15
rs.AddNew
rs("feld1") = Text1
rs("feld2") = Text2
rs("feld3") = Text3
rs("feld4") = Text4
rs("feld5") = Text5
rs("feld6") = Text6
rs("feld7") = Text7
rs("feld8") = Text8
rs("feld9") = Text9
rs("feld10") = Text10
rs("feld11") = Text11
rs("feld12") = Text12
rs("feld13") = Text13
rs("feld14") = Text14
rs("feld15") = Text15
rs.Update
Loop
Close #1
Next q
bye:
rs.Close
End Function
Laufzeitfehler 3734
Die Datenbank wurde vom Benutzer Admin auf Computer SOundSo in einen Status versetzt, in dem sie nicht geöffnet oder gesperrt werden kann.
Wenn ich dann auf Debuggen klicke ist die 3. Zeile " Set db = CurrentDb("currentdb") " Gelb umrandet also anscheinend Fehlerhaft.
Weiss da jemand was?
moin moin
Nicht, dass ich was von Access oder deinem Script verstehe, aber im MS SQL Server könnte die Meldung bedeuten, dass du grade über die grafische Oberfläche auf die DB zugreifst (Tabellenansicht) und sie (die Tabelle...) deshalb gesperrt ist.
Nur mein erster Gedanke...
Nicht, dass ich was von Access oder deinem Script verstehe, aber im MS SQL Server könnte die Meldung bedeuten, dass du grade über die grafische Oberfläche auf die DB zugreifst (Tabellenansicht) und sie (die Tabelle...) deshalb gesperrt ist.
Nur mein erster Gedanke...
Krümmelmonster
Grand Admiral Special
Ne der Fehler war das ich anscheinen gleichzeitig DAO wie ADO versucht habe zu verwenden.
Jetzt lautet der Code so:
Funktioniert zwar immer noch nicht, aber das erste mal das ich keine Fehlermeldung bekomme.
Jetzt lautet der Code so:
Funktioniert zwar immer noch nicht, aber das erste mal das ich keine Fehlermeldung bekomme.
Function Einlesen()
Dim db As Database, RS As DAO.Recordset
Set db = CurrentDb
Set RS = db.OpenRecordset("tabelle")
Dim q%, x$, i%
Dim varTDat(1000) ' erhöhen wenn >100
Dim Text1$, Text2$, Text3$, Text4$, Text5$, Text6$, Text7$, Text8$, Text9$, Text10$, Text11$, Text12$, Text13$, Text14$, Text15$
'---Dateinamen feststellen und im 100-Array speichern
For i = 0 To 1000
varTDat(i) = ""
Next
i = 0
x = Dir("c:\log\log\*.txt")
varTDat(0) = x
Do While x <> ""
i = i + 1
x = Dir
varTDat(i) = x
Loop
'--- Dateien einlesen mit jeweils 3 Zeilen
For q = 0 To i - 1
On Error GoTo bye
Open "c:\log\log\" & varTDat(q) For Input As #1
Do While Not EOF(1)
Input #1, Text1, Text2, Text3, Text4, Text5, Text6, Text7, Text8, Text9, Text10, Text11, Text12, Text13, Text14, Text15
RS.AddNew
RS("feld1") = Text1
RS("feld2") = Text2
RS("feld3") = Text3
RS("feld4") = Text4
RS("feld5") = Text5
RS("feld6") = Text6
RS("feld7") = Text7
RS("feld8") = Text8
RS("feld9") = Text9
RS("feld10") = Text10
RS("feld11") = Text11
RS("feld12") = Text12
RS("feld13") = Text13
RS("feld14") = Text14
RS("feld15") = Text15
RS.Update
Loop
Close #1
Next q
bye:
RS.Close
End Function
Krümmelmonster
Grand Admiral Special
und schon hab ich das nächste Problem
Open "c:\log\log\" & varTDat(q) For Input As #1
nach dieser Linie springt das Programm automatisch auf
RS.Close
End Function
ab und zu gehts auch weiter bis
RS("feld2") = Text2
und springt erst dann runter
in der überwachung steht sogar das dann Feld 1 einen wert hat.. aber das wars dann auch reingeschrieben wird nix
Open "c:\log\log\" & varTDat(q) For Input As #1
nach dieser Linie springt das Programm automatisch auf
RS.Close
End Function
ab und zu gehts auch weiter bis
RS("feld2") = Text2
und springt erst dann runter
in der überwachung steht sogar das dann Feld 1 einen wert hat.. aber das wars dann auch reingeschrieben wird nix
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.664
- Renomée
- 1.247
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
Füge mal nach bye: folgende Zeile ein:Original geschrieben von Friday69
und schon hab ich das nächste Problem
Open "c:\log\log\" & varTDat(q) For Input As #1
nach dieser Linie springt das Programm automatisch auf
RS.Close
End Function
Code:
MsgBox "Es trat folgender Fehler auf: " & Err.Number & " - " & Err.Description
Weil das RS.Update nicht aufgerufen wird.Original geschrieben von Friday69
in der überwachung steht sogar das dann Feld 1 einen wert hat.. aber das wars dann auch reingeschrieben wird nix
Krümmelmonster
Grand Admiral Special
JA die Message Boc kommt jetz mit : 0 -
aber was heisst das nun?
und wie rufe ich das rs update auf..
sorry aber ich hab eben wie gesagt keine ahnung von vba ich hab mir diesen code nur in stundenlanger arbeit zusammengeschuster und zusammengeklaut.
aber was heisst das nun?
und wie rufe ich das rs update auf..
sorry aber ich hab eben wie gesagt keine ahnung von vba ich hab mir diesen code nur in stundenlanger arbeit zusammengeschuster und zusammengeklaut.
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.664
- Renomée
- 1.247
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
Dass kein Fehler aufgetreten ist.Original geschrieben von Friday69
JA die Message Boc kommt jetz mit : 0 -
aber was heisst das nun?
Damit das nochmal was wird, solltest Du Dich dringend in VBA einarbeiten und versuchen, den Code zu verstehen. Als erstes solltest Du die Variablen richtig deklarieren. varTDat ist bei Dir bspw. ein Variant, obwohl String besser wäre. Dann könntest Du auch die allererste For-Schleife weglassen. Statt mit den Kürzeln $, & und % solltest Du As String, As Long und As Integer schreiben, da das schonmal die Lesbarkeit erhöht. Desweiteren solltest Du mal nach der Zeile mit dem Input #1 jeden der gelesenen Werte mit MsgBox "Text1=" & Text1 usw. ausgeben, damit Du siehst was überhaupt gelesen wurde. Vermutlich gibt's da schon Probleme.
Sind die Felder in der Tabelle alle vom Datentyp String? Ansonsten könnte es AFAIK bei RS("bla") = ... Probleme geben, da Textx ein String ist.
Krümmelmonster
Grand Admiral Special
google und die wörter die ich nicht verstehe werden in den nächsten minuten mein freund sein
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.664
- Renomée
- 1.247
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
Access hat meines Wissens auch eine recht gute Hilfe zu VBA.
Krümmelmonster
Grand Admiral Special
Ok jetzt sieht er so aus
also entweder sprint er von dieser zeile
Open "c:\log\log\" & varTDat(q) For Input As #1
direkt zum ende
oder er
er gibt bei MsgBox "Text1=" & Text1 diesen inhalt aus
und springt dann bei
RS("feld2") = Text2
ans ende.
aber hey schon wieder ein schritt weiter.. kann ich morgen wieder dransitzen
Function Einlesen()
Dim db As Database, RS As DAO.Recordset
Set db = CurrentDb
Set RS = db.OpenRecordset("tabelle1")
Dim q As Long
Dim x As String
Dim i As Integer
Dim varTDat(1000) ' erhöhen wenn >100
Dim Text1$, Text2$, Text3$, Text4$, Text5$, Text6$, Text7$, Text8$, Text9$, Text10$, Text11$, Text12$, Text13$, Text14$, Text15$
'---Dateinamen feststellen und im 100-Array speichern
For i = 0 To 1000
varTDat(i) = ""
Next
i = 0
x = Dir("c:\log\log\*.txt")
varTDat(0) = x
Do While x <> ""
i = i + 1
x = Dir
varTDat(i) = x
Loop
'--- Dateien einlesen mit jeweils 3 Zeilen
For q = 0 To i - 1
On Error GoTo bye
MsgBox "Es trat folgender Fehler auf: " & Err.Number & " - " & Err.Description
Open "c:\log\log\" & varTDat(q) For Input As #1
Do While Not EOF(1)
Input #1, Text1, Text2, Text3, Text4, Text5, Text6, Text7, Text8, Text9, Text10, Text11, Text12, Text13, Text14, Text15
RS.AddNew
RS("feld1") = Text1
MsgBox "Text1=" & Text1
RS("feld2") = Text2
MsgBox "Text2=" & Text2
RS("feld3") = Text3
MsgBox "Text3=" & Text3
RS("feld4") = Text4
MsgBox "Text4=" & Text4
RS("feld5") = Text5
RS("feld6") = Text6
RS("feld7") = Text7
RS("feld8") = Text8
RS("feld9") = Text9
RS("feld10") = Text10
RS("feld11") = Text11
RS("feld12") = Text12
RS("feld13") = Text13
RS("feld14") = Text14
RS("feld15") = Text15
RS.Update
Loop
Close #1
Next q
bye:
RS.Close
End Function
also entweder sprint er von dieser zeile
Open "c:\log\log\" & varTDat(q) For Input As #1
direkt zum ende
oder er
er gibt bei MsgBox "Text1=" & Text1 diesen inhalt aus
und springt dann bei
RS("feld2") = Text2
ans ende.
aber hey schon wieder ein schritt weiter.. kann ich morgen wieder dransitzen
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.664
- Renomée
- 1.247
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
Argh! Nimm mal folgendes als Grundlage für weitere Versuche:
Code:
Sub Einlesen()
Dim db As Database
Dim RS As DAO.Recordset
Dim q As Long
Dim x As String
Dim i As Integer
Dim varTDat(1000) As String ' erhöhen wenn >100
Dim Text1$, Text2$, Text3$, Text4$, Text5$, Text6$, Text7$, Text8$, Text9$, Text10$, Text11$, Text12$, Text13$, Text14$, Text15$
' Recordset öffnen
Set db = CurrentDb
Set RS = db.OpenRecordset("tabelle1")
'---Dateinamen feststellen und im 100-Array speichern
x = Dir("c:\log\log\*.txt")
Do
varTDat(i) = x
i = i + 1
x = Dir
Loop Until x = ""
'--- Dateien einlesen mit jeweils 3 Zeilen
' bei Fehler zu fehler springen
On Error GoTo fehler
For q = 0 To i - 1
' Datei öffnen
Open "c:\log\log\" & varTDat(q) For Input As #1
' tue solange wir nicht am Ende der Datei sind...
Do While Not EOF(1)
Input #1, Text1, Text2, Text3, Text4, Text5, Text6, Text7, Text8, Text9, Text10, Text11, Text12, Text13, Text14, Text15
RS.AddNew
MsgBox "Text1=" & Text1
RS("feld1") = Text1
MsgBox "Text2=" & Text2
RS("feld2") = Text2
MsgBox "Text3=" & Text3
RS("feld3") = Text3
MsgBox "Text4=" & Text4
RS("feld4") = Text4
MsgBox "Text5=" & Text5
RS("feld5") = Text4
MsgBox "Text6=" & Text6
RS("feld6") = Text6
MsgBox "Text7=" & Text7
RS("feld7") = Text7
MsgBox "Text8=" & Text8
RS("feld8") = Text8
MsgBox "Text9=" & Text9
RS("feld9") = Text9
MsgBox "Text10=" & Text10
RS("feld10") = Text10
MsgBox "Text11=" & Text11
RS("feld11") = Text11
MsgBox "Text12=" & Text12
RS("feld12") = Text12
MsgBox "Text13=" & Text13
RS("feld13") = Text13
MsgBox "Text14=" & Text14
RS("feld14") = Text14
MsgBox "Text15=" & Text15
RS("feld15") = Text15
' Recordset updaten
RS.Update
Loop
' Datei schließen
Close #1
Next q
' Recordset schließen
RS.Close
' Sub verlassen
Exit Sub
fehler:
' Fehlermeldung anzeigen
MsgBox "Es trat folgender Fehler auf: " & Err.Number & " - " & Err.Description
' Datei schließen
Close #1
' Recordset schließen
RS.Close
End Sub
Krümmelmonster
Grand Admiral Special
na danke geht doch dachte schon ich muss mich noch dümmer anstellen
wie schon erwähnt du kannst einem kindergärtner.. auch nicht einfachso erhöhte algebra beibringen
wie schon erwähnt du kannst einem kindergärtner.. auch nicht einfachso erhöhte algebra beibringen
Krümmelmonster
Grand Admiral Special
juhuh er bindet was ein..
weiss zwar ned was genau.. usw usw.. aber ich hab danach was in der tabelle.
weiss zwar ned was genau.. usw usw.. aber ich hab danach was in der tabelle.
Krümmelmonster
Grand Admiral Special
Fehler 62
Einlesen hinter Dateiende
irgendwas soll da angeblich ned stimmen
Einlesen hinter Dateiende
irgendwas soll da angeblich ned stimmen
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.664
- Renomée
- 1.247
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
Naja, wenn er bei dem Input plötzlich über das Dateiende kommt, gibt's natürlich Probleme. Also am besten immer nur 1 Zeile am Stück einlesen:
Wenn er beim letzten Datensatz vor Feld 15 auf das Dateiende trifft, müsste dieser Datensatz automatisch verworfen werden, da dann das RS.Update nicht aufgerufen wird.
(Alle Angaben ohne Gewähr - ich hab's nicht getestet)
Code:
Sub Einlesen()
Dim db As Database
Dim RS As DAO.Recordset
Dim q As Long
Dim x As String
Dim i As Integer
Dim varTDat(1000) As String ' erhöhen wenn >100
Dim txt As String
' Recordset öffnen
Set db = CurrentDb
Set RS = db.OpenRecordset("tabelle1")
'---Dateinamen feststellen und im 100-Array speichern
x = Dir("c:\log\log\*.txt")
Do
varTDat(i) = x
i = i + 1
x = Dir
Loop Until x = ""
'--- Dateien einlesen mit jeweils 3 Zeilen
' bei Fehler zu fehler springen
On Error GoTo fehler
For q = 0 To i - 1
' Datei öffnen
Open "c:\log\log\" & varTDat(q) For Input As #1
' tue solange wir nicht am Ende der Datei sind...
Do While Not EOF(1)
' 1 Zeile lesen
Line Input #1, txt
' bei jeder 16. Zeile einen neuen Datensatz einfügen
If q Mod 16 = 0 Then RS.AddNew
' Feld füllen
MsgBox CStr((q Mod 16) + 1) & "=" & txt
RS(CStr((q Mod 16) + 1)) = txt
' vor jeder 16. Zeile den Datensatz updaten
If q Mod 16 = 15 Then RS.Update
Loop
' Datei schließen
Close #1
Next q
' Recordset schließen
RS.Close
' Sub verlassen
Exit Sub
fehler:
' Fehlermeldung anzeigen
MsgBox "Es trat folgender Fehler auf: " & Err.Number & " - " & Err.Description
' Datei schließen
Close #1
' Recordset schließen
RS.Close
End Sub
(Alle Angaben ohne Gewähr - ich hab's nicht getestet)
Krümmelmonster
Grand Admiral Special
MsgBox CStr((q Mod 16) + 1) & "=" & txt
RS(CStr((q Mod 16) + 1)) = txt
hier muss noch ein fehler drinliegen..
es gibt die fehlermeldung
3265 Element in dieser Auflistung nicht gefunden.
anscheinend wird der wert nicht richtig eingetragen,
cih weiss zwar ned was das ist aber.. naja googlen
RS(CStr((q Mod 16) + 1)) = txt
hier muss noch ein fehler drinliegen..
es gibt die fehlermeldung
3265 Element in dieser Auflistung nicht gefunden.
anscheinend wird der wert nicht richtig eingetragen,
cih weiss zwar ned was das ist aber.. naja googlen
- Mitglied seit
- 16.11.2001
- Beiträge
- 21.664
- Renomée
- 1.247
- Standort
- München
- Aktuelle Projekte
- World Community Grid
- Lieblingsprojekt
- Folding@Home
- Meine Systeme
- AMD Ryzen 9 5950X
- BOINC-Statistiken
- Folding@Home-Statistiken
- Prozessor
- AMD Ryzen 9 5950X
- Mainboard
- ASUS TUF Gaming X570-Pro [WI-FI]
- Kühlung
- be quiet! Shadow Rock 3
- Speicher
- 4x 16GB DDR4-3200 Corsair Vengeance LPX
- Grafikprozessor
- ASRock Radeon RX 550 Phantom Gaming Aktiv 2GB
- Display
- LG 27UL850-W, 27"
- SSD
- Samsung 980 PRO 2TB, Samsung 840 EVO 500GB
- HDD
- Seagate Barracuda 7200.14 3TB SATA3
- Optisches Laufwerk
- Samsung SH-S183A SATA schwarz (im externen Gehäuse)
- Gehäuse
- be quiet! Silent Base 802 schwarz
- Netzteil
- be quiet! Straight Power 11 Platinum 550W
- Tastatur
- Logitech G613 Lightspeed
- Maus
- Logitech M510
- Betriebssystem
- Ubuntu Linux 22.04
- Webbrowser
- Vivaldi
- Internetanbindung
-
▼100 MBit
▲40 MBit
'Mod' bedeutet Modulo. Es gibt Dir den Rest der Division zurück:
0 Mod 16 = 0
1 Mod 16 = 1
...
15 Mod 16 = 15
16 Mod 16 = 0
17 Mod 16 = 1
usw.
'CStr' wandelt etwas in einen String um.
Der Fehler ist, dass ich etwas vergessen habe. Es muss heißen:
0 Mod 16 = 0
1 Mod 16 = 1
...
15 Mod 16 = 15
16 Mod 16 = 0
17 Mod 16 = 1
usw.
'CStr' wandelt etwas in einen String um.
Der Fehler ist, dass ich etwas vergessen habe. Es muss heißen:
Code:
MsgBox CStr((q Mod 16) + 1) & "=" & txt
RS("feld" & CStr((q Mod 16) + 1)) = txt
Ähnliche Themen
- Antworten
- 0
- Aufrufe
- 204
- Antworten
- 1
- Aufrufe
- 519
- Antworten
- 0
- Aufrufe
- 167
- Antworten
- 0
- Aufrufe
- 415