31. august 2003 - 13:03Der er
23 kommentarer og 1 løsning
Databaseagtigt indhold i texfil!
Skrive til en textfil: <% Set fso = CreateObject("Scripting.FileSystemObject") filespec = Server.Mappath("../min_db_mappe/mintextfil.txt" Set f = fso.OpenTextFile(filespec,2) f.WriteLine Request("minvariabel") f.Close %> Læse fra en textfil: <% Set fso = Server.CreateObject("Scripting.FileSystemObject") filespec = Server.Mappath("../min_db_mappe/mintextfil.txt" Set f = fso.OpenTextFile(filespec,1) Response.write f.ReadLine f.Close %> Mere kan jeg ikke hvad ASP og textfiler angår!
Jeg har fået brug for følgende: 1. At gemme textvariabler parvis i ulige og lige linier linie1: navn1 linie2: data1 linie3: navn2 linie4: data2 etc. 2. Tjekke om navn allerede findes og i så fald slette denne og den efterfølgende linie! 3. Hente en liste over navnene 4. Hente data udfra et bestemt navn
Dette kan nemt gøres i en accessdatabase, men en eller anden fortalte mig engang at alt der kan lade sig gøre i access også kan gøres i textfiler - spørgsmålet er hvordan?
Der bliver investeret massivt i AI. Teknologien er mere tilgængelig end nogensinde, og ambitionerne er høje. Alligevel oplever mange virksomheder, at resultaterne udebliver.
Hvorfor vil du? Det er ikke nogen videre god løsning. Access har trods alt den fordel, at den kan klare et antal samtidige brugere. Du får bare en masse bøvl
Ja hvorfor nu det - jo jeg har på fornemmelsen at data gemt i accessdatabasen fylder væsenligt mere end data i en textfil og desuden er access relativt langsom og ressourcekrævende for serveren! Det jeg vil lave er ikke at lave et brugersystem, men en slags fildatasystem, hvor brugeren skal have lov til at gemme bestemte data(een variabel) under et bestemt navn - dette fildatasystem, har jeg brug for i flere forskellige sammenhænge - og derfor kan det blive pladskrævende med accessdatabaser på sigt! Men det kan da godt være jeg må opgive mit forehavende - troede bare det var muligt - lige som det er muligt at lave et nyhedssystem i en textfil
Jeg tror text-databasen er relativt langsomere end Access når man laver DELETE eller UPDATE's da text-dasen skal bruger FSO i et eller andent omfang.
Det kan da godt lade sig gøre at styre det med FSO, det kræver bare en masse kode at håndter filen og forskellig operationer eksemplevis Slette og Opdater en linje midt i filen (som ikke er direkte muligt med FSO). Til forskel er det en SQL sætning mod en database.
Du kan lave en tabel som indeholder navne og data
tabel: tabelnavn id : autonummer navn : tekst data1 : tekst eller notal alt efter hvor mange data man kan smide i.
2. Tjekke om navn allerede findes og i så fald slette denne og den efterfølgende linie!
navn = "Hans" SQL = "SELECT * FROM tabelnavn WHERE navn = '" & navn & "'" Set rs = Connection.Execute(SQL) if rs.EOF then 'Bruger navnet findes IKKE. else 'Bruger navnet findes. end if
3. Hente en liste over navnene
SQL = "SELECT navn FROM tabelnavn" Set rs = Connection.Execute(SQL) strNavne = rs.GetString(,-1,," ,") if strNavne <> "" then strNavne = Left(strNavne,len(strNavne)-2)
Response.Write "Her en komma liste med navne : " & strNavne
4. Hente data udfra et bestemt navn
SQL = "SELET * FROM tabelnavn WHERE navn = '" & navn & "'" Set rs = Connection.Execute(SQL) if not rs.EOF then Response.Write rs("data") end if
Ok og koden til forbindelse til databasen har jeg på plads nu mangler jeg bare: 1. Hente fuldstændig liste over elementer i 'navn' 2. Hente data udfra opgivet 'navn' 3. Gemme 'navn' og 'data' i ny post(eller overskrive hvis 'navn' er enslydende) Hvis du gider hjælpe mig med det ville jeg være ovenud lykkelig!
Ok den 2 jeg har vist sletter ikke noget endnu. Faktisk kan man bare slette selv navnet ikke findes i tabellen det giver ikke en fejl.:
2. Tjekke om navn allerede findes og i så fald slette denne og den efterfølgende linie!
navn = "Hans" SQL = "DELETE FROM tabelnavn WHERE navn '" & navn & "'" Connection.Execte(SQL)
Den nye 3. Gemme 'navn' og 'data' i ny post(eller overskrive hvis 'navn' er enslydende)
strData = "Hej med dig min data er her" navn = "Hans" SQL = "SELECT * FROM tabelnavn WHERE navn = '" & navn & "'" Set rs = Connection.Execute(SQL) if rs.EOF then 'Bruger navnet findes IKKE, indsæt SQL = "INSERT INTO tabelnavn (navn, data) VALUES ('" & navn & "', '" & strData & "')" else 'Bruger navnet findes, opdater SQL = "UPDATE tabelnavn SET data = '" & strData & "' WHERE navn = '" & navn & "'" end if Connection.Execute(SQL)
3. hente liste <% strDSN = "Data source=vejentilmindatabase.mdb;provider=Microsoft.jet.oledb.4.0;" Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open strDSN
strSQL = "SELECT navn FROM mintabel" Set rs = Connection.Execute(SQL) strNavne = rs.GetString(,-1,," ,") if strNavne <> "" then strNavne = Left(strNavne,len(strNavne)-2) Response.Write "Her en komma liste med navne : " & strNavne
4. Hente data udfra navn: <% strDSN = "Data source=vejentilmindatabase.mdb;provider=Microsoft.jet.oledb.4.0;"
Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open strDSN
strSQL = "SELET * FROM mintabel WHERE navn = '" & Request("navn") & "'" Set rs = myConn.Execute(strSQL) if not rs.EOF then Response.Write rs("data1") end if
myConn.Close Set myConn = Nothing %> intern fejl igen - kan du også greje den?
Problemer med den sidste også :( <% strDSN = "Data source=vejentilmindatabase.mdb;provider=Microsoft.jet.oledb.4.0;"
Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open strDSN
strSQL = "SELECT * FROM mintabel WHERE navn = '" & Request("navn") & "'" Set rs = myConn.Execute(strSQL) if rs.EOF then strSQL = "INSERT INTO tabelnavn(navn, data1) VALUES ('" & Request("navn") & "', '" & Request("data1") & "')" else strSQL = "UPDATE tabelnavn SET data = '" & Request("data1") & "' WHERE navn = '" & Request("navn") & "'" end if myConn.Execute(strSQL)
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.