[ASP] Gegevens willen niet opgeslagen worden

Pagina: 1
Acties:

  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 04-09 12:53
Ik heb een acces97 database met daarin een aantal tabellen, een daarvan is "onderaannemers". Er worden elke keer als er in een andere database een regel word opgeslagen dan worden in de onderaannemers database automatisch 10 regels toegevoegd en dan krijgt het veld "Volgnummer" de nummers 1 t/m 10. Alles gaat goed als ik tijdens het aanmaken van de regels data er bij wil zetten, maar al wil ik later de data wijzigen dan wilt hij het niet opslaan, maar ik krijg ook GEEN foutmeldingen :?

Ik gebruik onderstaande code om de data te wijzigen:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
     DSN_CONN_STRING2 = "DRIVER={Microsoft Access Driver (*.mdb)}; "
    DSN_CONN_STRING2 = DSN_CONN_STRING2 & "DBQ=" & server.mappath("/dbase1/GeleKaart/GK_" & OrdNum & ".mdb")

    Dim RS2
    Set RS2 = Server.CreateObject("ADODB.Recordset")
    RS2.Open "Onderaannemer", DSN_CONN_STRING2, adOpenKeyset, adLockPessimistic, adCmdTable
    
    RS2.CacheSize = 25

    x = 1
    Do While NOT x = 11
        RS2.moveFirst
        Do While RS2.Fields("SubNummer") <> SubNum AND RS2.Fields("Volgnummer") <> x
                RS2.MoveNext
        Loop

        RS2.Fields("Volgnummer") = x
        RS2.Fields("SubNummer") = SubNum
        RS2.Fields("Nummer") = Opdrachtnummer
        RS2.Fields("Naam") = OnderaannemerNaam(x)
        RS2.Fields("Bedrag") = OnderaannemerBedrag(x)
        RS2.Fields("Soort") = OnderaannemerSoort(x)

        RS2.Update
        
        ' ALS IK ONDERSTAANDE LAAT UITVOEREN DAN WORDEN DE JUISTE WAARDE's
        ' GETOOND, MAAR ZE WORDEN NIET OPGESLAGEN IN DE DATABASE
    '   Response.Write RS2.Fields("Volgnummer") & "<br>"
    '   Response.Write RS2.Fields("SubNummer") & "<br>"
    '   Response.Write RS2.Fields("Nummer") & "<br>"
    '   Response.Write RS2.Fields("Naam") & "<br>"
    '   Response.Write RS2.Fields("Bedrag") & "<br>"
    '   Response.Write RS2.Fields("Soort") & "<br><br>"
        
        x = x + 1
    Loop

    RS2.close
    set RS2 = nothing

Als ik onderaan de code een "response.End" typt dan krijg ik netjes alle data te zien die ik gewijzigd hebt, maar al open ik weer de database dan zijn de wijzigingen niet opgeslagen, dan krijg ik de oude data weer te zien :?

Wat doe ik nou fout, want ik weet het niet meer?

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


  • HansMij
  • Registratie: Mei 2002
  • Laatst online: 21:12
Volgens mij moet er een updatebatch() (of iets dergelijks bij)

  • fatbenny
  • Registratie: April 2001
  • Laatst online: 07-03-2023
ik gok:

'RS2.addnew' voor
'RS2.Fields("Volgnummer") = x'

:)

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 08-09 13:41

Crazy D

I think we should take a look.

rs2.Update zou goed moeten zijn, maar uh kun je er niet een update query van maken?

Exact expert nodig?


  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 04-09 12:53
Op maandag 13 mei 2002 11:56 schreef fatbenny het volgende:
ik gok:

'RS2.addnew' voor
'RS2.Fields("Volgnummer") = x'

:)
Nee, dit moet alleen als er een NIEUWE regel toegevoegd moet worden, hier gaat het om het UPDATEN van de date!

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


Verwijderd

Probeer eens in plaats van
code:
1
RS2.Open "Onderaannemer", DSN_CONN_STRING2, adOpenKeyset, adLockPessimistic, adCmdTable

hetvolgende
code:
1
RS2.open "SELECT * from Onderaannemer Where SubNummer = " & 'SubNum', adOpenDynamic, adLockOptimistic

Ik denk niet dat het je probleem oplost, je hoeft in ieder geval niet meer een heleboel keer movenext te doen voordat je bij de juiste data bent.

Stomme vraag waarschijnlijk: waarom maak je standaard tien records aan in een subtabel? Met een goed database model hoeft dat toch niet?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 08-09 13:41

Crazy D

I think we should take a look.

Op maandag 13 mei 2002 12:31 schreef Polderdijk het volgende:
Nee, dit moet alleen als er een NIEUWE regel toegevoegd moet worden, hier gaat het om het UPDATEN van de date!
Daarom zei ik ook, waarom geen update query?

Exact expert nodig?


  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 22:14

BlackBurn

One Ring To Rule Them All

