conn er naturligvis dit åbne connection-objekt og rs er det resultat der kommer ud af din Execute (i dette tilfælde et recordset med en kolonne som indeholder antallet af påvirkede rækker).
Du kan naturligvis også bare kalde cmd.Execute uden at lægge det over i et recordset-objekt...
Hvilken database bruger du og hvordan ser DIN sql ud (de faktiske tabel- og feltnavne)?
Det kan være du skal oprette hver parameter eksplicit inden du tildeler værdier til dem, men jeg sidder og bruger SQL Server til daglig og der har jeg ingen problemer med ovenstående kode. Dog har jeg også sat cmd.CommandType = adCmdText som en del af forberedelsen af Command-objektet.
Jeg har lavet en funktion til at udføre kommandoer med, som ser således ud (og den fungerer som sagt mod en SQL Server for inline sql-sætninger):
function ExecSQLCommand(sql, params, cn) dim cmd, idx, param, result
set cmd = Server.CreateObject("ADODB.Command") set cmd.ActiveConnection = cn cmd.CommandType = adCmdText cmd.CommandText = sql if isArray(params) then idx = 0 for each param in params cmd(idx) = param idx = idx + 1 next end if set result = cmd.Execute() set cmd = nothing
Parameter 2 (Array'et) er så de parametre SQL-sætningen skal fødes med I DEN RÆKKEFØLGE SOM PARAMETRENE FOREKOMMER I SQL-SÆTNINGEN! Det sidste er vigtigt, da der benyttes anonyme parametre :)
Det kan godt være du får fejl på linien med CommandType, men så er det fordi du ikke har inkluderet den include-fil som følger med ado, hvor alle konstanter er defineret, eller du ikke har erklæret meta-informationer for ADO i din kode. Du kan enten gøre en af de nævnte, eller benytte den numeriske værdi for adCmdText (som jeg mener er 1).
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.