[ASP] Kan ADO record niet kopieren

Pagina: 1
Acties:

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 12-02 15:05

Robtimus

me Robtimus no like you

Topicstarter
Ik heb in ASP een tabel die oa een tabel naam, een key uit die tabel en een andere waarde bevat.

Nu moet ik het record waar zo'n record naar wijst kopieren. Ik heb daarvoor de volgende code:
ASP:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Public Function CopyEvent(ByRef adoConn, ByRef adoSORS)
Dim adoRS, adoNewRS
Dim adoField
Dim sColumn

    Set adoRS = Server.CreateObject("ADODB.RecordSet")
    Set adoNewRS = Server.CreateObject("ADODB.RecordSet")
    sTable = adoSORS("inteventtable")

    adoRS.Open sTable, adoConn, 2, 3
    adoRS.Find "pkey = " & adoSORS("intevent_key")
    ' Will find something, but check anyway
    If adoRS.EOF Then
        CopyEvent = False
    Else
        adoNewRS.Open sTable, adoConn, 2, 3
        adoNewRS.AddNew
        For Each adoField In adoRS.Fields
            sColumn = adoField.Name
            Select Case sColumn
                Case "pkey"
                    adoNewRS(sColumn) = GetNextKey(adoConn, sTable)
                Case "checkagent"
                    adoNewRS(sColumn) = Null
                Case "checkdate"
                    adoNewRS(sColumn) = Null
                Case "datecreated"
                    adoNewRS(sColumn) = Now
                Case "intcount"
                    adoNewRS(sColumn) = GetIntCount(adoConn, sTable, adoRS("intervention_key")) + 1
                Case "intstatus"
                    nStatus = GetEnumKey(adoConn, sTable, sColumn, "System")
                    If nStatus = -1 Then
                        adoNewRS(sColumn) = adoField.Value
                    Else
                        adoNewRS = nStatus
                    End If
                Case "intstatuscount"
                    ' Not important
                    adoNewRS(sColumn) = 0
                Case "interventiontype_key"
                    adoNewRS(sColumn) = adoSORS("interventiontype_key")
                Case "sendout"
                    adoNewRS(sColumn) = Now
                Case "sendoutmethod"
                    adoNewRS(sColumn) = adoSORS("sendoutmethod")
                Case Else
                    adoNewRS(sColumn) = adoField.Value
            End Select
        Next
        adoNewRS.Update
        CopyEvent = True
        adoNewRS.Close
    End If
    adoRS.Close
    Set adoRS = Nothing
    Set adoNewRS = Nothing
End Function
adoConn is een bestaande connectie
adoSORS is een ADO RecordSet dat verwijst naar het record dat de info bevat over welk record te kopieren. intevent_key is de key, inteventable de naam van de table, en er zijn nog velden sendoutmethod en interventiontype_key die ik moet kopieren. De types van die velden kloppen ook gewoon. Verder geeft GetNextKey(adoConn, sTable) me de volgende primary key voor een tabel, en de andere twee methods geven me ook waarden terug die geldig zijn.

Het probleem is alleen, als ik dit nu uitvoer, krijg ik de volgende foutmelding:
code:
1
2
3
4
Error Type:
Microsoft VBScript runtime (0x800A000D)
Type mismatch: 'adoNewRS'
File.asp, line 194

Regel 194 is "adoNewRS(sColumn) = 0". intstatuscount is van type int. Haal ik deze weg dan krijg ik weer van een ander veld dezelfde melding, en zo door. Zelfs "adoNewRS(sColumn) = adoField.Value" gaat fout, wat dus nooit zou mogen in mijn ogen.
Ik moet bijna alles weghalen voordat het werkt. Dan krijg ik natuurlijk wel een fout bij het updaten omdat teveel waarden missen.

Mijn vraag is nu: wat doe ik fout? Ik doe dit ook in Visual Basic en daar gaat het wel goed.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
adoNewRS(sColumn) = 0 of bedoel je adoNewRS(sColumn).Value = 0.
Default properties (in dit geval Value) willen nog wel eens problemen geven in ASP terwijl dit in VB6 gewoon goed gaat. Don't ask me why. Ik probeer default properties zoveel mogelijk te vermijden ook omdat ik het duidelijker vind om altijd expliciet de property te zetten.

It’s nice to be important but it’s more important to be nice


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 12-02 15:05

Robtimus

me Robtimus no like you

Topicstarter
pjonk schreef op vrijdag 20 oktober 2006 @ 21:37:
adoNewRS(sColumn) = 0 of bedoel je adoNewRS(sColumn).Value = 0.
Default properties (in dit geval Value) willen nog wel eens problemen geven in ASP terwijl dit in VB6 gewoon goed gaat. Don't ask me why. Ik probeer default properties zoveel mogelijk te vermijden ook omdat ik het duidelijker vind om altijd expliciet de property te zetten.
Hmm, ik wist niet eens dat die dingen een Value hadden ;)
Ik bedoel idd dat ik de Value van een veld wil zetten. Maandag maar eens proberen dan, ik ga nu niet werken ;)

Als iemand anders een probleem ziet hoor ik het graag.

More than meets the eye
There is no I in TEAM... but there is ME
system specs