Op maandag 13 mei 2002 13:34 schreef JeroenDega het volgende:
Probeer eens in plaats van
code:
1
RS2.Open "Onderaannemer", DSN_CONN_STRING2, adOpenKeyset, adLockPessimistic, adCmdTable

hetvolgende
code:
1
RS2.open "SELECT * from Onderaannemer Where SubNummer = " & 'SubNum', adOpenDynamic, adLockOptimistic
Probeer ipv adLockOptimistic eens een 3 neer te zetten dus zo:
code:
1
RS2.open "SELECT * from Onderaannemer Where SubNummer = " & 'SubNum', adOpenDynamic, 3

If it is broken, fix it. If it ain't broken, make it better!


  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 04-09 12:53
Ik heb nu het volgende in mijn script:
code:
1
2
3
4
5
6
7
8
9
10
11
12
     DSN_CONN_STRING2 = "DRIVER={Microsoft Access Driver (*.mdb)}; "
    DSN_CONN_STRING2 = DSN_CONN_STRING2 & "DBQ=" & server.mappath("/dbase1/GeleKaart/GK_" & OrdNum & ".mdb")

    Dim RS2
    Set RS2 = Server.CreateObject("ADODB.Recordset")
    'RS2.Open "Onderaannemer", DSN_CONN_STRING2, adOpenKeyset, adLockPessimistic, adCmdTable
    
    RS2.open "SELECT * from Onderaannemer Where SubNummer = '" & SubNum & "'" , adOpenDynamic, 3
    
    Response.Write RS2.RecordCount
    
    Response.End

Maar als ik nu het script oproept krijg ik een geheel blanco pagina, dus de RS2.RecordCount is "", maar ik dacht als er geen records zijn dat hij 0 aangeeft :? en By The Way, er staan 10 records in de database, dus hij zou op zijn minst 10 moeten aangeven :?

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 22:14

BlackBurn

One Ring To Rule Them All

Probeer eens een gewone veld op het scherm te schrijven zonder poespas doet ie dat ook niet en waar haal je subnum vandaan?

If it is broken, fix it. If it ain't broken, make it better!


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

<h3><HINT>
Op maandag 13 mei 2002 13:38 schreef Crazy_D het volgende:
Daarom zei ik ook, waarom geen update query?
</HINT></h3>

Doet iets met Cloud (MS/IBM)


  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 04-09 12:53
Op maandag 13 mei 2002 15:54 schreef D2k het volgende:
<h3><HINT>
[..]

</HINT></h3>
Een minder groot lettertype kan geen kwaat hoor :7

Maar ik weet niet precies hoe je dat doet, dus vandaar, en op google kan ik het ook niet vinden!

En aan de andere kant, rs.update werkt bij mijn anders asp-jes wel goed, behalve bij deze, dus ik wil graag weten WAAROM hij het nu opeens NIET doet!

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 04-09 12:53
Op maandag 13 mei 2002 15:10 schreef BlackBurn het volgende:
Probeer eens een gewone veld op het scherm te schrijven zonder poespas doet ie dat ook niet en waar haal je subnum vandaan?
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
26
        set DBConn = server.createobject("ADODB.connection")
        DSN_CONNSTRING="DRIVER={Microsoft Access Driver (*.mdb)}; "
        DSN_CONNSTRING=DSN_CONNSTRING & "DBQ=" & server.mappath("/dbase1/GeleKaart/GK_" & OrdNum & ".mdb")
        DBConn.Open DSN_CONNSTRING              

        set rs2 = Server.CreateObject("ADODB.Recordset")
        SQLstring2 = "SELECT * FROM Onderaannemer WHERE SubNummer LIKE '" & SubNum & "'"
        rs2.Open SQLstring2, DBConn, adOpenStatic, adLockReadOnly, adCmdText
    
        If rs2.RecordCount <> 0 Then
            RS2.MoveFirst
            Do While NOT RS2.EOF

                OnderaannemerNaam(RS2("Volgnummer")) = RS2("Naam")
                OnderaannemerBedrag(RS2("Volgnummer")) = RS2("Bedrag")
                OnderaannemerSoort(RS2("Volgnummer")) = RS2("Soort")
                
                RS2.MoveNext
            Loop
        End If


        rs2.Close
        set rs2 = Nothing
        DBConn.Close
        set DBConn = Nothing

Als ik het volgens bovenstaande script doet dan krijg ik gewoon netjes de database, dus daarom zeg ik al dat het heel vreemt is, en al zou ik nou een error krijgen, maar dat krijg ik ook niet, dus ik weet echt NIET hoe dit komt!!

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 08-09 13:41

Crazy D

I think we should take a look.

