[asp][[ms sql] update loopje

Pagina: 1
Acties:

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 16:14
ik heb nu een raar probleempje denk ik (hoop ik, anders sta ik weer voor lul ;))

Een pagina bevat een form.
In dit form staan dus input boxjes die per keer een nieuw naampje krijgen dus:
code:
1
2
3
4
5
For i = 0 to session("aantal") -1
--knip--
<input type="text" name="naam<%=I%>" value="<%=(rs_overzicht.Fields.Item("naam").Value)%>">
--knip--
etc. etc. etc.

Werkt allemaal perfect. Dat form post dus naar een pagina die die waardes update in de database.

Zie onderstaande code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim i, naam, adres, pcwp
for i = 0 to session("aantal") -1
naam = trim(request("naam"&i))
adres = trim(request("adres"&i))
pcwp = trim(request("pcwp"&i))
set rs_update = Server.CreateObject("ADODB.Command")
rs_update.ActiveConnection = MM_Verhuiskaart_STRING
rs_update.CommandText = "UPDATE dbo.bestellingen SET naam = '"&naam&"', adres = '"&adres&"', pcwp = '"&pcwp&"' WHERE userid = '"&Session("userid")&"'"
rs_update.CommandType = 1
rs_update.CommandTimeout = 0
rs_update.Prepared = true
rs_update.Execute()
next

Dit werkt dus niet... hij update dan alle waardes met de laatste. Dus in het geval van bijv. session aantal = 5 update ie alle records met de waarde die in request("naam5") staan....

Nu ben ik dus bezig geweest om uit te vogelen waar het aan lag, maar kom er niet uit.

Ik heb dus response.writes gedaan op de volgende manier:
code:
1
2
3
4
5
for i = 0 to session("aantal") -1
response.write naam&"<br>"
response.write adres&"<br>"
response.write pcwp&"<br>"
next

en dat ging gewoon goed. Dus ik dacht, hoppa, maar niet dus...

Met een normale insert lukt het wel op deze manier, alleen een update niet...

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


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

WHERE userid = '"&Session("userid")&"'"
je update dus vijf keer dezelfde record. logischerwijs blijft alleen de laatste wijziging staan.

probeer trouwens zo min mogelijk met sessions te werken, zijn onoverzichtelijk, en slecht voor de performance.

kaart != map && bottel != fles
Wacht op antwoord


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 16:14
het zijn dus bijvoorbeeld 5 records in de volgende structuur:
code:
1
2
3
4
5
naam 1 | adres 1 | pcwp1 | username
naam 2 | adres 2 | pcwp2 | username
naam 3 | adres 3 | pcwp3 | username
naam 4 | adres 4 | pcwp4 | username
naam 5 | adres 5 | pcwp5 | username

Zoals je ziet zijn het 5 verschillende gegevens, alleen met dezelfde username...

Er moet van te voren eerst ingelogd worden wil je dit kunnen doen. Vandaar dat ik met een session werk.

/edit: net ffies geprobeer met een while loop.... werkte ook niet... nu worden de waardes geupdate met " "

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


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

met die session doelde ik meer op session(aantal), die lijkt me op een andere manier op te lossen.

Als je geen unieke sleutel hebt voor de records, is het dan geen plan om eerst delete * te doen, en vervolgens inserten in een loopje :?

kaart != map && bottel != fles
Wacht op antwoord


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 16:14
ik heb wel een unieke sleutel...
gewoon een Id (met autonummering dus :))

Volgens mij is eerst deleten en dan inserten niet echt een oplossing volgens mij omdat er nog meer gegevens instaan die _niet_ aangepast kunnen/mogen worden.

Ow wacht, schiet me in een keer iets te binnen. Ik zou natuurlijk op die form pagina ook alle waardes die niet geupdate mogen worden ff in een hidden o.i.d. zetten.

Ga ik nog ff proberen.....

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


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Wil niet negatief doen maar je bent imo beetje omslachtig bezig om een relatief simpel iets te bereiken, daarnaast zou ik je sterk adviseren om stored procedures te gebruiken voor dit soort zaken, zeker omdat je bezig bent met dynamische field updates.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Je zult ook iets moeten toevoegen om die 5 verschillende records te kunnen onderscheiden (bv een volgnummer) daarnaast vraag ik me af of je DB-model wel helemaal OK is...

Wat je (om dit wrkend te krijgen) moet doen is in de where ook nog iets als "volgnummer = i" toevoegen..

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 16:14
Op woensdag 03 april 2002 11:06 schreef raptorix het volgende:
Wil niet negatief doen maar je bent imo beetje omslachtig bezig om een relatief simpel iets te bereiken, daarnaast zou ik je sterk adviseren om stored procedures te gebruiken voor dit soort zaken, zeker omdat je bezig bent met dynamische field updates.
Dank je voor de tip, en ik weet da'k omslachtig bezig ben, maar ben wat betreft sql nog een beetje een n00b. Dus stored procedures etc. etc. is voor mij nog helemaal nieuw.

Ik wil niet lullig doen, maar vind je het erg als ik dit (stored procedures) voor een andere keer oppak? Vind dit al lastig zat ;)

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


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 16:14
Op woensdag 03 april 2002 11:07 schreef Janoz het volgende:
Je zult ook iets moeten toevoegen om die 5 verschillende records te kunnen onderscheiden (bv een volgnummer) daarnaast vraag ik me af of je DB-model wel helemaal OK is...

Wat je (om dit wrkend te krijgen) moet doen is in de where ook nog iets als "volgnummer = i" toevoegen..
Hmm, zo'n volgnummer zit niet in de db. Betekent dit dus dat ik het helemaal (dus de structuur van die db) opnieuw moet gaan opzetten?

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


Verwijderd

Stored Procedures zijn helemaal niet moeilijk. Je moet gewoon een een beetje TSQL kennen, maar goed. Ik zou wel een ff je Object afsluiten als je hebt geupdate. Dit kunnen enorm geheugen lekken veroorzaken(Ik heb ervaring!)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Op woensdag 03 april 2002 11:13 schreef TeeDee het volgende:

[..]

Hmm, zo'n volgnummer zit niet in de db. Betekent dit dus dat ik het helemaal (dus de structuur van die db) opnieuw moet gaan opzetten?
ja


Lijkt nu mischien veel werk, maar het zal je later veel wekr besparen.. Daarnaast vraag ik me af of je DB ontwerp sowieso wel helemaal juist in elkaar zit...

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 16:14
Op woensdag 03 april 2002 11:40 schreef Janoz het volgende:

[..]

ja


Lijkt nu mischien veel werk, maar het zal je later veel wekr besparen.. Daarnaast vraag ik me af of je DB ontwerp sowieso wel helemaal juist in elkaar zit...
:) achteraf gezien misschien niet nee... denk dat dat de enigste oplossing is op dit moment... een extra kolom toevoegen in de db met een volgnummer erin...

/edit: thanks Janoz, met een volgnummer erin werkt ie perfect... supah!!!

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

Pagina: 1