Avatar billede pcdl Nybegynder
28. februar 2008 - 12:36 Der er 16 kommentarer og
1 løsning

SQL insert hjælp

hej har en microsoft access database og jeg vil gerne have en funktion som insætter noget i den database har lavet følgende

if ProductName = sokker then
SQL = "INSERT INTO Orders (CustomerID, OrderDate, PaymentAmount, ProductName) VALUES (CustomerID, OrderDate, PaymentAmount, ProductName);"
Execute( SQL )
end if

men den insætter ikke noget i databasen nogen som ved hvad jeg gør galt ??
Avatar billede fennec Nybegynder
28. februar 2008 - 12:53 #1
Mangler du ikke dit connection objekt? Det er den som skal eksikvere. Desuden skal du have nogle værdier i sætningen:

SQL = "INSERT INTO Orders (CustomerID, OrderDate, PaymentAmount, ProductName) VALUES (1, '20080228', 123.25, 'Test produkt');"
conn.execute( SQL )
Avatar billede pcdl Nybegynder
28. februar 2008 - 13:16 #2
har det sårn her

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("dbs/db1.mdb")

SQL = "INSERT INTO Orders (CustomerID, OrderDate, PaymentAmount, ProductName) VALUES (1, '20080228', 123.25, 'Test produkt');"
Conn.Execute (SQL)

men det virker ikke helt'

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/jimmy/bestillinger.asp, line 42
Avatar billede fennec Nybegynder
28. februar 2008 - 13:49 #3
Hvilken datatype er de forskellige felter i databasen (CustomerID, OrderDate, PaymentAmount, ProductName)? nvarchar, int, datetime...??
Avatar billede kimiwan Nybegynder
28. februar 2008 - 13:52 #4
har du prøvet at køre sql'en i access' query designer? - det er som regel en god ide at få det til at virke der først, fordi du så får en bedre feedback.

husk der skal # på hver side af datoer og ' på hver side af tekststrenge.

/Kim
Avatar billede pcdl Nybegynder
28. februar 2008 - 13:53 #5
ok det er ikke insert funktionen der ike virker :) det er det her der er noget galt med

strSQL = "SELECT * FROM Orders"
Set rs = Conn.Execute (strSQL)

OrderID = Rs("OrderID")
CustomerID = Rs("CustomerID")
OrderDate = Rs("OrderDate")
PaymentAmount = Rs("PaymentAmount")
ProductName = Rs("ProductName")

response.write("<table align='center' border='1' width='500'>")
response.write("<tr>")
response.write("<th>" & "Ordre id" & "</th>")
response.write("<th>" & "Kunde nr" & "</th>")
response.write("<th>" & "Ordre dato" & "</th>")
response.write("<th>" & "Beløb kr" & "</th>")
response.write("<th>" & "Produkt" & "</th>")
response.write("</tr>")
response.write("<tr align='center'>")
response.write("<td>" & OrderID & "</td>")
response.write("<td>" & CustomerID & "</td>")
response.write("<td>" & OrderDate & "</td>")
response.write("<td>" & PaymentAmount & "</td>")
response.write("<td>" & ProductName & "</td>")
response.write("</tr>")
response.write("</table>")
Avatar billede kimiwan Nybegynder
28. februar 2008 - 13:57 #6
prøv med denne connectionstring i stedet..

Conn.Open Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("dbs/db1.mdb")
Avatar billede pcdl Nybegynder
28. februar 2008 - 14:00 #7
problemet det var åbenbart den ikke hentede alt ud af databasen fordi da jeg kiggede i databasen var der blevet oprettet en masse men den gider kun vise den første
Avatar billede kimiwan Nybegynder
28. februar 2008 - 14:07 #8
du kan bruge et do-while loop til at loope igennem alle records, så det ikke kun er den første, der vises.  husk rs.movenext før loop, da det er den, der skubber videre til næste record.  (hvis du glemmer den, så har du en uendelig løkke).

strSQL = "SELECT * FROM Orders"
Set rs = Conn.Execute (strSQL)

do while not rs.eof

OrderID = Rs("OrderID")
CustomerID = Rs("CustomerID")
OrderDate = Rs("OrderDate")
PaymentAmount = Rs("PaymentAmount")
ProductName = Rs("ProductName")

