[ASP] UpdateBatch gebruiken om veld te wijzigen

Pagina: 1
Acties:

  • Kamikazi
  • Registratie: Juli 2001
  • Niet online
Vrij simpel gezegd:

Ik heb een tabel met daarin een aantal gegevens (Access database).

Bijv.

ID, Klant, Gebeld

Waarden:
1, Pietersen, No

Ik probeer nu via het volgende script (er zitten een aantal voorwaarden uiteraard boven) de waarde van Gebeld op Yes te zetten:

ASP:
1
2
3
RSAddGebeld.AddNew
RSAddGebeld.Fields("Gebeld")=True
RSAddGebeld.Update


Het gaat om dit stukje code. Immers, via de method AddNew wordt er juist een nieuw record in de database toegevoegd, terwijl ik wil dat hij ID 1 veranderd.

Welk method moet ik dan aanspreken? Append wordt nml niet ondersteund bijv (ik heb mijn lijst van MSDN vandaan.

[ Voor 3% gewijzigd door Kamikazi op 29-11-2002 12:37 ]


Verwijderd

Waarom gebruik je geen sql ?

Verwijderd

Zonder het aanroepen van de .AddNew() methode doe je een edit op het huidige record, die met .Update() dan opgeslagen wordt. Zorg wel dat je RecordSet updateable is. Zoals het in MSDN staat bij de Update methode: http://msdn.microsoft.com...do270/htm/mdmthupdate.asp
Use the Update method to save any changes you make to the current record of a Recordset object since calling the AddNew method or since changing any field values in an existing record. The Recordset object must support updates.
Overigens, .UpdateBatch() is een hele andere methode dan .Update().

  • Kamikazi
  • Registratie: Juli 2001
  • Niet online
Dat was ik net van plan om te proberen :)

  • Kamikazi
  • Registratie: Juli 2001
  • Niet online
Ik heb nu dit geprobeerd

Flash ActionScript:
1
2
RSAddGebeld.Update
RSAddGebeld.Fields("Gebeld")=True


Ik krijg nu op regel 1 de error Either BOF or EOF is True, or the current record has been deleted.

Iemand een idee hoe dat kan?

  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Wat update je dan? Je gaat iets updaten voordat je het veranderd. En blijkbaar is het geen edit, dus je zult ook addnew moeten gebruiken.

  • Kamikazi
  • Registratie: Juli 2001
  • Niet online
Supervisor schreef op 29 november 2002 @ 12:40:
Wat update je dan? Je gaat iets updaten voordat je het veranderd. En blijkbaar is het geen edit, dus je zult ook addnew moeten gebruiken.
Ik probeer het veld "Gebeld" te veranderen van False naar True. AddNew moet ik juist niet gebruiken, want dan voegt hij een nieuw record in, terwijl ik wil dat hij het huidige record veranderd.

Verwijderd

Ten eerste moet je .Update pas aanroepen nadat je een aanpassing hebt gedaan.
Ten tweede moet er een huidig record zijn dat je gaat aanpassen. Hoe vul je de recordset? Laat eens wat meer van je code zien?

  • oZy
  • Registratie: Juli 2001
  • Laatst online: 28-08 16:38

oZy

open de juiste record: select * from blaat where id = 1
doe vervolgens de mutatie: rs.field("gebeld") = true
en voer dan de update uit: rs.update

zo moeilijk is het toch niet? www.asp101.com

  • Kamikazi
  • Registratie: Juli 2001
  • Niet online
Paar wijzigingen, zal ook even wat meer code posten:

ASP:
1
2
3
4
5
Set RSReadID = Server.CreateObject("ADODB.recordset") 
ReadID="SELECT * FROM tbl_customer WHERE tbl_customer.ID = " & KlantID & ""
RSReadID.Open sqlReadID, dbc, adOpenStatic, adLockReadOnly, adCmdText

IDKlant = RSReadID.Fields.Item("ID").Value


Goed...

ASP:
1
2
3
If IDKlant = "4" then
RSAddGebeld.Fields("Mutation")=True
RSAddGebeld.Update


Het 2e stuk code staat in een loop...

Hij geeft dus de fout in het 2e stuk code, op dat is daar regel 2.

Buiten de loop staat de .UpdateBatch

[ Voor 11% gewijzigd door Kamikazi op 29-11-2002 13:05 . Reden: Weergeven ID... ]


Verwijderd

Waarom een loop? Als het goed is krijg je maar 1 klant terug. Doe je al een .Next binnen de loop voordat je de update doet? En waarom roep je in hemelsnaam .UpdateBatch aan? Die heb je helemaal niet nodig.

Edit:
Zet nou even de hele lap code neer, incl. loop, want nu blijft het nog gokken.

[ Voor 18% gewijzigd door Verwijderd op 29-11-2002 13:08 ]


  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Kamikazi schreef op 29 november 2002 @ 13:04:
Paar wijzigingen, zal ook even wat meer code posten:

ASP:
1
2
3
4
5
Set RSReadID = Server.CreateObject("ADODB.recordset") 
ReadID="SELECT * FROM tbl_customer WHERE tbl_customer.ID = " & KlantID & ""
RSReadID.Open sqlReadID, dbc, adOpenStatic, adLockReadOnly, adCmdText

IDKlant = RSReadID.Fields.Item("ID").Value
Nu open je een recordset met als Sql (SqlReadId), maar die bestaat ja helemaal niet. Je gebruikt readid hiervoor.

Waarom gooi je achter je Sql weer & "" ?? Is toch nergens voor nodig.

[edit]Gooi aan het begin van je code eens het volgende
code:
1
<% Option Explicit %>

Dan moet je alle variabelen dimmen, maar het voorkomt zulke fouten.

[ Voor 17% gewijzigd door Phenomenon op 29-11-2002 13:13 ]

Pagina: 1