January 20, 2003
Har skrivit om ett ASP-formulär så att det passar mina behov, ser ut som följer:
<%
If Request.Form.Count = 0 Then
%>
<html>
<title>ASP</title>
<body leftmargin=0 topmargin=0 marginwidth="0" marginheight="0">
<table align="center" width="50%" border="0">
</table>
<table align="center" width="50%" border="0">
<tr>
<td>
<form method="post" action="msgbox2.asp">
<font face="arial" size="2">Namn: </font><input type="text" name="namn">
<font face="arial" size="2">Position: </font><input type="text" name="position">
<font face="arial" size="2">e-Post:
</font><input type="text" name="epost">
<font face="arial" size="2">Kommentarer:
</font><textarea name="kommentarer" rows=5 cols=10></textarea>
<input type="submit" value="Send"></td>
</form>
</td>
</tr>
</table>
</body>
</html>
<%
Else
Dim strNamn
Dim strPosition
Dim strEpost
Dim strKommentarer
Dim strFile
Dim objFile
Dim objFSO
strFile = Server.MapPath("comments2.txt")
strNamn= Request.Form("namn")
strPosition= Request.Form("position")
strEpost= Request.Form("epost")
strKommentarer= Request.Form("kommentarer")
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFile, 8, True)
objFile.WriteLine " " & strNamn & " " & strPosition & " " & strEpost & " " & strKommentarer & " "
objFile.Close
Response.AddHeader "REFRESH", "0; URL=formular2.asp"
Set objFile = Nothing
Set objFSO = Nothing
End if
%>
Då får jag ju ut det inskrivna resultatet i textfilen "comments2.txt", men grejen är att det man skriver in inte justeras i rader, eftersom vissa svar är olika långa osv. Då skulle jag istället vilja få in datan i ett excelblad, eller accessdatabas. Så att en rad innehåller namn, en epost osv... hur ska jag skriva om skiten så att det matas in rad-vis i ett excel/access dokument istället?
November 14, 2003
ASP och en Accessdatabas fungerar smidigt ihop, här är lite exempel på hur du öppnar och läser/skriver till en databas.
Först måste du skapa en databas i Access ock skapa en tabell med kolumner du vill använda, tex namn, epost.
Det är bra att göra en kolumn till id(räknare), så att man inte får dubletter.
Öppna en koppling till databasen:
Dim conn, rs, sql
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("mindatabas.mdb") & ";"
Set rs = Server.CreateObject("ADODB.Recordset")
Sedan använder du SQL för att läsa/skriva från databasen.
För att läsa allt:
sql = "SELECT * FROM mintabell"
rs.Open sql,conn
Dim namn, epost
' den här kommer loopa igenom alla poster som finns i databasen så du kan skriva ut de på skärmen
If Not rs.EOF Then
namn = rs("Namn")
epost = rs("Epost")
End If
För att spara en ny post:
sql = "INSERT INTO mintabell (name, epost) VALUES ('" & strNamn & "','" & strEpost "')"
rs.Open sql,conn
Och till sist måste man stänga uppkopplingen till databasen:
rs.close
conn.close
Det kan vara lite krångligt att lägga till poster i databasen utan att få felmeddelanden, mappen där den ligger måste vara utdelad i nätverket och alla måste ha rättigheter att ändra på den, du måste även sätta skrivrättigheter på den mappen i IIS.
July 14, 2003
Om någon submittar en textmassa som sedan sparas som fil så sparas den ju precis som den skrevs in, dvs inga radbrytningar. Det är mao det verktyg du använder för att läsa .txt filen som avgör hur radbrytningarna blir (knäpp på Wordwrap i notepad för att få radbrytning automatiskt).
Om du menar att du vill ha radbrytningar mellan alla "förslag" (textmassor) så lägg in ett vbCrLf efter textmassan innan du sparar den. Exempelvis:
objFile.WriteLine " " & strNamn & " " & strPosition & " " & strEpost & " " & strKommentarer & vbCrLf & vbCrLf
..för att få 2 st radbrytningar mellan varje meddelande.
1 Guest(s)