05. juli 2000 - 14:15Der er
11 kommentarer og 1 løsning
string eller ikke en string - HASTER(lidt)
Jeg har to sider, en hvor man kan indtaste et nummer, og næste side skal så finde oplysninger i en database via det nummer, koden ser således ud : ( Jeg har skåret unødigt fra )...
---------------------------------------
Dim find find = Request.Form("nr") if (find <> "")Then objRec.MoveFirst Do While Not objRec.EOF if(objRec("ID") = find)Then emnenr = objRec("ID") telefon = objRec("Telefon") Exit Do End If objRec.MoveNext Loop
else
------------------------------------- Problemet er at der findes ikke noget data i databasen, men hvis jeg istedet for denne linie :
if(objRec("ID") = find)Then
f.eks. skriver
if(objRec("ID") = "3")Then
eller en hvilken som helst andet ciffer så fungere deet helt fint....
Jeg kan fint skrive find ud på siden, så det må være en streng, men hvorfor den ikke vil finde den i basen kan jeg ikke forstå, er der nogen der kan hjælpe....HASTER
Jeg vil foreslå dig at lave opslaget direkte i SQL istedet for at selv søge recordsettet manuelt igennem:
dvs:
intfind = Request.Form("nr") ' check lige at nummer er valid før du fortsætter. feks. med IsNumeric ...
strSQL = "SELECT * From tblPerson WHERE ID=" intFind Set objRS = Conn.Execute(strSQL) If NOT objRS.EOF Then ' Match emnenr = objRec("ID") telefon = objRec("Telefon") Else Response.Write("Sorry - no records found") End
Jamen, det må kunne lade sig gøre med den metode jeg bruger, når jeg kan skrive en streng med et tal i, hvilket også er det der returneres fra en Request.Form, hvis det er et tekst felt man ber om...Så virker det jo efter hensigten.....
Måske er det funktionen cInt du tænker på ???? stregn = cInt(request.form("tal")) men jeg synes at det er spild af resourcer at åbne alle posterne, og kigge dem igennem for at finde en post....Jeg ville til hver en tid bruge flemmings kode...
Mit bud er at din sammenligning går galt pga af type inkonsistens.
Lad os sige at "find" indeholder "3" og at RS("ID") indeholder 3
Udtrykket: "objRec("ID")=find" vil derfor returnere FALSE fordi "3" ikke er lig 3.
Hvilken type er feltet objRec("ID") i databasen ?
Hvis du vil være sikker foretager du defor specifik typekonvertering idet form-parametre normalt altid returneres som "strenge".
For at ikke få en runtime fejl inden du laver konverteringe bør du selvfølgelig teste om tallet som du er ved at konvertere faktisk er numersisk aka IsNumeric(..)
Jeg mener der er en eller anden ting der kan lave "3" om til 3 og 3 om til "3". I Qbasic ville man skrive tal = val("3"), så ville tallet være 3, men jeg har prøvet og det dur ikke i VB, men jeg er sikker på at der er noget tilsvarende...
Og den omvendte er: tekst = str$(3) $'et skal nok ikke med da det er fra qbasic.
Funktionen hedder CStr. Men det springende punkt er her om ID er et tal eller en streng. Umiddelbart vil jeg mene at det ser ud til at ID er et tal - og så ville det være ulogisk at foretage streng sammenligning.
Johh flemming men så plejer IE at brokke sig over et type mismatch, men det bliver her meget mystisk for ID er et tal, fungere som en Pnøgle i en access base, men endnu mere sjovt er det så at alting fungere fint når jeg istedet for find indsætter en streng med et tal i....??? Jeg modtager iøvrigt ingen fejl, ved brugen af find, jeg modtager bare ingen data,,,, jeg har iøvrigt ikke prøvet din løsning endnu flemming, da jeg ikke er hjemme til at prøve, men imorgen skal jeg kaste mig ud i det....
Hej Flemming undskyld at du måtte vente så længe på et haster ? point, jeg havde mange problemer med at få det til at virke men du satte mig på rette vej....( min problemer var DB problemer så din kode var OK )
Synes godt om
Ny brugerNybegynder
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.