Avatar billede kasseper Nybegynder
05. juli 2000 - 14:15 Der 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
Avatar billede flemming Nybegynder
05. juli 2000 - 14:35 #1
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
Avatar billede flemming Nybegynder
05. juli 2000 - 14:38 #2
Faktisk tror jeg at det er variant typerne i VBScript der kan drille dig, forsøg derfor med følgende:

find = Request.Form("nr")
If IsNumeric(find) Then
  intFind = CInt(Find)
Else
  Response.Write("Error in parameter " &find)
End If


Avatar billede kasseper Nybegynder
05. juli 2000 - 14:43 #3
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.....
Avatar billede sv Nybegynder
05. juli 2000 - 14:48 #4
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...
Avatar billede flemming Nybegynder
05. juli 2000 - 14:58 #5
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(..)
Avatar billede kasseper Nybegynder
05. juli 2000 - 15:02 #6
Jeg kontrollere vender tilbage senere
Avatar billede flemming Nybegynder
05. juli 2000 - 15:22 #7
Rogder that ...
Avatar billede boye Nybegynder
05. juli 2000 - 15:56 #8
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.

Jeg ved ikke om det hjælper dig noget...
Avatar billede sv Nybegynder
05. juli 2000 - 19:17 #9
Når man skal lave om fra string til integer og omvendt anvender man
Følgende metode:

variable1 =  3
variable2 = "3"

cStr(variable1) ----> "3"
cInt(variable2) ---->  3

convert-to-String og convert-to-Integer
Avatar billede flemming Nybegynder
05. juli 2000 - 21:57 #10
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.
Avatar billede kasseper Nybegynder
05. juli 2000 - 23:48 #11
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....


Avatar billede kasseper Nybegynder
20. juli 2000 - 12:09 #12
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 )
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