Avatar billede andreas_og_far Praktikant
31. oktober 2004 - 00:36 Der er 21 kommentarer og
1 løsning

Nogen der vil hjælpe med script til at opdatere DB/tabel i .mdb

Goddag - Godaften

Jeg har en Access database med data i, som jeg gerne vil kunne opdatere online.
Jeg er lidt rusten til det her ASP, men har dog ved hjælp af diverse hjælpesider (html.dk med mere...) fået lidt mere styr på det....

Nu skal jeg bare være færdig, så derfor vil jeg høre, om der skulle være en venlig sjæl der vil hjælpe mig med det ? (læs: lave de vigtige kodestumper...)

Min Access database ser således ud:
Navn: shop.mdb
Tabel: products
Felter: ID, Name, Description, Price

DB bruges på en ASP side til at vise forskellige priser for nogle forskellige lejligheder.
Præcis 24 lejligheder med deres unikke navn angivet under Name & Description.

Når jeg tidligere skulle opdatere priser, gik jeg ind i DB og gjorde det manuelt, men nu har jeg brug for en løsning, så jeg kan gøre det via browseren, altså online.

Jeg vil helst ikke lave ændringer i selve DB.

Løsning:
Jeg forestiller mig en side med en tabel med 2 kolonner og 24 rækker. I denne tabel kan man så rette prisen ud for den rette æejlighed og derefter gemme - og så skulle DB være opdateret.

OK ?

Er der en venlig sjæl der vil hjælpe mig med det ??

På forhånd tusind tak og undskyld ulejligheden.

Med Venlig Hilsen  ;-)

Erik Nielsen
Avatar billede jpv Nybegynder
31. oktober 2004 - 01:17 #1
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=din stil til databasen shop.mdb"
Conn.Open DSN


strSQL = "Select * from products"

Set rs = Conn.Execute(strSQL)

Do While not rs.eof %>

<form action="redigerpriser.asp?id=<%=rs("id")%>" method="post">
<table>
<tr><td> <input type="text" name="name" value="<%=rs("name")%>"></td><td> <input type="text" name="price" value="<%=rs("price")%>"></td>
<td><input type="submit"  value="opdater"></td></tr>
</table></Form>
<%
rs.MoveNext
Loop
conn.Close
Set conn = Nothing
%>

PÅ side redigerpriser.asp
<%
Dim id, price, name

id =Trim(Replace(Request("id"),"'",""))
price=Trim(Replace(Request("price"),"'",""))
name =Trim(Replace(Request("name"),"'",""))
l
set rs = Server.CreateObject("ADODB.Connection")
str = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=din sti til shop.mdb ""
rs.open str


sql = "Update products  set name='" & name & "', price='" & price & "'  WHERE id = '" & id & "'"

  set rs = rs.execute(sql)





Set conn = Nothing
  Set rs = nothing

response.redirect "til det du kaldte den første side.asp"
%>
Avatar billede andreas_og_far Praktikant
31. oktober 2004 - 10:47 #2
Tak - Det ser rigtig ud !! men jeg får FEJL !!!

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
/ret-shop-priser/redigerpriser.asp, line 16

Mine filer ser således ud:

RETPRISER.ASP
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ="&Request.ServerVariables("APPL_PHYSICAL_PATH")&"" &_
"shop.mdb; password=shop"

Conn.Open DSN

strSQL = "Select * from products"

Set rs = Conn.Execute(strSQL)

Do While not rs.eof %>

<form action="redigerpriser.asp?id=<%=rs("id")%>" method="post">
<table>
<tr><td> <input type="text" name="name" value="<%=rs("name")%>"></td><td> <input type="text" name="price" value="<%=rs("price")%>"></td>
<td><input type="submit"  value="opdater"></td></tr>
</table></Form>
<%
rs.MoveNext
Loop
conn.Close
Set conn = Nothing
%>

og REDIGERPRISER.ASP

<%
Dim id, price, name
id =Trim(Replace(Request("id"),"'",""))
price=Trim(Replace(Request("price"),"'",""))
name =Trim(Replace(Request("name"),"'",""))

set rs = Server.CreateObject("ADODB.Connection")
str = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Request.ServerVariables("APPL_PHYSICAL_PATH")&"" &_
"shop.mdb; password=shop"

rs.open str

sql = "Update products set name='" & name & "', price='" & price & "' WHERE id = '" & id & "'"

set rs = rs.execute(sql)

Set conn = Nothing
  Set rs = nothing

response.redirect "retpriser.asp"
%>

HJÆLP - Hvor pokker er fejlen ???
Avatar billede andreas_og_far Praktikant
31. oktober 2004 - 11:11 #3
Hej
Nu har jeg prøvet alle mulige rettelser, men jeg kan simpelthen ikke lokalisere fejlen........

Hvor pokker er fejlen ??? TAK
Avatar billede jpv Nybegynder
31. oktober 2004 - 12:55 #4
Hvad er linje 16
Avatar billede andreas_og_far Praktikant
31. oktober 2004 - 12:59 #5
Linie 15: sql = "Update products set name='" & name & "', price='" & price & "' WHERE id = '" & id & "'"
Linie 16:
Linie 17: set rs = rs.execute(sql)

Så den er tom ??? Det forstår jeg ikke ......
Siger fejlmeddelsen dig ikke noget ???
Avatar billede jpv Nybegynder
31. oktober 2004 - 13:05 #6
kunne måske være at id er et reseveret ord i access
prøv at skrive
Linie 15: sql = "Update products set name='" & name & "', price='" & price & "' WHERE [id] = '" & id & "'"
Avatar billede andreas_og_far Praktikant
31. oktober 2004 - 13:09 #7
Mange tak - MEN DESVÆRRE

