Ik ben bezig met een asp-pagina die de inhoud van een form naar een sql2000 database moet schrijven.
De form bestaat uit een lijst met de groepen uit ons domain (<select name='domaingroups' multiple>). De asppagina die na een submit wordt gestart leest via een 'For Each' de domaingroups uit. Dit gaat gewoon goed maar wanneer er slechts 1 groep geselecteerd is komt die groep soms 2x voor in de db na het toevoegen. In de command object krijg ik echter terug dan er 1 is veranderd.
Hier even de twee stukjes code, doe allebei hetzelfde alleen de ene is via een recordset obj. en de andere via een command obj.
En
Wanneer ik dus 1 groep wil toevoegen is de uitkomst van iCmdExe iedere keer 1 maar als ik dan kijk in de tabel zijn er twee toegevoegd en als ik een trace bekijk op de sql doos wordt er, wanneer het goed gaat er 1 bij geschrijven en als het niet goed gaat dus 2, terwijl de uitkomst van iCmdExe dus wel 1 is..
Iemand bekent met dit fenomeen ??
Het liefst gebruik ik de onderste of zijn er betere methodes bekend ??
De form bestaat uit een lijst met de groepen uit ons domain (<select name='domaingroups' multiple>). De asppagina die na een submit wordt gestart leest via een 'For Each' de domaingroups uit. Dit gaat gewoon goed maar wanneer er slechts 1 groep geselecteerd is komt die groep soms 2x voor in de db na het toevoegen. In de command object krijg ik echter terug dan er 1 is veranderd.
Hier even de twee stukjes code, doe allebei hetzelfde alleen de ene is via een recordset obj. en de andere via een command obj.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| Sub Toevoegen()
Dim sSelectedItem
Dim sAddSQL
Dim oAdd
sAddSQL = "SELECT * FROM tbl_ApplicatiePermissies"
Set oAdd = Server.CreateObject("ADODB.Recordset")
oAdd.Open sAddSQL, strConnect, adOpenStatic,adLockOptimistic,adCmdText
For Each sSelectedItem in Request.Form("domaingroups")
With oAdd
.AddNew
.Fields("Groep") = sSelectedItem
.Fields("ReadOnly") = True
.Fields("ReadWrite") = False
.Fields("FullControl") = False
.Update
End With
Next
' oAdd.UpdateBatch
oAdd.Close
Set oAdd = Nothing
End Sub |
En
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| Sub ToevoegenOud()
Dim sSelectedItem
Dim objInsertCmd
Dim iCmdExe
Dim sCmdQuery
Set objInsertCmd = Server.CreateObject("ADODB.Command")
objInsertCmd.ActiveConnection = sConnPermDB
objInsertCmd.CommandType = adCmdText
For Each SelectedItem In Request.Form("domaingroups")
sCmdQuery = _
"INSERT INTO tbl_ApplicatiePermissies " & _
" (Groep, ReadOnly, ReadWrite, FullControl) " & _
"VALUES ('" & sSelectedItem & "', 1, 0, 0)"
objInsertCmd.CommandText = sCmdQuery
objInsertCmd.Execute iCmdExe
Next
Set objInsertCmd = Nothing
End Sub |
Wanneer ik dus 1 groep wil toevoegen is de uitkomst van iCmdExe iedere keer 1 maar als ik dan kijk in de tabel zijn er twee toegevoegd en als ik een trace bekijk op de sql doos wordt er, wanneer het goed gaat er 1 bij geschrijven en als het niet goed gaat dus 2, terwijl de uitkomst van iCmdExe dus wel 1 is..
Iemand bekent met dit fenomeen ??
Het liefst gebruik ik de onderste of zijn er betere methodes bekend ??
[ Voor 13% gewijzigd door shades op 05-12-2002 11:26 ]