[asp] disconnected recordset & auto increment

Pagina: 1
Acties:

  • majornono
  • Registratie: Juni 2002
  • Laatst online: 04-04 23:16
Ik heb een disconnected recordset. Voor ieder record in die set worden een aantal input velden (drop down, checkbox, radio, text) getoond. Deze moet ik straks allemaal apart kunnen benaderen in javascript. Oftewel, iedere input moet zijn eigen name & id krijgen. Nu wil ik hiervoor een id aan ieder record toevoegen, zodat ik deze aan alle id's en names kan toevoegen.

Mijn recordset heb ik als volgt gedefinieerd:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
dim rsColumns

set rsColumns = Server.CreateObject("ADODB.Recordset")
    
rsColumns.CursorType = adOpenDynamic
rsColumns.CursorLocation = adUseClient
rsColumns.LockType = adLockOptimistic
    
rsColumns.Fields.Append "ID"            , adInteger
rsColumns.Fields.Append "Kolom"         , adVarChar, 255
rsColumns.Fields.Append "KolomTonen_janee"  , adBoolean
rsColumns.Fields.Append "Omschrijving"      , adVarChar, 255

rsColumns.Open

'testdata. De array moet nog met echte waarden worden gevuld
rsColumns.AddNew
rsColumns("Kolom") = "Onderwerp"
rsColumns("KolomTonen_janee") = true
rsColumns("Omschrijving") = "Titel"


Hoe maak ik van ID een auto increment veld in de disconnected recordset? Ik kan natuurlijk wel een stukkie code erbij schrijven die de records aan de recordset toevoegd telt, maar een auto increment vind ik een elegantere oplossing.

Volgens MSDN moet het volgende werken, maar daar heb ik tot nog toe geen succes mee gehad:
ASP:
1
rsColumns.Fields("ID").Properties("AutoIncrement") = true

Problem Exists Between Chair And Keyboard


Verwijderd

Heb je eigenlijk wel je recordset .activeconnection (na het ophalen) gesloten en je reference naar het object vernietigd?
Dan pas is ie "disconnected".....misschien wel, dat zie ik zo 123 niet, tis maar een tip.
Daarna zou het op de MSDN manier toch moeten lukken.

BTW ik kan het (weer ;) ) fout hebben hoor maar gebruik je niet een disconnected recordset om te updaten (en dan bijvoorbeeld in batch??).

EDIT//// dan heb je namelijk ook geen last van iemand anders die al een record heeft tegevoegd en jij dezede ID probeert toe te voegen :P ---ik kan het mis hebben hoor maar ik denk dat het zo werkt!

Richard

[ Voor 21% gewijzigd door Verwijderd op 06-01-2004 16:36 ]


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 04:11

Gerco

Professional Newbie

Verwijderd schreef op 06 januari 2004 @ 16:33:
Heb je eigenlijk wel je recordset .activeconnection (na het ophalen) gesloten en je reference naar het object vernietigd?
Dan pas is ie "disconnected".....misschien wel, dat zie ik zo 123 niet, tis maar een tip.
Daarna zou het op de MSDN manier toch moeten lukken.
Hij gebruit een recordset die helemaal nooit een database van dichtbij gezien heeft, lijkt me wat onmogelijk om die te disconnecten van iets waar 'ie nooit aan connected is geweest.

Daarnaast zou het misschien handig zijn om te weten wat voor "problemen" je hebt met de MSDN oplossing. Krijg je foutmeldingen? Gebeurt er iets anders dan je verwacht of misschien zelfs helemaal niets?

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
op devguru kwam ik dit tegen

http://www.devguru.com/Te...ord_fieldscollection.html

misschien dat daar het e.e.a. bij staat...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • majornono
  • Registratie: Juni 2002
  • Laatst online: 04-04 23:16
Gerco schreef op 06 januari 2004 @ 17:27:
[...]

Hij gebruit een recordset die helemaal nooit een database van dichtbij gezien heeft, lijkt me wat onmogelijk om die te disconnecten van iets waar 'ie nooit aan connected is geweest.
[...]
Als ik probeer de Property te zetten krijg ik een foutmelding:
"Requested item cannot be found in the ..."

Problem Exists Between Chair And Keyboard


  • majornono
  • Registratie: Juni 2002
  • Laatst online: 04-04 23:16
FvKnijff schreef op 06 januari 2004 @ 18:08:
op devguru kwam ik dit tegen

http://www.devguru.com/Te...ord_fieldscollection.html

misschien dat daar het e.e.a. bij staat...
Het enige wat er volgens mij enigszins op lijkt is de attribuut "adFldRowID".
Maar hier staat niet expliciet bij dat dit een auto increment veld creeert. Ik zal het morgen eens testen door een extra veld toe te voegen met dit attribuut als parameter aan de append functie.

Problem Exists Between Chair And Keyboard


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 25-05 21:07

TeeDee

CQB 241

Je zou er ook een workaround om kunnen bouwen.

Als ik je goed begrijp, wil je het dynamisch een form laten genereren met aan elke "row" een unique id?

Vervolgens moet alles in een db geschreven worden???

Als je nu een for i .... loop bouwt?
En met je javascript een for x .... loop bouwt?

Dan ben je er toch ook?

Je zou, als het inderdaad naar een db moet, in je db een apart veld kunnen maken die de "i" waardes bijhoudt als zijnde volgnummers.

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Gerco schreef op 06 januari 2004 @ 17:27:
[...]

