27. december 2004 - 14:34Der er
13 kommentarer og 2 løsninger
Import med liniskift som separator.
Hej eksperter. Jeg skal importer dat a fra en text fil, og den enste separator jeg har er et linieskift. Access guiden ser umiidelbart ikke ud til at kunne hjælpe mig. Hvordan gør jeg. Jeg vedlægger lidt data som eksempel på det jeg skal have importeret.
Thu Sep 16 00:01:46 2004 Sensor, Level dB 65.1 65.3 65.5 65.4 64.9 65.5 65.0 64.5 64.0 65.5 66.0 64.7 66.6 63.3 64.8 65.6 63.8 64.7 63.8 64.7 65.0 65.3 66.5 77.1 Det er en rutine der bliver lagret for hvert minut ca. Den består at 2 txt linier og så 24 tal linier. Jeg vil gerne have hvert minut læst ind som en række med følgend felter Dato/tid og så tallene i hvert sit felt. (25 felter). Håber en kan hjælpe.
The problem with your data is that in one column you have text and numbers. So you need to import to a table with one coulmn and then in code convert to a table with the layout you need
Jeg er ikke stærk i at programmere i Access så det er ikke en mulighed for mig. Jeg troede jeg kunne bruge antal tegn eller noget i den stil Det er altid denne måde dataerne blive gemt på.
can you send an example of the Excel file to me and I will see if I can put some code together for you. I also need to know the table layout you want to impoprt into
eksperten@NOSPAMsanthell.dk Remove NOSPAM
If you send it then I will take a look as soon as I can, rather busy with other things (Christmas/New Year) :o)
Det er ikke en excel fil, men kun ent txt fil som ser ud som eksemplet ovenover. Det gentager sig for hver minut døgnet rundt. Det ovenstående eksempel skulle så ende med 2 rækker med 25 felter.
ja det er også en mulighed. Men så får jeg en masse overflødig data. Jeg havde tænkt Date sensor 1 sensor 2 sensor 3 osv. sensor 24 Thu Sep 16 00:00:41 2004 65.1 65.3 65.5 osv. 77.5
OK, jamen jeg forestillede mig at du har en tabel (table1) med felterne:
ID(autonummer), DatoTid(text), sensor1(nummer), sensor2(nummer) osv... indtil sensor24(nummer).
I en formular (form1) kunne du angive det filnavn (i feltet: "txtFilNavn") du vil importere (evt. ved at bruge windows api dialogboxen til at finde filen).
Og så en knap (cmdImporter) til at importere data til tabellen med følgende kode bagved:
Private Sub cmdImporter_Click() On Error GoTo err_ Dim fso As New FileSystemObject Dim db As DAO.Database Dim rs As DAO.Recordset Dim fl As File 'filen der skal importeres fra Dim ts As TextStream 'texten i filen Dim sReadLine As String Dim i As Integer
Set db = CurrentDb() Set rs = db.OpenRecordset("table1") Set fl = fso.GetFile(Me.txtfilnavn) Set ts = fl.OpenAsTextStream(ForReading)
Do While Not ts.AtEndOfStream 'første linje læses, hvis den er tom gåes ned til første linje med noget i sReadLine = ts.ReadLine If Len(sReadLine) < 1 Then Do Until Len(sReadLine) > 1 sReadLine = ts.ReadLine Loop End If 'starter på tilføjelse af en post i tabellen rs.AddNew 'datofelt indsættes rs!DateTime = sReadLine 'Læster linjen "Sensor, Level dB" men den skal ikke bruges ts.SkipLine 'så næste linje læses med det samme sReadLine = ts.ReadLine 'gennenløber de 24 tal og indsætter i tabellen. 'obs! felterne skal hedde "sensor1", "sensor2" osv For i = 1 To 23 sReadLine = ts.ReadLine rs("sensor" & i) = sReadLine Next i = 0 rs.Update If ts.AtEndOfStream = True Then Exit Do End If Loop MsgBox "Alt er importeret"
err_: Select Case Err.Number Case 62 'slut på fil Exit Sub ' End Select End Sub
Husk der skal være referencer til DAO 3.6 og Microsoft Scripting Runtime. Det virker her hos mig.
hov jeg kan se at jeg i tabellen har kaldt feltet for "Datotid" men i koden har jeg kaldt det for "datetime". Det skal lige rettes. Sig til hvis ikke det virker.
Ja, har du en formular hvor du vil lave importen fra? Ellers skal du oprette en. På den formular laver du en knap der hedder "cmdImporter". På formularen skal der også være en textbox, der hedder "txtFilnavn". Når du så skal importere filen skal du skrive hele stien til filen i textboxen. Fx. "c:\data.txt".
Referencerne til DAO 3.6 og Microsoft Scripting Runtime som jeg nævner tilføjes på følgende måde: Tryk alt+F11 for at åbne kode-editoren. Vælg Tools > References. På listen skal du finde "Microsoft DAO 3.6" (eller 3.51) og sætte et kryds. Find også "Microsoft Scripting Runtime" og sæt et kryds. Vælg nu Tools > Options > fanen General og afkryds i "Break on unhandled errors". Luk vba editoren. Er det til at finde ud af?
Hej i 2. Det er næsten pinligt, men jeg har desværre ikke haft lejlighed til at prøve jeres løsninger, men på grund af den lange ventetid, deler jeg pointsene mellem jer. Jeg skal nok vende tilbage med en bekræftelse på hvad der virker engang.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.