19. september 2001 - 00:04Der er
55 kommentarer og 2 løsninger
Hvordan udfører man flere SQL-commands ad gangen?
Jeg har et asp stykke der ser nogenlunde sådan her ud:
Set rs = Server.CreateObject(\"ADODB.RecordSet\") strSQL = \"Select * From wars\" rs.Open strSQL, SQL, Conn, adOpenKeyset, adLockOptimistic
rs.Addnew rs(\"clan\") = clan rs(\"channel\") = channel rs(\"date\") = day & \"/\" & month & \"/\" & year rs(\"time\") = hour & \":\" & min rs(\"map\") = map rs(\"set\") = 1 rs(\"challanged\") = now rs.Update
SQL = \"Update users Set challange=\'1\' Where rank=\'Member/Wararranger\'\"
Rs.Close
Jeg er rimlig newbie til ASP, men jeg prøver at få 2 SQL-commands til at kører.....Den ene kører fint (strSQL) så længe jeg ikke blander den anden (SQL) ind i dokumentet. Kan jeg få begge commands til at virke samtidig eller sådan lige efter hinanden? og hvordan skal koden se ud?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hvis du vil køre eks. både en select og en update, kan du normalt bruge
SQL = \"SELECT * FROM Tabel;UPDATE Tabel SET Felt = \'Værdi\'\" Conn.Execute SQL
Men faktisk er jeg ret overbevist om at Access ikke understøtter flere statements i samme streng. Jeg mener du vil få en fejl efter første statement, der siger noget i stil med \"characters found after end of statement\"
Set rs = Server.CreateObject(\"ADODB.RecordSet\") strSQL = \"Select * From wars;Update users Set challange=\'1\' Where rank=\'Member/Wararranger\'\" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
rs.Addnew rs(\"clan\") = clan rs(\"channel\") = channel rs(\"date\") = day & \"/\" & month & \"/\" & year rs(\"time\") = hour & \":\" & min rs(\"map\") = map rs(\"set\") = 1 rs(\"challanged\") = now rs.Update
Okay.....den sidste linje må du uddybe? Hvor skal jeg sætte SQL = \"INSERT INTO Wars VALUES(\'\" & RS(\"Clan\") & \"\', \'\" & RS(\"Channel\") & \"\')\" ind? og istedet for hvilet?
Jeg vil foreslå at du lærer at bruge SQL _ALENE_ istedet for at bruge et RecordSet\'s funktioner, da dette gør det en del nemmere. Her er din kode omskrevet til at bruge SQL:
Conn.Execute \"INSERT INTO wars (clan,channel,date,time,map,set,challanged) VALUES (\'\" & clan & \"\',\'\" & channel & \"\',\'\" & day & \"-\" & month & \"-\" & year & \"\',\'\" & hour & \":\" & min & \",1,#\" & now & \"#)\" Conn.Execute \"UPDATE users SET challange=\'1\' WHERE rank=\'Member/Wararranger\'\"
Kender jeg ikke datatyperne på dine felter men har antaget at du bruger et tekst felt til \"date\" og \"time\" felterne og et Dato/Tid til \"challanged\".
Hvis du IKKE gør det og bruger Dato/Tid på dem alle skal \' og \' rundt om & day & \"-\" osv. laves om til # ligesom på \"challanged\".
clan = Session(\"clan\") channel = Session(\"channel\") month = Session(\"month\") day = Session(\"day\") year = Session(\"year\") hour = Session(\"hour\") min = Session(\"min\") map = Session(\"map\")
Set rs = Server.CreateObject(\"ADODB.RecordSet\") strSQL = \"Select * From wars;Update users Set challange=\'1\' Where rank=\'Member/Wararranger\'\" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
rs.Addnew rs(\"clan\") = clan rs(\"channel\") = channel rs(\"date\") = day & \"/\" & month & \"/\" & year rs(\"time\") = hour & \":\" & min rs(\"map\") = map rs(\"set\") = 1 rs(\"challanged\") = now rs.Update
Rs.Close Response.Redirect \"challanged.asp\" %>
<% Conn.close Set Conn = Nothing %>
Jeg må indrømme at jeg kun har fattet d der med at bruge Record (rs) Det andet der ser lidt sjovt ud.....
tdaugaard >> principielt enig, men der er mange (incl. mig selv) der ofte bruger det for at gøre koden mere overskuelig. Faktisk bruger jeg det ofte i en endnu mere \"ekstrem\" form, for at holde koden inden for læsevidde, eks.
Ahh, date og måske også time er reserverede ord i SQL. Prøv at sætte [] uden om date i første omgang, så date bliver til [date]. Det skader ikke også at ændre tim til [time]
<% Dim Conn Set Conn = CreateObject(\"ADODB.Connection\") Conn.Open \"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\" & Server.MapPath(\"db/users.mdb\")
Fejlen \"Number of query values and destination fields are not the same.\" betyder at antallet af felter i VALUES ikke stemmer overens med antal kolonner i INSERT INTO Wars(....)
tdaugaard >> det har jeg også hjemme, men lige nu sidder jeg på et hotelværelse i Kbh og må nøjes med min bærbare\'s \"knap så hurtigt at skrive på\" keyboard
Synes godt om
Ny brugerNybegynder
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.