Hij gebruit een recordset die helemaal nooit een database van dichtbij gezien heeft, lijkt me wat onmogelijk om die te disconnecten van iets waar 'ie nooit aan connected is geweest.

Daarnaast zou het misschien handig zijn om te weten wat voor "problemen" je hebt met de MSDN oplossing. Krijg je foutmeldingen? Gebeurt er iets anders dan je verwacht of misschien zelfs helemaal niets?
Okee, allemaal hartstikke prima maar wat heeft dit dan voor nut??
Je zou, als het inderdaad naar een db moet, in je db een apart veld kunnen maken die de "i" waardes bijhoudt als zijnde volgnummers.
Dan kun je toch net zo goed een disconnected recordset gebruiken die uit je bestaande db komt?

Richard

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 04:11

Gerco

Professional Newbie

Verwijderd schreef op 07 januari 2004 @ 08:38:
Okee, allemaal hartstikke prima maar wat heeft dit dan voor nut??
Dit soort recordsets kunnen erg handig zijn bij het dynamisch opbouwen van forms met meerdere regels (urenregistratie ofzo). Zet dit object in je sessie, gebruik het om je form in op te slaan over meerdere calls naar dezelfde pagina, dat scheelt je een berg nutteloze data in je database totdat de user het hele form commit, dan sla je het in 1 keer op.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Ja okee maar je moet toch zeker weten dat de id's die je gaat toevoegen niet "al in gebruik" zijn door een ander die al gegevens heeft toegevoegd?

Waarschijnlijk zie ik ff het licht in deze kwestie nog niet!

Je zet die discon. recordset in je sessie. En wat als je browservenster afsluit?
Goh...ik zie dat ik nog een hoop te leren heb ;)

EDIT::: en wat is dan overbodige info in jouw voorbeeld???

PS Met "Dit" in de zin : Wat heeft dit dan voor nut bedoelde ik de daaropvolgende zin !

[ Voor 24% gewijzigd door Verwijderd op 07-01-2004 09:25 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 07 januari 2004 @ 09:23:
Je zet die discon. recordset in je sessie. En wat als je browservenster afsluit?
En wat als je Microsoft Word afsluit, zonder je document te hebben opgeslagen?
Zelfde principe :) In dit geval is het nog 'extremer'. Data is nuttig indien het
  • Of alle data is
  • Zo niet, dan is het niet nuttig
Vandaar dat het handig kan zijn om tussentijds niets op te slaan, omdat je dan invalide data kan krijgen.

[ Voor 30% gewijzigd door gorgi_19 op 07-01-2004 09:26 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

ehehheh.....jeah you're right ;)

Maar dan heb je nog steeds niet opgelost dat een ander de id's al ge/verbruikt heeft!

gorgi_19: dat betekend dus : volgens jouw voorbeeld "urenregistratie" dat wanneer de gebruiker niet alle registratiegegevens heeft ingevuld en hij aflsuit hij een vraag krijgt of ie op wil slaan? Ja = save, Nee = cancel ???

[ Voor 58% gewijzigd door Verwijderd op 07-01-2004 09:31 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 07 januari 2004 @ 09:27:
ehehheh.....jeah you're right ;)

Maar dan heb je nog steeds niet opgelost dat een ander de id's al ge/verbruikt heeft!
In principe maakt dat geen donder uit. PK zijn alleen ter interne identificatie in de database.

Je zult dus zelf een 'updateclass moeten schrijven. Dit kan in de vorm van een SP, maar het zou ook kunnen enkele SQL Statements achter elkaar, waarbij je dan de PK moet achterhalen met @@Identity, om zo te verwerken in het volgende SQL Statement.
Verwijderd schreef op 07 januari 2004 @ 09:27:
gorgi_19: dat betekend dus : volgens jouw voorbeeld "urenregistratie" dat wanneer de gebruiker niet alle registratiegegevens heeft ingevuld en hij aflsuit hij een vraag krijgt of ie op wil slaan? Ja = save, Nee = cancel ???
Jups. :) Ik heb niets aan een urenregistratie waarin de helft ontbreekt.

[ Voor 28% gewijzigd door gorgi_19 op 07-01-2004 09:34 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

owwwwwwwwwww.....op die manier....jah, goed uitgelegd ;) Ik zie ineens wat je bedoelt :)

  • majornono
  • Registratie: Juni 2002
  • Laatst online: 04-04 23:16
Verwijderd schreef op 07 januari 2004 @ 09:27:
ehehheh.....jeah you're right ;)

Maar dan heb je nog steeds niet opgelost dat een ander de id's al ge/verbruikt heeft!
De betreffende ID's zijn geen onderdeel van een sleutel o.i.d.
Het gaat me ook niet zo zeer om de toepassing ervan. Natuurlijk kan ik net zo makkelijk zelf een tellertje maken en die ophogen in ASP, als er verder toch geen comm. met de database is.

Ik wil gewoon weten of het mogelijk is. Zo'n recordset is veel flexibeler dan bijvoorbeeld een n-dimensionale array of een dictionary object in ASP. Om de afzonderlijke records snel te kunnen bereiken zou ik ze een nummertje willen geven, wat ik dan weer gebruik om de input velden een id te geven tbv javascript.

Problem Exists Between Chair And Keyboard

Pagina: 1