Op maandag 13 mei 2002 15:59 schreef Polderdijk het volgende:
Een minder groot lettertype kan geen kwaat hoor :7
kwaad :P
Maar ik weet niet precies hoe je dat doet, dus vandaar, en op google kan ik het ook niet vinden!
UPDATE tabelnaam
SET veld = waarde, anderveld = anderewaarde
WHERE weereenanderveld = dejuistewaarde
Een willekeurige SQL tutorial zal je het een stuk beter kunnen uitleggen dan ik dat kan.
En aan de andere kant, rs.update werkt bij mijn anders asp-jes wel goed, behalve bij deze, dus ik wil graag weten WAAROM hij het nu opeens NIET doet!
Dat ben ik met je eens, het is raar. Maar ja, je kan 4 uur bezig zijn om uit te vogelen waarom het ergens anders wel werkt en nu niet, je kan ook 5 minuten een SQL tutorial lezen en 5 minuten (ok misschien 10, je moet wel koffie kunnen drinken tussendoor ;)) ff typen en je hebt het werkend met een query :)

Exact expert nodig?


  • cannibal
  • Registratie: Maart 2001
  • Laatst online: 07-09 20:38
Moet je ook niet eerst

rs2.Edit aanroepen,
voordat je deze velden kan aanpassen en
daarna de update aanroepen.

  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 04-09 12:53
Op maandag 13 mei 2002 16:14 schreef cannibal74 het volgende:
Moet je ook niet eerst

rs2.Edit aanroepen,
voordat je deze velden kan aanpassen en
daarna de update aanroepen.
Ik zal het proberen, ik heb net bij een collega lopen kloten die was bezig in access2000 een database proberen te updaten met een stukje vb en daar moest ik inderdaad eerst rs.Edit typen, en dan de waarde's toekennen en daarna weer een rs.Update geven, maar als het goed is hoeft dat niet in ASP!

Maar ik zal het nu proberen!

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


  • cannibal
  • Registratie: Maart 2001
  • Laatst online: 07-09 20:38
Nee, klopt, gebruik in mijn asp-pagina's ook geen edit.
heb het daar ook uit gecomment.
zal even verder kijken.

  • cannibal
  • Registratie: Maart 2001
  • Laatst online: 07-09 20:38
Dit gebruik ik om mijn recordset te openen.
weet alleen even niet wat de contante namen zijn voor
de integers die ik heb gebruikt.

Die keyset vertrouw ik niet helemaal.

rsCharacter.Open strSQL, dbRPG, 2, 3

Verwijderd

Op maandag 13 mei 2002 16:14 schreef cannibal74 het volgende:
Moet je ook niet eerst

rs2.Edit aanroepen,
voordat je deze velden kan aanpassen en
daarna de update aanroepen.
rs.edit gebruik je alleen als je DAO gebruikt (binnen Access). Bij ADO is dat niet nodig.

Verwijderd

Op maandag 13 mei 2002 16:35 schreef cannibal74 het volgende:
Dit gebruik ik om mijn recordset te openen.
weet alleen even niet wat de contante namen zijn voor
de integers die ik heb gebruikt.

Die keyset vertrouw ik niet helemaal.

rsCharacter.Open strSQL, dbRPG, 2, 3
'---- CursorTypeEnum Values ----
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3

  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 04-09 12:53
Ik van alles geprobeert, en met onderstaande script werkt het WEL :?

Hopen dat jullie het wel snappen dat hij het nu wel doet!
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
26
27
28
29
30
31
     DSN_CONN_STRING2 = "DRIVER={Microsoft Access Driver (*.mdb)}; "
    DSN_CONN_STRING2 = DSN_CONN_STRING2 & "DBQ=" & server.mappath("/dbase1/GeleKaart/GK_" & OrdNum & ".mdb")

    Dim RS2
    Set RS2 = Server.CreateObject("ADODB.Recordset")
    RS2.Open "Onderaannemer", DSN_CONN_STRING2, adOpenKeyset, adLockPessimistic, adCmdTable
    
    RS2.CacheSize = 25

    RS2.moveFirst
    Do While RS2.Fields("SubNummer") <> SubNum
        RS2.MoveNext
    Loop

    x = 1
    Do While NOT x = 11
    
        RS2.Fields("Volgnummer") = x
        RS2.Fields("SubNummer") = SubNum
        RS2.Fields("Nummer") = Opdrachtnummer
        RS2.Fields("Naam") = OnderaannemerNaam(x)
        RS2.Fields("Bedrag") = OnderaannemerBedrag(x)
        RS2.Fields("Soort") = OnderaannemerSoort(x)

        RS2.Update
        RS2.MoveNext
        x = x + 1
    Loop

    RS2.close
    set RS2 = nothing

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


  • cannibal
  • Registratie: Maart 2001
  • Laatst online: 07-09 20:38
Dan is het toch misschien dat mijn vage idee klopte (iets wat achter in mijn hoofdspeelde). Als je geen query hebt die hard is. Dus zoiets als met de like, dan kan ADO er geen update query voor bedenken. Ik schat dat dit iig een oorzaak kan zijn. Dus als je een where met een harde ID gebruikt zou het ook kunnen dat het werkt.

Enige punt is dat je eigenlijk toch gewoon het record aangeeft met de movenext actie, en ado toch zou moeten weten van welk record de velden te updaten.
Pagina: 1