[ASP] Zo snel mogelijk een database updaten

Pagina: 1
Acties:

  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 12:13
ik wil middels ASP op generieke wijze een willekeurig record kunnen toevoegen, verwijderen of updaten. Via de request.form en/of request.querystring kan ik alle items in de tabel wel achterhalen, maar dit is niet zo'n goede methode. Je krijgt dan twee for-lussen door elkaar lopen. Zie onderstaande samplecode:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for each item in tabel.veldnaam
   for each item in request.form
    if (request.form(item) = tabel.veldnaam) then
       gevonden = true
       //doe iets
    end if
   next
   if (gevonden = false) then
    for each item in request.querystring
       if (request.querystring(item) = tabel.veldnaam) then
        // Doe iets
       end if
    next
   end if
next

In mijn formulier houdt ik dezelfde volgorde van editvelden/comboboxen e.d. aan als de kolommen in de tabel,alleen wordt dit niet in deze volgorde doorgegeven middels de request.form. Daarom ben je dus verplicht om alle items van de request.form/request.querystring te vergelijken met de kolomnamen in de tabel. weet iemand hoe ik deze code kan versnellen?

EDIT: Ik kan natuurlijk in plaats van for-lussen ook gebruik maken van de while-lussen. Zou in theorie ongeveer de helft moeten schelen. Maar is er geen betere methode dan deze FOR/NEXT of WHILE-methode.

  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 23-08 22:57
ik vindt je code niet echt mooi, maar daar was je zelf ook al achter.

je hoeft die volgorde helemaal niet aan te houden. als je een form post:
code:
1
2
3
4
5
6
<form action=pagina.asp method=post>
 <input type=text name=waarde3 value="test_waarde"> 
 <input type=text name=waarde1 value="test_waarde">
 <input type=text name=waarde2 value="test_waarde">
 <input type=submit value="druk hier">
</form>

als je dit nu wilt opslaan in een db, dan doe je zo:

-als je wilt updaten, zoek dan de juiste record op
code:
1
2
3
4
5
6
7
 SQL= "SELECT primairesleutel_van_tabel FROM tabel_naam WHERE voorwaarde = jouw_voorwaarde

    'open een recordset die aan deze voorwaarden voldoet
    RS.Open SQL, Conn, 2, 2

    If not(RS.EOF and RS.BOF) then 
    ' nu heb je de goeie recordset

-als je een nieuwe maakt begin je met
code:
1
RS.AddNew

daarna doe je:
RS.Fields.Item("veldnaam") = Request.Form("formveldnaam"), dus:
code:
1
2
3
4
RS.Fields.Item("waarde1") = Request.Form("waarde1")
RS.Fields.Item("waarde2") = Request.Form("waarde2")
RS.Fields.Item("waarde3") = Request.Form("waarde3")
.. etc

tenslotte geef je nog een
code:
1
RS.Update

verwijderen is ook heel simpel. zoek je de juiste record (zie bovenaan) en geef daarna simpelweg een
code:
1
RS.Delete

ik hoop dat dit je helpt!

chaozz.nl | RetroGameCouch


  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 12:13
Ik zit nu alleen nog met een klein probleempje. Voor de invoer van nieuwe records zijn in sommige gevallen 2 schermen nodig, omdat er in de tussentijd gegevens berekend moet worden op de server. Ik heb dit opgelost door de request.forms uit het 1e form door te geven als een request.querystring naar het derde asp-bestand. Is het mogelijk dat ik de gegevens uit het eerste form via een hidden editveld in het tweede form plaats, zodat alle gegevens uiteindelijk via een request.form binnenkomen?

  • chaozz
  • Registratie: Juni 2000
  • Laatst online: 23-08 22:57
Op vrijdag 12 april 2002 16:10 schreef TweakersOnly het volgende:
Ik zit nu alleen nog met een klein probleempje. Voor de invoer van nieuwe records zijn in sommige gevallen 2 schermen nodig, omdat er in de tussentijd gegevens berekend moet worden op de server. Ik heb dit opgelost door de request.forms uit het 1e form door te geven als een request.querystring naar het derde asp-bestand. Is het mogelijk dat ik de gegevens uit het eerste form via een hidden editveld in het tweede form plaats, zodat alle gegevens uiteindelijk via een request.form binnenkomen?
natuurlijk kan dit...
code:
1
2
... form code ... bla
<input type=hidden name=txtParameternaam value= <% request.form("txtParameternaam") %> >

dit zet je dus in je 2e form neer. dit doe je voor alle parameters uit form1 die je weer wilt meeposten... verander dus txtParameternaam in de parameters van form1 (duh!) 8-)

chaozz.nl | RetroGameCouch