plelkesMedlem sedan mars 2002823 inlägg Hej jag listar innehållet i en databas med koden
<%@LANGUAGE="VBSCRIPT" "%>
<HTML>
<HEAD>
<TITLE>Untitled Document</TITLE>
</HEAD>
<%
If Request.QueryString("type") = "" Then
intType = 1
Else
intType = CInt(Request.QueryString("type"))
End If
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\vatskebalans\db\vbalans.mdb")
strSQL = "SELECT tblFluids.FluidNamn, tblFluidTypes.TypeNamn, tblFluidTypes.TypeID, tblFluids.FluidID FROM " & _
"tblFluidRelat, tblFluids, tblFluidTypes WHERE tblFluidRelat.FluidID = tblFluids.FluidID AND" & _
" tblFluidRelat.typeID = tblFluidTypes.typeID AND tblFluidTypes.TypeID = " & intType & " ORDER by tblFluidTypes.typeID"
Set objRS = objConn.Execute(strSQL)
If NOT objRS.EOF Then
%>
<table width="800" border="1">
<tr>
<td> </td>
<td colspan="3"><%
Response.Write objRS("TypeNamn")
objRS.Close
%>
</td>
</tr>
<tr>
<td><%
intLast = objConn.Execute("SELECT Max(TypeID) FROM tblFluidTypes")(0)
For i = 1 To intLast
Set objRS = objConn.Execute("SELECT TypeNamn FROM tblFluidTypes WHERE TypeID = " & i)
If NOT i = intType Then
Response.Write("<a href=""?type=" & i & """>" & objRS("TypeNamn") & "</a><BR> ")
objRS.Close
End If
Next
%>
</td>
<td><% strSQL = "SELECT f.FluidNamn, ft.TypeNamn, ft.TypeID, f.FluidID FROM tblFluidRelat fr, tblFluids f, tblFluidTypes ft WHERE fr.FluidID = f.FluidID AND fr.typeID = ft.typeID AND ft.TypeID = " & intType & " ORDER by ft.typeID"
Set objRS = objConn.Execute(strSQL)
%>
<table width="400" border="1">
<form name="fylla" method="post" action="uppdatera.asp">
<%
Do While Not objRS.EOF
Response.Write "<TR><TD><INPUT NAME=""leggatill"" TYPE=""checkbox"" VALUE="""& objRS("FluidID") &"""></TD>"
Response.Write "<TD>" & objRS("FluidNamn") & "</TD>"
Response.Write "<TD><INPUT NAME=""volym"" TYPE=""text""></TD></TR>"
objRS.MoveNext
Loop
End If
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
</form></table>
<input type="submit" value="Lägg till Vätskebalansen">
</BODY>
</HTML>
Själva uppdateringssidan (uppdatera.asp)
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\vatskebalans\db\vbalans.mdb")
sort = Request.Form("FluidID")
mgd = Request.Form("volym")
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym) VALUES('" & now() & "','" & sort & "','" & mgd & "' )"
vbalans.Execute( strSQL )
Set gbok = Nothing
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
Response.Redirect "knapp_i1.asp"
%>
Men när jag trycker på knappen händer nada...
Det jag vill skall hända:
- på sidan knapp_i1.asp skall rutan kryssas i
- på sidan knapp_i1.asp skall txtrutan fyllas i
- tablelen tblVetskebalans skall fyllas i
- tillbaka till sidan knapp_i1.asp
- möjlighet att välja nästa vtske-sort
Jesper TMedlem sedan nov. 20017 144 inlägg Börja med att lägga submit-knappen inanför form-taggarna. ;)
plelkesMedlem sedan mars 2002823 inlägg
Börja med att lägga submit-knappen inanför form-taggarna.
Nu har jag gjort detta.
Men får fel
Microsoft JET Database Engine error '80040e07'
Data type mismatch in criteria expression.
/vatskebalans/uppdatera.asp, line 11
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\vatskebalans\db\vbalans.mdb")
sort = Request.Form("FluidID")
mgd = Request.Form("volym")
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym) VALUES('" & now() & "','" & sort & "','" & mgd & "' )"
[B]Set objRS = objConn.Execute(strSQL)[/B]
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
Response.Redirect "knapp_i1.asp"
%>
rad 11 är fet-markerad
Jesper TMedlem sedan nov. 20017 144 inlägg Vad har du för enheter/datatyper i databasen?
plelkesMedlem sedan mars 2002823 inlägg förstår inte riktigt frågan...
Skickar därför med databasen
Jesper TMedlem sedan nov. 20017 144 inlägg strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym) VALUES('" & now() & "'," & sort & "," & mgd & " )"
Jesper TMedlem sedan nov. 20017 144 inlägg Passa på och ändra även dessa:
sort = cInt(Request.Form("FluidID"))
mgd = cInt(Request.Form("volym"))
Jesper TMedlem sedan nov. 20017 144 inlägg Jag ser att dina fält har samma namn, jag föreslår att du skapar någon slags loop för du kommer ju absolut att få fel om du lägger in olika värden i de olika fälten.
@ndersMedlem sedan juni 200032 969 inlägg
Jesper T skrev:
Passa på och ändra även dessa:
sort = cInt(Request.Form("FluidID"))
mgd = cInt(Request.Form("volym"))
Det har en mindre betydelse, eftersom värdena ändå blir strängar när de läggs till SQL-frågan.
Har man syntaxfel i SQL-frågor finns det alltid två saker man kan göra:
- Se till att du inte använt något reserverat ord som tabell- eller fältnamn. Kontrollera på exempelvis http://aspfaq.com/show.asp?id=2080 .
- Skriv ut den färdiga SQL-frågan med response.write istället för att exekvera. Det är mycket lättare att felsöka då.
Mvh
plelkesMedlem sedan mars 2002823 inlägg
Se till att du inte använt något reserverat ord som tabell- eller fältnamn. Kontrollera...
Hittar inte att jag skulle ha använt reserverat namn
Skriv ut den färdiga SQL-frågan med response.write istället för att exekvera
Menar du
Response.Write strSQL
Jesper TMedlem sedan nov. 20017 144 inlägg Japp, med ett litet tillägg.
Response.Write strSQL
Response.end
@ndersMedlem sedan juni 200032 969 inlägg
plelkes skrev:
Hittar inte att jag skulle ha använt reserverat namn
Inte jag heller. Det var mest ett generellt tips, det händer alldeles för ofta att folk får massor med problem för att de använder reserverade ord som tabell- eller fältnamn.
plelkesMedlem sedan mars 2002823 inlägg
Skriv ut den färdiga SQL-frågan med response.write istället för att exekvera
Menar ni att sidan bör se ut:
<%@LANGUAGE="VBSCRIPT" "%>
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\vatskebalans\db\vbalans.mdb")
sort = cInt(Request.Form("FluidID"))
mgd = Request.Form("volym")
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym) VALUES('" & now() & "'," & sort & "," & mgd & " ')"
Response.Write strSQL
Response.end
objConn.Close
Set objConn = Nothing
Response.Redirect "knapp_i1.asp"
%>
Om jag kryssar i och fyller i 222
så blir resultatet:
INSERT INTO tblVetskebalans(Dag, FluidID, Volym) VALUES('11/17/2003 1:53:22 PM',0,222, , , ')
FluidID blir ju fel...
plelkesMedlem sedan mars 2002823 inlägg Försökt ändra i uppdateringssidan:
<%
Set vatskeb = Server.CreateObject( "Adodb.Connection" )
vatskeb.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vatskeb.ConnectionString = "Data Source='" & MdbFilePath & "'"
vatskeb.open
sort = cInt(Request.Form("FluidID"))
mgd = Request.Form("volym")
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym) VALUES('" & now() & "','" & sort & "','" & mgd & "')"
vatskeb.Execute( strSQL )
Set vatskeb = Nothing
Response.Redirect "knapp_i1.asp"
%>
Får dock
Syntax error in INSERT INTO statement.
plelkesMedlem sedan mars 2002823 inlägg fel på kodningen av kryssruta?
Skriv ut den färdiga SQL-frågan med response.write istället för att exekvera
Nu ser jag, förutom att jag måste ändra i strSQL, även att FluidID hela tiden blir det samma och fel, nämligen 0....
Prova gärna själv :l
Kan det vara fel i kodningen av kryssrutan??
<table width="400" border="1">
<form name="fylla" method="post" action="uppdatera1.asp">
<%
Do While Not objRS.EOF
Response.Write "<TR><TD><INPUT NAME=""leggatill"" TYPE=""checkbox"" VALUE="""& objRS("FluidID") &"""></TD>"
Response.Write "<TD>" & objRS("FluidNamn") & "</TD>"
Response.Write "<TD><INPUT NAME=""volym"" TYPE=""text""></TD></TR>"
objRS.MoveNext
Loop
End If
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%><input type="submit" value="Lägg till Vätskebalansen">
</form></table>
@ndersMedlem sedan juni 200032 969 inlägg Dina checkboxar heter leggatill, men du anger namnet FluidID när du ska hämta värdena med request.
Men, jag förstår inte riktigt hur dina requests kan fungera överhuvudtaget, då du har flera värden som tillhör varje fältnamn i formuläret, eftersom fälten finns flera gånger. Hur vet asp-koden vilket av värdena som kommer som den skall använda? Det är även anledningen till alla extra kommatecken du noterar på slutet av din SQL-fråga.
När det gäller uppdatering / insättning av flera olika poster samtidigt, tycker jag nog att det är bäst att alla formulärfält har olika namn, så man kan avgöra vilka värden som hör till samma post. Jag brukar låta alla fält sluta på något lämpligt räknarvärde.
Jag ska se om jag kan få ihop ett fungerande exempel.
Mvh
@ndersMedlem sedan juni 200032 969 inlägg När du loopar ut formuläret:
Do While Not objRS.EOF
Response.Write "<TR><TD><INPUT NAME=""leggatill" & objRS("FluidID") & """ TYPE=""checkbox"" VALUE="""& objRS("FluidID") &"""></TD>"
Response.Write "<TD>" & objRS("FluidNamn") & "</TD>"
Response.Write "<TD><INPUT NAME=""volym" & objRS("FluidID") & """ TYPE=""text""></TD></TR>"
objRS.MoveNext
Loop
När du ska göra insert:
Set vatskeb = Server.CreateObject( "Adodb.Connection" )
vatskeb.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vatskeb.ConnectionString = "Data Source='" & MdbFilePath & "'"
vatskeb.open
For each formObj in Request.Form
If left(Request.Form(formObj),9) = "leggatill" Then
lngFluidID = Replace(Request.Form(formObj), "leggatill", "")
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym) VALUES('" & now() & "','" & lngFluidID & "','" & Request.Form("volym" & lngFluidID) & "')"
vatskeb.Execute strSQL, , 128
End if
Next
vatskeb.close
Set vatskeb = Nothing
Response.Redirect "knapp_i1.asp"
Något sådant hade jag försökt mig på i alla fall.
Mvh
plelkesMedlem sedan mars 2002823 inlägg Tack @nders för ditt hjälp :bire
MEN
-
varför lägger du till objRS("FluidID") i INPUT NAME?
-
vad betyder
If left(Request.Form(formObj),9) = "leggatill"
på svenska?
-
i
lngFluidID = Replace(Request.Form(formObj), "leggatill", "")
ersätter du leggatill med tomrum. Rätt? Vad är tanken bakom detta?
-
vad betyder 128?
plelkesMedlem sedan mars 2002823 inlägg tyvärr så fungerar ej koden jag fick av @nders, eller så fattar jag fel :x
Det som inte funkar är att det skrivs inget till databasen
prova gärna själv
knapp_i3.asp
<%
If Request.QueryString("type") = "" Then
intType = 1
Else
intType = CInt(Request.QueryString("type"))
End If
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\vatskebalans\db\vbalans.mdb")
strSQL = "SELECT tblFluids.FluidNamn, tblFluidTypes.TypeNamn, tblFluidTypes.TypeID, tblFluids.FluidID FROM " & _
"tblFluidRelat, tblFluids, tblFluidTypes WHERE tblFluidRelat.FluidID = tblFluids.FluidID AND" & _
" tblFluidRelat.typeID = tblFluidTypes.typeID AND tblFluidTypes.TypeID = " & intType & " ORDER by tblFluidTypes.typeID"
Set objRS = objConn.Execute(strSQL)
If NOT objRS.EOF Then
%>
<table width="800" border="1">
<tr>
<td> </td>
<td colspan="3"><%
Response.Write objRS("TypeNamn")
objRS.Close
%>
</td>
</tr>
<tr>
<td><%
intLast = objConn.Execute("SELECT Max(TypeID) FROM tblFluidTypes")(0)
For i = 1 To intLast
Set objRS = objConn.Execute("SELECT TypeNamn FROM tblFluidTypes WHERE TypeID = " & i)
If NOT i = intType Then
Response.Write("<a href=""?type=" & i & """>" & objRS("TypeNamn") & "</a><BR> ")
objRS.Close
End If
Next
%>
</td>
<td><% strSQL = "SELECT f.FluidNamn, ft.TypeNamn, ft.TypeID, f.FluidID FROM tblFluidRelat fr, tblFluids f, tblFluidTypes ft WHERE fr.FluidID = f.FluidID AND fr.typeID = ft.typeID AND ft.TypeID = " & intType & " ORDER by ft.typeID"
Set objRS = objConn.Execute(strSQL)
%>
<table width="400" border="1">
<form name="fylla" method="post" action="uppdatera2.asp">
<%
Do While Not objRS.EOF
Response.Write "<TR><TD><INPUT NAME=""leggatill" & objRS("FluidID") & """ TYPE=""checkbox"" VALUE="""& objRS("FluidID") &"""></TD>"
Response.Write "<TD>" & objRS("FluidNamn") & "</TD>"
Response.Write "<TD><INPUT NAME=""volym" & objRS("FluidID") & """ TYPE=""text""></TD></TR>"
objRS.MoveNext
Loop
End If
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%><input type="submit" value="Lägg till Vätskebalansen">
</form></table>
<br><br>
<br>
<a href="http://www12.brinkster.com/vatskebalans/tblvetskebalans.asp">Lista tblVätskebalans innehåll</a>
uppdatera2.asp
<%
Set vatskeb = Server.CreateObject( "Adodb.Connection" )
vatskeb.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vatskeb.ConnectionString = "Data Source='" & MdbFilePath & "'"
vatskeb.open
For each formObj in Request.Form
If left(Request.Form(formObj),9) = "leggatill" Then
lngFluidID = Replace(Request.Form(formObj), "leggatill", "")
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym) VALUES('" & now() & "','" & lngFluidID & "','" & Request.Form("volym" & lngFluidID) & "')"
vatskeb.Execute strSQL, , 128
End if
Next
vatskeb.close
Set vatskeb = Nothing
Response.Redirect "knapp_i3.asp"
%>