response.write("<table align='center' border='1' width='500'>")
response.write("<tr>")
response.write("<th>" & "Ordre id" & "</th>")
response.write("<th>" & "Kunde nr" & "</th>")
response.write("<th>" & "Ordre dato" & "</th>")
response.write("<th>" & "Beløb kr" & "</th>")
response.write("<th>" & "Produkt" & "</th>")
response.write("</tr>")
response.write("<tr align='center'>")
response.write("<td>" & OrderID & "</td>")
response.write("<td>" & CustomerID & "</td>")
response.write("<td>" & OrderDate & "</td>")
response.write("<td>" & PaymentAmount & "</td>")
response.write("<td>" & ProductName & "</td>")
response.write("</tr>")
response.write("</table>")

rs.movenext
loop
Avatar billede fennec Nybegynder
28. februar 2008 - 14:08 #9
Nok nærmere sådan:

strSQL = "SELECT * FROM Orders"
Set rs = Conn.Execute (strSQL)
esponse.write("<table align='center' border='1' width='500'>")
response.write("<tr>")
response.write("<th>" & "Ordre id" & "</th>")
response.write("<th>" & "Kunde nr" & "</th>")
response.write("<th>" & "Ordre dato" & "</th>")
response.write("<th>" & "Beløb kr" & "</th>")
response.write("<th>" & "Produkt" & "</th>")
response.write("</tr>")
while not rs.eof
  response.write("<tr align='center'>")
  response.write("<td>" & Rs("OrderID") & "</td>")
  response.write("<td>" & Rs("CustomerID") & "</td>")
  response.write("<td>" & Rs("OrderDate") & "</td>")
  response.write("<td>" & Rs("PaymentAmount") & "</td>")
  response.write("<td>" & Rs("ProductName") & "</td>")
  response.write("</tr>")
  rs.MoveNext
wend
response.write("</table>")
Avatar billede kimiwan Nybegynder
28. februar 2008 - 14:09 #10
hov, jeg var lidt for hurtig der... prøv denne i stedet :)

strSQL = "SELECT * FROM Orders"
Set rs = Conn.Execute (strSQL)

response.write("<table align='center' border='1' width='500'>")
response.write("<tr>")
response.write("<th>" & "Ordre id" & "</th>")
response.write("<th>" & "Kunde nr" & "</th>")
response.write("<th>" & "Ordre dato" & "</th>")
response.write("<th>" & "Beløb kr" & "</th>")
response.write("<th>" & "Produkt" & "</th>")
response.write("</tr>")

do while not rs.eof

OrderID = Rs("OrderID")
CustomerID = Rs("CustomerID")
OrderDate = Rs("OrderDate")
PaymentAmount = Rs("PaymentAmount")
ProductName = Rs("ProductName")

response.write("<tr align='center'>")
response.write("<td>" & OrderID & "</td>")
response.write("<td>" & CustomerID & "</td>")
response.write("<td>" & OrderDate & "</td>")
response.write("<td>" & PaymentAmount & "</td>")
response.write("<td>" & ProductName & "</td>")
response.write("</tr>")

rs.movenext
loop

response.write("</table>")
Avatar billede pcdl Nybegynder
28. februar 2008 - 14:33 #11
ok 1000 tak tror jeg har forstået det nu
Avatar billede pcdl Nybegynder
28. februar 2008 - 14:36 #12
Nogen der kan hjælpe mig med den her

dim CustomerID, Orderdate, PaymentAmount, ProductName
CustomerID = 5
OrderDate = request.querystring("OrderDate")
PaymentAmount = request.querystring("PaymentAmount")
ProductName = request.querystring("ProductName")
conn.close

if request.querystring("tjeck") = "ja" then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("dbs/db1.mdb")
SQL = "INSERT INTO Orders (CustomerID, OrderDate, PaymentAmount, ProductName) VALUES (1, 20, 15, 'Test produkt');"
Conn.Execute (SQL)
end if

vil godt have så de der values de bliver til de der querystrings
Avatar billede fennec Nybegynder
28. februar 2008 - 15:04 #13
SQL = "INSERT INTO Orders (CustomerID, OrderDate, PaymentAmount, ProductName) VALUES ("& cLng(CustomerID) &", "& cLng(OrderDate) &", "& cLng(PaymentAmount) &", '"& replace(ProductName,"'","''") &"');"
Avatar billede pcdl Nybegynder
28. februar 2008 - 15:14 #14
1000 tak smid et svar hvis det er
Avatar billede fennec Nybegynder
28. februar 2008 - 15:18 #15
.o) <-- One Eyed Jack
Avatar billede kimiwan Nybegynder
28. februar 2008 - 15:41 #16
:)
Avatar billede fennec Nybegynder
28. februar 2008 - 16:32 #17
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester