Avatar billede Slettet bruger
16. november 2003 - 00:11 Der er 5 kommentarer og
1 løsning

Either BOF or EOF is True?

Jeg er ved at lave en øvelse, hvor jeg skal ændre noget kode sådan at der ikke kommer fejl, hvis man prøver at oprette et brugernavn der findes i forvejen, men den kommer med denne fejlmeddelelse:

ADODB.Field error '800a0bcd'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/bipsen/kap6/nyperson.asp, line 30
-------------
Her er koden:
<% @Language="JScript" %>
<%
  Response.Buffer=true
  Response.Expires=-1441

%>

<%

var navn,kode,ald, tabel, forbindelse, fbstr, ok

navn = Request.Form("navn")+""
kode = Request.Form("kode")+""
ald = Request.Form("alder")
ok = false

  forbindelse = Server.CreateObject("ADODB.Connection");
  fbstr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" + Server.MapPath("\\bipsen\\db\\mindb.mdb")
  forbindelse.Open (fbstr);

tabel = Server.CreateObject("ADODB.Recordset")
tabel.open("tabel1", forbindelse,1,2) // åbn til tilføjelser

tabel.MoveFirst
 
while (!tabel("navn") == navn || !tabel.EOF)
  {
  tabel.MoveNext
  }

if (tabel("navn") == navn)
  {
  Response.Write("Brugernavn i brug")
  }
else
  {
  ok = true
  }

if (ok)
  {
  tabel.Addnew
  tabel("navn") = navn
  tabel("kode") = kode
  tabel("alder") = ald
  tabel.Update
  Response.Write("Personen er tilføjet.")
  }



tabel.Close
tabel=null

forbindelse.Close
forbindelse=null

%>


Håber i kan hjælpe!!
Avatar billede eagleeye Praktikant
16. november 2003 - 00:16 #1
I bedste fald kan du nøjes med at lave denne:

while (!tabel("navn") == navn || !tabel.EOF)
  {
  tabel.MoveNext
  }


Om til dette:

while (!tabel.EOF || !tabel("navn") == navn)
  {
  tabel.MoveNext
  }
Avatar billede eagleeye Praktikant
16. november 2003 - 00:17 #2
hov så lige denne:

tabel.MoveFirst

Den vil også fejle hvis tabel er tomt, og defautl skulle recordset starte på første records så du behøver ikke .MoveFirst linjen
Avatar billede eagleeye Praktikant
16. november 2003 - 00:21 #3
det skal laves om til en AND i whilen så den kun behøver tjekke den første..

while (!tabel.EOF && tabel("navn") == navn)
Avatar billede Slettet bruger
16. november 2003 - 00:38 #4
Nu kommer den ikke med fejlmeddelelsen læggere men bare et tomt vindue... Og den nye bruger er ikke tilføjet i tabellen
Avatar billede eagleeye Praktikant
16. november 2003 - 00:44 #5
Den måde man normalt bruger til at finde ud af om en bruger findes i forvejen i en databaen er ved at lave en SELECT SQL med en WHERE som søger i databasen oom det brugernavn findes. Gør det ikke vil recordset'et være tomt:

SQL = "SELECT * FROM tabel1 WHERE navn = '" + navn + "'";
tabel = Server.CreateObject("ADODB.Recordset")
tabel.open(SQL, forbindelse,1,2) // åbn til tilføjelser
if (tabel.EOF) {
  //brugernavn findes ikke tilføj
  tabel.Addnew
  tabel("navn") = navn
  tabel("kode") = kode
  tabel("alder") = ald
  tabel.Update
  Response.Write("Personen er tilføjet.")
}
Avatar billede Slettet bruger
16. november 2003 - 00:46 #6
Det prøver jeh tak...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester