Avatar billede ripley Nybegynder
03. juni 1999 - 14:40 Der 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):

1. if isEmpty(rs) then...
og:
2. if rs.EOF then

Avatar billede stoffer Nybegynder
03. juni 1999 - 14:50 #1
tæt på.

if (rs.EOF or rs.BOF) then

så virker det!
Avatar billede codemiss Nybegynder
03. juni 1999 - 14:54 #2
Prøv dette

Do while not rs.EoF
  If Not re.EoF Then
    response.write rs.fields("kunde")
  End If
  rs.MoveNext
Loop

Hvis der så er noget i din select skulle det gerne vises!
Avatar billede stoffer Nybegynder
03. juni 1999 - 15:25 #3
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

osv....ovs....
Avatar billede ripley Nybegynder
03. juni 1999 - 15:32 #4
Hm!
Prøvede Stoffers forslag - jeg får bare en irriterende fejlmeddelelse om, at objektet ikke understøtter denne metode! :-(
Avatar billede stoffer Nybegynder
03. juni 1999 - 15:35 #5
<%
    dim Path, Connect, RS   

    Set Connect = Server.CreateObject("ADODB.Connection")
    Path = "DBQ=" & server.mappath("/stien_til_din_database_og_database.mdb")
    Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)};" & Path

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


   
%>


det virker!
Avatar billede lrj Nybegynder
03. juni 1999 - 15:36 #6
Du kunne også lave følgende lille trick:

SQL = "select count(*) as antal from kunder where kunde='"  & request("kunde") & "';"

Set RS=Connect.Execute(SQLQuery)

så kan du lave en

antal = rs("antal")
response.write "Der er " & antal & "der matcher"
Avatar billede stoffer Nybegynder
03. juni 1999 - 15:38 #7
100% og jeg har det bruger det selv med min PWS - så det er et andet sted fejlen ligger
Avatar billede stoffer Nybegynder
03. juni 1999 - 15:40 #8
-----> lrj

ja, eller hvis du bruger Recordset

kan du bruge RS.RecordCount
Avatar billede stoffer Nybegynder
03. juni 1999 - 15:42 #9
Hvis det ikke virker så må jeg jo bare se din kode......
Avatar billede lrj Nybegynder
03. juni 1999 - 15:48 #10
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...
Avatar billede fey.dk Nybegynder
03. juni 1999 - 17:04 #11
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.

Og det er et faktum :o).
Avatar billede stoffer Nybegynder
03. juni 1999 - 17:17 #12
lrj ---->

Ja det har du ret i - men det kan lade sig gøre :-)
Avatar billede ripley Nybegynder
03. juni 1999 - 20:43 #13
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

'if ---her skal det stå --- then%>

Avatar billede ripley Nybegynder
03. juni 1999 - 20:44 #14
Skriver jeg:

rs.eof - så får jeg en fejlmeddelelse om, at den metode ikke kan bruges på dét objekt.
:-(
Avatar billede mukke Nybegynder
03. juni 1999 - 20:56 #15
Prøv:

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
Avatar billede mukke Nybegynder
03. juni 1999 - 20:57 #16
Grunden til at du får den fejlmeddelse er nok, at du aldrig specifikt opretter et ægte recordset
Avatar billede fey.dk Nybegynder
03. juni 1999 - 20:58 #17
Prøv at lade være med at dimme rs og brug i stedet "set rs = blabla".
Avatar billede stoffer Nybegynder
03. juni 1999 - 21:18 #18
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

'if ---her skal det stå --- then%>

Avatar billede mukke Nybegynder
03. juni 1999 - 21:22 #19
*** Gør lige opmærksom på at stoffers ide er at sætte et "set" ind før rs = Connect........

(for de der ikke lige ummidelbart kan se hvor han vil hen)
Avatar billede ripley Nybegynder
03. juni 1999 - 21:39 #20
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!
Avatar billede stoffer Nybegynder
03. juni 1999 - 22:07 #21
takker ;-)
Avatar billede stoffer Nybegynder
02. september 1999 - 13:58 #22
------>til GORBA
<%
'hvis du skal kalde et felt med den sætning jeg havde længere oppe kunne du 'f.eks. sige Felt = RS("Dit_felt_i_Access_tabelle")




'hvis du så skal have alle felter skrevet ud siger du:

do until RS.EOF

Felt = RS("Dit_felt_i_Access_tabelle")
%>
<%=felt%>
<%
  RS.MoveNext
  %>
<%
Loop

  RS.Close
  %>
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