Just nu i M3-nätverket
Jump to content

Uppdatera PM-fält


Herr Bill

Recommended Posts

Varför fungerar inte nedanstående kod om Presentation är ett PM-fält? Vad skall jag göra för att det skall fungera? Högst poäng till den som hjälper mig!

 

 

Set rsc = Server.CreateObject ("ADODB.Recordset")

Villkor = "SELECT Presentation From Foretagsregister2 WHERE ID=" & Request.Form("ID")

rsc.Open Villkor,Connect,adOpenDynamic,adLockOptimistic

 

rsc("Presentation") = request("Presentation")

 

rsc.Update

Connect.Close

Response.Redirect "main.asp"

Link to comment
Share on other sites

När jag kollar på det lite snabbt ser jag att du inte har avslutat en rad, eller?

 

Jag tänker på den andra raden där du borde avsluta med att lägga till &" "

 

D.v.s. det blir så här:

Set rsc = Server.CreateObject ("ADODB.Recordset")
Villkor = "SELECT Presentation From Foretagsregister2 WHERE ID=" & Request.Form("ID") &" "
rsc.Open Villkor,Connect,adOpenDynamic,adLockOptimistic

rsc("Presentation") = request("Presentation")

rsc.Update
Connect.Close
Response.Redirect "main.asp"

 

Om det ändå inte löser sig. Vad är det för felmeddelande du får?

[inlägget ändrat 2002-11-08 23:32:12 av Sasja]

[inlägget ändrat 2002-11-08 23:34:14 av Sasja]

Link to comment
Share on other sites

Jag brukar aldrig göra sådär, utan använder "update" istället.. men.. hmm.. vad är det hämtar presentationen från?

 

Borde det inte vara request.form("presentation") eller request.querystring("presentation")

 

Ciao,

Anders

 

Link to comment
Share on other sites

avsluta med att lägga till &" "

 

Va?

 

Den strängen är ju redan "avslutad", man behöver inte lägga på det där.

 

Jag ser MÅNGA som brukar lägga på & "" i slutet... varför vill man göra så? Jag tycker inte alls det känns logiskt.

 

Ciao,

Anders

 

Link to comment
Share on other sites

Fungarar lika bra med att skriva request som request.form eller request.querystring. Även om det inte är helt rätt att skriva endast request rent säkerthetsmässigt...

 

Tror det ligger till så iallafall.

 

Link to comment
Share on other sites

Själv tycker jag det är hur logiskt som helst. Har du skrivit ETT citationstecken måste du ju avsluta denna med ett TILL.

 

Men det kanske även fungerar i att inte göra så.

 

Har du provat det jag sa?

Annars... vad får du för felmeddelande?

 

[inlägget ändrat 2002-11-08 23:40:40 av Sasja]

Link to comment
Share on other sites

Själv tycker jag det är hur logiskt som helst. Har du skrivit ETT citationstecken måste du ju avsluta denna med ett TILL.

 

Ja...

 

Villkor = "SELECT Presentation From Foretagsregister2 WHERE ID="

 

Där har han skrivit ett citationstecken, och avslutat med ett till...

 

Sedan så vill du lägga till mer till strängen, och skriver &"", skriver ett citationstecken, och avslutar med ett... vilket lägger till ingenting.. (i ditt fall ville du iofs lägga till ett mellanslag :)

 

Ciao,

Anders

 

Link to comment
Share on other sites

Jo, jag förstår hur du tänker och jag respekterar det. =)

 

Däremot vill jag att du respekterar min metod, det är kvällens mål för mig. =)

Villkor = "SELECT Presentation From Foretagsregister2 WHERE ID="& Request.Form("ID") &" "

Förstår du nu hur jag tänker?

 

Jo... den sista är skitonödig nu när jag tänker efter. =)

 

Men fan... det känns som bättre att SQL-raden är ihopsatt typ... det är en barnsjukdom jag har i min kodning kanske =)

 

Tack för tipset annars !=)

[inlägget ändrat 2002-11-08 23:50:26 av Sasja]

Link to comment
Share on other sites

Mmm... kanske.. LITE logik.. någonstans i det.. visst respekterar jag det :)

 

Ciao,

Anders

"That you may retain your self-respect, it is better to displease the people by doing what you know is right, than to temporarily please them by doing what you know is wrong."

 

 

Link to comment
Share on other sites

Felmeddelandet jag får lyder:

 

ADODB.Recordset.1 error '80004005'

 

SQLState: 34000

Native Error Code: 0