Stadig denne fejlmeddelse:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
/ret-shop-priser/redigerpriser.asp, line 16

Tak for hjælpen, men hvad pokker er der galt ???
Håber du kan hjælpe - Tak ;-)
Avatar billede jpv Nybegynder
31. oktober 2004 - 13:11 #8
Jeg prøver lige at lave en database magen til din, så skulle vi nok få det op at kører. Giv mig lie lidt tid,
Avatar billede jpv Nybegynder
31. oktober 2004 - 13:12 #9
Lige en forspørgelse
Hvad er tekst felter og tal felter og evt notatfelt i din DB
Avatar billede andreas_og_far Praktikant
31. oktober 2004 - 13:13 #10
Smukt.... Tusind tak.
Avatar billede andreas_og_far Praktikant
31. oktober 2004 - 13:22 #11
Det er dette her system.
http://www.scannet.dk/Kortbetaling/Kortbetaling.htm

Her er access filen også....
Avatar billede jpv Nybegynder
31. oktober 2004 - 13:25 #12
Vi prøver lig noget først
At skrive felter med stort for bogstav
Linie 15: sql = "Update products set Name='" & name & "', Price='" & price & "' WHERE [ID] = '" & id & "'"
Avatar billede andreas_og_far Praktikant
31. oktober 2004 - 13:28 #13
Nej, desværre. Ingen forskel overhovedet.

Øv...

Skal jeg også rette alle de andre til store forbogstaver ??
Avatar billede jpv Nybegynder
31. oktober 2004 - 13:32 #14
Kun feltnavnene som Name og Price og ID
Avatar billede andreas_og_far Praktikant
31. oktober 2004 - 13:41 #15
Øv, ingen forskel ovehovedet.
Avatar billede jpv Nybegynder
31. oktober 2004 - 14:25 #16
redigerpriser.asp
<%
Dim idnr, price, name
idnr =Trim(Replace(Request("id"),"'",""))
price=Trim(Replace(Request("price"),"'",""))
name =Trim(Replace(Request("name"),"'",""))
%>

<%
set rs = Server.CreateObject("ADODB.Connection")
str = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=din sti shop.mdb"

rs.open str



sql = "Update Products set [Name]='" & name & "', Price='" & price & "'  WHERE ID = " & idnr & ""

set rs = rs.execute(sql)

Set conn = Nothing
  Set rs = nothing

response.redirect "retpriser.asp"
%>
retpriser.asp
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=din sti shop.mdb"

Conn.Open DSN

strSQL = "Select * from products"

Set rs = Conn.Execute(strSQL)

Do While not rs.eof %>

<form action="redigerpriser.asp" method="post">
<table>
<tr><td> <input type="text" name="name" value="<%=rs("name")%>"></td><td> <input type="text" name="price" value="<%=rs("price")%>"></td>
<td>
<input type="hidden" name="id" value="<%=rs("id")%>">
<input type="submit"  value="opdater"></td></tr>
</table></Form>
<%
rs.MoveNext
Loop
conn.Close
Set conn = Nothing
%>
Avatar billede andreas_og_far Praktikant
31. oktober 2004 - 14:38 #17
OK - Vent
Avatar billede andreas_og_far Praktikant
31. oktober 2004 - 23:04 #18
Det er PERFEKT !!!

Kort optimeringsspørgsmål -> Kan man ikke bare få én "Opdater" knap i bunden, i stedet for én på hver linie ?? ..og hvordan får jeg lige den ind ??

Mange tak for hjælpen - Det var super og alle point'ne værd ;-)

PS: By the way - Hvad var egentlig årsag til fejlen i dit første svar ???
Avatar billede jpv Nybegynder
31. oktober 2004 - 23:29 #19
Det var de reseveret ord i Access ID er reseveret defor lavede jeg det om til idnr
id variablen overførte jeg i en hidden input i stedetfor i form linket.
Hvis du kun vil lave en opdater knap, kan jeg kun se en mulighed for det. og det er at du skal lave et nyt design på databasen. så hvert felt bliver unik med det tilsvarende unikke input felt navn. Hvis der er en anden mulighed kender jeg den ikke. Den løsning er nok den mest fleksible du kan få. fordi du ikke er hængt op på et fast antal poster.
Hvad gør du når du får brug for en ekstra post til en ny lejlighed, har du koder til at kunne oprette en ny? og slette en gammel.
Avatar billede andreas_og_far Praktikant
01. november 2004 - 12:34 #20
Det gør ikke noget, at der ikke kun er en "Opdater" knap. Jeg nøjes med den nuværende.

En ny post ?? Næ, der har jeg ikke koder til. Jeg plejer at gå ind og gøre det manuelt i Access databasen.....
Er det da nemt at tilføje den nuværende løsning ???


JPV ! - Tusind tak for din hjælp - Der var absolut perfekt. Det er jeg meget glad for.
Avatar billede jpv Nybegynder
01. november 2004 - 13:45 #21
Tak for points
Ja du kan sagtes bygge videre på det du har.
Lige et spørgsmål er betalings løsningen hos scannet let at bruge
Avatar billede andreas_og_far Praktikant
01. november 2004 - 14:04 #22
Ja, helt klart. Det syntes jeg, med min "ringe" viden....

Endvidere er ScanNet ret stabile - Men selvfølgelig også ret dyre..........

Smag og behag.......
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