Just nu i M3-nätverket
Gå till innehåll
::Lunkan::

Enkelt INSERT-script

Rekommendera Poster

Får inte detta att fungera...nån som har ett förslag?

 

 

<%

pris=Request.Form("pris")

 

'Response.Status = "204 No Content"

 

Set Connection = Server.CreateObject("ADODB.Connection")

DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "

DSNtemp=dsntemp & "DBQ=" & Server.MapPath ("databas/databas.mdb")

Connection.Open DSNtemp

SQLStmt = "INSERT INTO PRISER"

SQLStmt = SQLStmt & "(pris)"

SQLStmt = SQLStmt & "VALUES('" & pris & "')"

Connection.Execute(SQLStmt)

Connection.Close

%>

 

 

____________________________________________

Om något bara inte kan gå fel, så gör det det ändå. (Murphy's lagar)

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Har ändrat lite i scriptet med får fortfarande inte ordning på det:

 

 

 

<%

 

id=Request.Form("id")

pris=Request.Form("pris")

 

 

'Response.Status = "204 No Content"

 

Set Connection = Server.CreateObject("ADODB.Connection")

DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "

DSNtemp=dsntemp & "DBQ=" & Server.MapPath ("databas/databas.mdb")

Connection.Open DSNtemp

 

SQLStmt = "UPDATE Pris SET "

 

SQLStmt = SQLStmt & "Pris = '" & Pris & "', "

SQLStmt = SQLStmt & "Where Id = " & Id & " "

Connection.Execute(SQLStmt)

Connection.Close

Set Connection = Nothing

%>

 

 

 

 

 

Feltyp:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)

[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i UPDATE-uttryck.

/kalles/insertpriser.asp, line 18

 

 

Felmeddelnadet går bort när jag tar bort:

Connection.Execute(SQLStmt)

 

Men inget hamnar i databasen.

 

 

Tacksam för hjälp!

 

 

____________________________________________________

Om något bara inte kan gå fel, så gör det det ändå. (Murphy's lagar)

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Hej!

 

I din databas har du säkert satt "pris" som TAL, men du skickar "pris" som en textsträng.

 

Prova denna rad....

 

SQLStmt = SQLStmt & "Pris = '" & "'" & Pris & "'" & "', "

 

PS. Jag tror det ska se ut så, det var något år sedan jag höll på med detta. Jag orkar inte testa själv, ber om ursäkt om det inte skulle fungera :(

 

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Tack för att du tog dig tid!

Jag provade att ändra datatypen till tal i Access-databasen men det blir ingen skillnad konstigt nog.

 

"Kruxet" är att när jag tar bort

Connection.Execute(SQLStmt)

Så får jag inget felmeddelande men det känns som om jag då tar bort själva "verkställandet".

 

Kan man skrivet den raden på något annat sätt? Kanske är det öppnandet av databasen som är fel?

 

Din kod hjälpte inte heller tyvärr....

 

 

_________________________________________________________

Om något bara inte kan gå fel, så gör det det ändå. (Murphy's lagar)

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Problemet är att du lämnar ett "," där det inte ska vara något:

 

SQLStmt = SQLStmt & "Pris = '" & Pris & "', "

 

Varför det avslutande kommat här ? Om du däremot skulla uppdatera fler fält här så ska du ha komma och sedan fortsätta med nästa fält.

 

Med andra ord ta bort kommat, dessutom ser jag ingen anledning till att dela upp sql frågan på det sättet du gjort, det gör det ju bara svårare att se syntax fel, gör så här:

 

Connection.Execute( "update Pris set Pris='" & pris & "' where Id=" & Id )

 

Sedan ser frågan skum ut av massa andra anledningar men jag förutsätter att du vet hur din egen databas ser ut ;)

 

[inlägget ändrat 2002-04-01 01:48:01 av pblse]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Det känns som ditt inlägg tog mig lite närmare en lösning.

 

Har modifierat koden så att den ser ut så här:

 

 

 

<%

id=Request.Form("id")

pris=Request.Form("pris")

ordning=Request.Form("ordning")

 

'Response.Status = "204 No Content"

 

Set Connection = Server.CreateObject("ADODB.Connection")

DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "

DSNtemp=dsntemp & "DBQ=" & Server.MapPath ("databas/databas.mdb")

Connection.Open DSNtemp

 

'SQLStmt = SQLStmt & "Where Id = '" & Id & "' "

Connection.Execute("UPDATE priser SET pris = '" & pris & "'")

Connection.Close

'Set Connection = Nothing

%>

 

 

Felet jag får är:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)

[Microsoft][Drivrutin för ODBC Microsoft Access] Operationen måste använda en fråga som kan uppdateras.

/kalles/insertpriser.asp, line 14

 

Rad 14 är min Connection.Execute sats.

 

 

Måste jag skriva var i databasen den ska ändra (t ex vid vilket id? id är en räknare) eller?

 

 

Är ganska grön på det här så jag vore mycket tacksam för hjälp.

 

 

_______________________________________________________

Om något bara inte kan gå fel, så gör det det ändå. (Murphy's lag)

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Kolla filrättigheterna på access filen samt att den inte är skrivskyddad.

 

where satsen bör du använda för att välja ut vilket fält du vill uppdatera, annars kommer alla dina fält i databasen uppdateras.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Detta kanske fungerar:

 

 

 

<%

id=Request.Form("id")

pris=Request.Form("pris")

ordning=Request.Form("ordning")

 

'Response.Status = "204 No Content"

 

Set Connection = Server.CreateObject("ADODB.Connection")

DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "

DSNtemp=dsntemp & "DBQ=" & Server.MapPath ("databas/databas.mdb")

Connection.Open DSNtemp

 

'SQLStmt = SQLStmt & "Where Id = '" & Id & "' "

 

uppdatera = "UPDATE priser SET pris = '" & pris & "' where id='" & id &"'"

 

 

Connection.Execute(uppdatera)

 

Connection.Close

'Set Connection = Nothing

%>

 

 

..............................

 

"Live your dreams, don´t dream your life"

"Det man inte kan är bara att lära sig"

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

MB>>

Koden du skrev tror jag verkligen på, testade den men får felet "Typblandningsfel i villkorsuttryck." på raden "Connection.Execute(uppdatera)"

 

Är som sagt ganska grön på detta men typblandningsfel har väl med olika datatyper/variabler att göra?

 

 

_______________________________________________________

Om något bara inte kan gå fel, så gör det det ändå. (Murphy's lag)

 

[inlägget ändrat 2002-04-01 13:44:25 av ::Lunkan::]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

<%

 

 

 

 

Set Connection = Server.CreateObject("ADODB.Connection")

DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "

DSNtemp=dsntemp & "DBQ=" & Server.MapPath ("databas/databas.mdb")

Connection.Open DSNtemp

 

 

uppdatera = "UPDATE priser SET [pris]= '" & request.form("pris") & "' where id='" & request.form("id") &"'"

 

 

Connection.Execute(uppdatera)

 

Connection.Close

'Set Connection = Nothing

%>

 

 

 

..............................

 

"Live your dreams, don´t dream your life"

"Det man inte kan är bara att lära sig"

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Med risk för att verka tjatig - det fungerar fortfarande inte.

 

Provade ovanstående kod men det vill sig inte. Jag får fortfarande "Typblandningsfel i villkorsuttryck."

 

Vad mer kan jag prova för att få ordning på det?

 

Tack

 

 

_______________________________________________________

Om något bara inte kan gå fel, så gör det det ändå. (Murphy's lag)

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Så, skall vi ta och bena ut det här?

Jag har ett par frågor till dig först:

 

1. Skall du uppdatera befintliga eller lägga till nya poster i databasen? För i första inlägget använde du dig av "INSERT", och sen har ni gått över på "UPDATE".

 

3. I tabellen "Priser", vilket format har kolumnerna "Pris" och "ID"?

 

 

____Robbac_____________________________________

The Truth Is Out there

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Okej, så här är det.

 

Jag vill via ett formulär kunna ändra priser i en prisdatabas. Samtliga fält är av typen text och ID är en räknare.

 

Jag vill alltså uppdatera ett pris, ändra det från ett värde till ett annat.

 

Jag har som du ser av föregående inlägg provat en hel del men får det inte att funka.

Om du kommer på nåt jag kan prova så skriv hela koden och anta inte att jag kan fylla ut själv...har ej hållt på med ASP alltför länge=)

 

 

_______________________________________________________

Om något bara inte kan gå fel, så gör det det ändå. (Murphy's lag)

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Okay...

 

<%
Dim Connection, DNStemp
Set Connection = Server.CreateObject("ADODB.Connection")
DNStemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
DNStemp=DSNtemp& "DBQ=" & Server.MapPath ("databas/databas.mdb")
Connection.Open DNStemp

Dim Uppdatera
Uppdatera = "UPDATE priser SET pris= '" & Request.Form("pris") & "' WHERE ID=" & Request.Form("id")

Connection.Execute(Uppdatera)

Connection.Close
Set Connection = Nothing

%>

 

Koden är alltså i stort sett densamma som den innan. Den egentliga skillnaden är att de enkla citattecknerna är borta runt ID.

 

Koden ovan förutsätter att:

1. Att du har en databas som heter "databas.mdb" i katalogen "databas".

 

2. Att du har ett formulär som anropar den här sidan, och har ett formulär med "method" satt till "post". Om du inte "method" eller har "method=get"o ditt formulär, ändrar du koden ovan från:

Request.Form

till:

Request.Querystring

 

Får du det att fungera?

 

____Robbac_____________________________________

The Truth Is Out there

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Tack Robbac för att du tog dig tid!

Men det fungerar fortfarande inte!

 

Databasen ligger som den ska och jag kör med method="POST".

Jag får andra ASP-sidor att fungera vid hämtning av data.

 

Felmeddelandet som jag nu får är "Datakällan hittades inte och ingen standarddrivrutin är

 

angiven".

Enligt felmeddelandet är det i raden "Connection.Open DNStemp" som felet ligger.

 

Vet snart inte om jag ska skratta eller gråta=)

 

 

_______________________________________________________

Om något bara inte kan gå fel, så gör det det ändå. (Murphy's lag)

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Än så länge kan vi väl skratta åt det? ;)

 

Felet du beskriver beror på att det är något kopieringsfel... Kopiera in denna texten och ersätt den som ser "likadan" ut...

 

DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "

DSNtemp=dsntemp & "DBQ=" & Server.MapPath ("databas/databas.mdb")

Connection.Open DSNtemp

 

tror det är rad 4,5,6 och 7 i det jag skrev innan

 

 

____Robbac_____________________________________

The Truth Is Out there

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Visst kan vi skratta åt det - för nu fungerar det!

 

Ett stort tack för hjälpen!

 

Skriptet ska användas på en adminsida på denna sida:

 

http://www.kallesbilskola.se/ny

 

Ta gärna en titt, första sidan med Saaben är inte klar men färger o dyl är klart.

 

TACK!

 

 

_______________________________________________________

Om något bara inte kan gå fel, så gör det det ändå. (Murphy's lag)

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Härligt att det har löst sig för dig...

 

 

 

____Robbac_____________________________________

The Truth Is Out there

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...