Du burde nok sige noget mere. Der er tilsyneladende tale om en tekstfil, og det er da let at læse en sådan. Problemet er så: Hvad skal du så gøre med dine data. Jeg giver omlidt teksten til et lille VB-program der kan hente en tekstfil ind i en tekststreng, men så er det dit eget problem at gøre noget med den.
Her er en lille procedure, som vil læse en tekstfil. For øjeblikket vil den hente filen D:\test.txt og udskrive den i en msgbox (det er for at teste).
Private Sub HentFil() Dim FileName As String Dim FileNr As Integer Dim txt As String FileName = "D:\test.txt" FileNr = FreeFile Open FileName For Input As FileNr txt = Input(LOF(FileNr), FileNr) MsgBox txt Close (FileNr) End Sub
Synes godt om
Slettet bruger
22. juli 2003 - 12:07#3
Ja det er da meget findt men hvordan vil du ku finde det du skal sætte i db ? for jeg skal ik har alt i db kun
Er det et eksempel på indholdet af en linie i din tekstfil, du lige har vist? Er det så kun 2003-07-22 og 04:11:12 der skal gemmes? og hvis klokkeslættet mangler så kun datoen?
Har jeg nu forstået det rigtigt? Hvis det er tilfældet er det let at pille de to dele ud.
Synes godt om
Slettet bruger
22. juli 2003 - 12:41#5
Hvis du ser i den fil. Så er der et sted der står #Fields: Den skal bestemme hvad der skal være af felter.
Her er endnu et forslag: Her er en lille programstump, som sætter en tekststreng t lig linien fra din fil. Det virker som om at tegnet " " (mellemrum) er skilletegn imellem dine felter. Programmet splitter derefter linien op til en tabel A(0), A(1),..... Det sker med ordren A=split(A," ") Du har nu adgang til alle dine felter. Det er vigtigt at A blot erklæres som dim A.
Nedenstående lille program vil udskrive antallet af felter samt det 1., det 2. og det sidste.
Her er så koden:
dim t as string dim A dim n byte t="2003-07-22 04:11:12 127.0.0.1 - W3SVC1 B01 127.0.0.1
Du skal så blot læse en linie ad gangen fra din tekstfil, splitte den op og gemme de relevante felter i din database. Hvis dette er brugbart kan jeg ændre proceduren, så den henter en linie ad gangen.
Den meget lange tekststreng blev forkludret da det blev skrevet ud her på siden, men det kan du nok selv ændre. Meningen er at t er lig hele tekststrengen.
Synes godt om
Slettet bruger
22. juli 2003 - 15:21#8
Det kan jeg da ik bruge.
Kan du ik et scrip der kan giv mig line for line da det ense der er fast i den txt er de 4 linder i toppe. rasten kan vær alt fra 1 til 4 mil. jeg kender godt det med at splite.
Synes godt om
Slettet bruger
22. juli 2003 - 15:22#9
Da data start fra 5 og ned af. og line 4 bestemmer hvad den indholder.
Det er stadig for uklart: Hvilket skilletegn bruges i data-linierne 5,6,7... Jeg troede først det var blanktegn (mellemrum). Men er det i virkeligheden tegnet '-' nogle gange og andre gange '/'. Give et eksempel på en linie med data. En komplet linie, og fortæl hvilke skilletegn, der er.
2003-07-22 04:11:12 127.0.0.1 - W3SVC1 B01 127.0.0.1 80 GET / - 200 0 2441 319 260 Dette er en del af en datalinie.Er der så datafelt med værdien '/'? Er blanktegn skilletegn imellem felter?
Synes godt om
Slettet bruger
22. juli 2003 - 17:05#16
Ja tom felt er lig med - og / er så vidt jeg kan se en del af sætning
det vil sige, at hvis en linie ser sådan ud 123 456 / - - 789 ...... så er der her vist indholdet af 6 felter: felt1: 123 felt2:456 felt3: / felt4 og felt 5 er tomme felt6: 789
Vil du være tilfreds, hvis du får en subrutine, der læser en linie ad gangen og splitter den op i felter, så du selv kan gemme dem i din database? Den 4. linie er det så den, hvor feltnavnene er gemt?
Synes godt om
Slettet bruger
22. juli 2003 - 17:23#20
Prøv at kom med dit forslag så skal jeg se på det. og fortælle hvad der mangler.
Nu kommer to små procedurer skrevet i Visual Basic. Den første læser 4 linier fra en text fil. Den 4. linie splittes op i en tabel Fnavn(0), Fnavn(1),..... Nu har du dine feltnavne.
Den anden procedure springer de 4 første linier over og læser derefter linie ad gangen. Teksten i linien splittes op, og så er det meningen, du skal gemme i din database.
Dim Fnavn, N Function FeltNavne() Dim txt As String Dim i As Byte Open "D:\test.txt" For Input As #1 For i = 1 To 4 Line Input #1, txt Next FeltNavne = Split(txt, " ") Close #1 End Function
Sub HentData() Dim txt As String Dim i As Byte Dim N As Byte Open "D:\test.txt" For Input As #1 For i = 1 To 4 Line Input #1, txt Next While Not EOF(1) Line Input #1, txt A = Split(txt, " ") N = UBound(A) 'Nu har du dine data gemt i tabellen A 'Du skal nu se at gemme dem i din database 'A(0) i første felt, A(1) i andet felt... Wend Close #1 End Sub
For at hente feltnavnene skal du skrive Fnavn=Feltnavne N=Ubound(Fnavn) For at hente og gemme dine data skal du blot aktivere proceduren HentData
Det var jo meningen, du selv skulle sørge for at lave en databasetabel, som skal indeholde de mange felter som søjler.
Synes godt om
Slettet bruger
23. juli 2003 - 00:20#32
Jeg har ik ku får det til at virker men har lave et script selv ud fra din data
men der kommer en fejl jeg ik kan finde ud af..
min souces
Dim Fnavn, N
Function hent(dat, id) Dim datatt() As String If dat <> "" Then datatt = Split(dat, " ") hent = datatt(id) Else hent = "Err" End If End Function
Function datakontrol() Dim dat1 As String Open "D:\W3SVC1\ex030315.log" For Input As #1 For i = 1 To 3 Line Input #1, txt Print txt Next Line Input #1, Datatxt dat1 = Replace(Datatxt, "#Fields: ", "") 'Print hent(dat1, 2) While Not EOF(1) Lin = Lin + 1 Line Input #1, txt Print Lin Print "---" a = Split(txt, " ") For t = 0 To UBound(a) Print hent(dat1, t) & " : " & a(t) Next t Print " " Wend Close #1
End Function
Min data
#Software: Microsoft Internet Information Services 5.0 #Version: 1.0 #Date: 2003-03-15 06:00:04 #Fields: date time c-ip cs-username s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status cs(User-Agent) 2003-03-15 06:00:04 127.0.0.1 - 127.0.0.1 80 GET /iisstart.asp - 302 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0) 2003-03-15 06:00:04 127.0.0.1 - 127.0.0.1 80 GET /localstart.asp - 401 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0) 2003-03-15 06:00:04 127.0.0.1 WEBSERVER\Administrator 127.0.0.1 80 GET /localstart.asp - 200 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0) 2003-03-15 06:00:04 127.0.0.1 WEBSERVER\Administrator 127.0.0.1 80 GET /win2000.gif - 200 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0) 2003-03-15 06:00:04 127.0.0.1 - 127.0.0.1 80 GET /warning.gif - 200 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0) 2003-03-15 06:00:04 127.0.0.1 WEBSERVER\Administrator 127.0.0.1 80 GET /web.gif - 200 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0) 2003-03-15 06:00:04 127.0.0.1 - 127.0.0.1 80 GET /mmc.gif - 200 Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0)
Lige nu viser jeg det bare i en frm..
Synes godt om
Slettet bruger
23. juli 2003 - 03:20#33
æv fejl. har lige funde ud af at i den datafil er mere sjov at leje med en jeg trod.
det text jeg har i toppe kan den godt finde på at kom med igen.
Ok, men har du så ikke fået besvaret dit spørgsmål nu? Nu kan du faktisk læse dine data, men at behandle dem er jo en langt større og mere vanskelig sag.
Synes godt om
Slettet bruger
23. juli 2003 - 12:23#35
Ja, men jeg vil høre om du har lyst til at hjælpe mig. du kan godt får flere point. da jeg ved det er en lidt stor opgave. men jeg skal ha det produkt færdig. så jeg vil bliv glad hvis du gider at hjælpe mig..
Jo, det kan vi nok tale om. Men jeg synes vi skal afslutte dette spørgsmål, og så skal du formulere et nyt spørgsmål, der går på de næste problemer. Så kan du også håbe på at nogle flere vil blande sig og komme med gode ideer.
Synes godt om
Slettet bruger
23. juli 2003 - 18:59#37
Tja men jeg kan jo kun lukke det her hvis du lave et svar..
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.