[iNTERSOLV][ODBC SequeLink driver]Statement with cursor named in this statement's CURRENT-OF-CURSOR clause is not a SELECT FOR UPDATE.

 

 

/ekonomikonsulter2/andra_foretag_process.asp, line 66

 

(line 66 = rsc.Update)

 

 

Om jag ändrar Presentation till ett vanligt textfält i Access så fungerar det, men inte om jag låter fältet vara ett PM-fält.

 

Eftersom texten är längre än 255 tecken räcker ett vanligt textfält inte till, så jag måste verkligen ha ett PM-fält!

 

Hjälp mig!

 

 

Link to comment
Share on other sites

Däremot vill jag att du respekterar min metod, det är kvällens mål för mig. =)

 

Vet inte om jag vill respekterar det, det finns inget positivt i det du gör endast negativt.

 

1. Extra kommando för processorn, alltså tar det kraft (om än väldigt lite)

2. Ett extra moment alltså en möjlig felkälla.

 

Så visst du får gärna göra så om du vill, men jag vet inte om jag kommer att respekterar det :)

 

- Magnus

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Link to comment
Share on other sites

Enligt felmeddelandet så påstår IIS att du har öppnat ditt recordset fel, låter dock konstigt att det fungerar med en vanlig textrad.

 

Had jag varit som du hade jag slängt ut allt vad som heter recordset när du updaterar och lägger till data i databasen, och använder vanliga INSERT och UPDATE sqlsatser som ger bättre prestande och mindre felkällor.

 

- Magnus

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Link to comment
Share on other sites

Det är ju det jag har skrivit?

 

Jag har försökt läsa WebStudios SQL-skola, men jag förstår inte ett sk*t av det..

 

Om du skulle ändra följande kod så att den blir rätt, skulle jag vara dig evigt tacksam..

 

Set rsc = Server.CreateObject ("ADODB.Recordset")

Villkor = "SELECT Presentation From Foretagsregister2 WHERE ID=" & Request.Form("ID")

rsc.Open Villkor,Connect,adOpenDynamic,adLockOptimistic

 

rsc("Presentation") = request("Presentation")

 

rsc.Update

Connect.Close

Response.Redirect "main.asp"

 

 

Tack på förhand!

 

Link to comment
Share on other sites

Här kommer det! Jag tror och hoppas det ska fungera. Givetvis måste du ha databaskopplingen ovanför detta.

 

SQL = "UPDATE Foretagsregister2 SET Presentation = '"& request("Presentation") &"' WHERE ID="& request("id") &""

Connect.Execute(SQL)

Connect.Close

 

[inlägget ändrat 2002-11-10 18:21:04 av Sasja]

Link to comment
Share on other sites

Sådär, nu erhöll du din första poäng!

 

Koden du skrev fungerar utmärkt. Men hur fasen gör jag om jag vill ändra fler fält? Att skriva något i stilen med...

 

SQL = "UPDATE Foretagsregister2 SET Presentation = '"& request("Presentation") &"' and SET Organisationsnummer = '"& request("Organisationsnummer ") &"'

 

...fungerar tydligen inte.

 

 

 

Link to comment
Share on other sites

TACK för poängen! =)

 

Ne, det är enklare än du tror.

 

SQL:en blir så här:

SQL = "UPDATE Foretagsregister2 SET Presentation = '"& request("Presentation") &"', Organisationsnummer = '"& request("Organisationsnummer") &"' WHERE ID="& request("id") &""

 

[inlägget ändrat 2002-11-10 19:48:12 av Sasja]

Link to comment
Share on other sites

Fast, det där är ju osäker kod, så...

 

För varje sträng du läser in vill du använda replace(strängen, "'",""), och för talen kan du använda CInt(talet).

 

SQL = "UPDATE Foretagsregister2 SET Presentation = '"& [b]replace([/b]request("Presentation")[b],"'","")[/b] &"', Organisationsnummer = '"& [b]replace([/b]request("Organisationsnummer")[b],"'","")[/b] &"' WHERE ID="& [b]CInt([/b]request("id")[b])[/b]

 

Ciao,

Anders

[inlägget ändrat 2002-11-10 19:58:26 av Anders N]

Link to comment
Share on other sites

Det räcker att ta bort apostrof (') eftersom det är den som används för strängarna i SQL-frågan.

 

Om resultatet ska visas på en hemsida vill man dock förmodligen filtrera bort "<" och ">" också, för att undvika "dumma" HTML-kommandon.

 

Ciao,

Anders

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...