03. juni 1999 - 14:40Der er
21 kommentarer og 1 løsning
Undersøge recordset
Er der nogen der ved, hvordan man finder ud af, om et recordset er tomt? Jeg har sat et recordsæt lig med en sql-forespørgsel, der henter en kunde frem ud fra kundeid. Nu vil jeg gerne se, om kunden var i databasen. Hvordan gør jeg det nemmest? Jeg har forsøgt med følgende (uden held):
SQLQuery = "SELECT kundeid FROM kunder WHERE kunde= '" & request("kunde") & "';" Set RS=Connect.Execute(SQLQuery) If (RS.BOF Or RS.EOF) Then Response.Write("der er ingen kunder der matcher") Else
SQLQuery = "SELECT kundeid FROM kunder WHERE kunde= '" & request("kunde") & "';" Set RS=Connect.Execute(SQLQuery) If (RS.BOF Or RS.EOF) Then Response.Write("der er ingen kunder der matcher") Else
stoffer> Men det er vist lidt skummelt - når man laver en connect.execute(sql) får man et recordset tilbage - men det er ikke magen til hvis man laver et recordset og så udfører sql sætningen derfra. Det giver i hvert fald nogle sjove fejl...
if rs.eof then ' ingen poster ..vil altid afgøre om et recordset er tomt eller ej (hvis det er det første der bliver udført efter selve eksekveringen af SQL'en). Hvis det ikke giver noget brugbart resultat, er der noget galt med din SELECT.
Virker stadig ikke. Nu får I koden - så kan I måske bedre gennemskue, hvad der er galt:
Dim connect, rs, id Set connect = Server.CreateObject("ADODB.Connection") id = Session("CustomerID") Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("EDBoeger.mdb") rs = Connect.execute("Select * from Kunder where kundenr= " & id) //Id er et tal
Virker stadig ikke. Nu får I koden - så kan I måske bedre gennemskue, hvad der er galt:
Dim connect, rs, id Set connect = Server.CreateObject("ADODB.Connection") id = Session("CustomerID") Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("EDBoeger.mdb")
SQL = "Select * from Kunder where kundenr= " & id Set rs = Server.Createobject("ADODB.Recordset") rs.open SQL, connect, 3, 3
herefter skulle
if rs.eof gerne kunne bruges.
Hvis det IKKE virker, så prøv at lægge en rs.MoveFirst ind før if rs.eof
Dim connect, rs, id Set connect = Server.CreateObject("ADODB.Connection") id = Session("CustomerID") Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("EDBoeger.mdb") set rs = Connect.execute("Select * from Kunder where kundenr= " & id) //Id er et tal
Tja..jeg var lige ved at afvise stoffers svar for at tildele point´ene til fey.dk - for det eneste der skulle til var at sætte "set" foran rs = connect osv. - så virkede det glimrende. Men så gik jeg tilbage i kommentarerne - og stoffer havde rent faktisk sat det "set" ind først - det så jeg bare ikke i min desperation og irritation. Så nu vil jeg med retfærdigheden for øje give dig pointene, Stoffer. Og tak for hjælpen til alle!
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.