Avatar billede fenriz Nybegynder
08. december 2006 - 14:35 Der er 27 kommentarer og
2 løsninger

Sammenligne tekst

Jeg har et problem som jeg ikke helt forstår...

Hvorfor kan jeg ikke få denne lille If stament til at virke?

If rs("Type") = "Debitor" Then
SQL= "SELECT * FROM dbo.debitor where AccountNumber='" & rs("Konto") & "'"
                   
rs2.Open SQLDeb,Conn
                           
Else

                           
SQL = "SELECT * FROM dbo.kreditor where AccountNumber='" & rs("Konto") & "'"

rs2.Open SQL,Conn

Den vælger hele tiden den sidste, så den vil ikke sammenligne...
Avatar billede fennec Nybegynder
08. december 2006 - 14:39 #1
indeholder rs("Type") "Debitor" værdien eller et ID til en anden tabel hvor det id svare til "Debitor"??
Avatar billede softspot Forsker
08. december 2006 - 14:39 #2
Det kan være fordi rs("Type") ikke har samme "case" som den streng du sammenligner med. En typisk metode er at konvertere begge strenge til upper eller lower case inden sammenligningen. Således:

If lcase(rs("Type")) = "debitor" Then
' så er de ens og "Debitor" = "dEbITor" osv...
else
' teksterne indeholder ikke samme bogstaver i samme sekvens...
end if
Avatar billede thesurfer Nybegynder
08. december 2006 - 14:39 #3
Du skal højst sandsynligt konvertere rs("Type") til en streng først..

Dvs:

if CStr(rs("type")) = "Debitor" then
Avatar billede fennec Nybegynder
08. december 2006 - 14:41 #4
Prøv evt at udskrive betingelsen:
response.write rs("Type") &"="& "Debitor"
Avatar billede fenriz Nybegynder
08. december 2006 - 14:46 #5
Hvis jeg udkriver denne her response.write rs("Type") &"="& "Debitor"

Så skriver siden "Debitor=Debitor"

Den hvis stadig kun kreditor og intet på debitor
Avatar billede softspot Forsker
08. december 2006 - 14:47 #6
Har du prøvet metoden i 08/12-2006 14:39:38?
Avatar billede softspot Forsker
08. december 2006 - 14:48 #7
...selvom jeg må indrømme at det er svært at få andet end true ud af det du siger den skriver ;-)
Avatar billede ffsoft Praktikant
08. december 2006 - 14:48 #8
rs2.Open SQLDeb,Conn
Else
SQL = "SELECT * FROM dbo.kreditor where AccountNumber='" & rs("Konto") & "'"
rs2.Open SQL,Conn

Det ene SQL udtryk hedder SQLDeb og det andet SQL ................
de skal vel være det samme navn.
Avatar billede thesurfer Nybegynder
08. december 2006 - 14:49 #9
softspot> Ifølge 08/12-2006 14:46:06 ser det jo rigtigt ud: Så skriver siden "Debitor=Debitor"

fenriz> Prøv lige 08/12-2006 14:39:50..
Avatar billede fenriz Nybegynder
08. december 2006 - 14:50 #10
ja de er også testet... rs("Type") indeholder "Debitor"

Jeg ved det, da jeg gør det ved at man kører musen hen over enten "Kreditor" eller
"Debitor" for at se dens oplysninger...
Avatar billede thesurfer Nybegynder
08. december 2006 - 14:50 #11
ffsoft> Det kan ikke være det der er problemet..

Problemet er følgende

hvis betingelse er lig noget så
  udfør A
ellers
  udfør B
slut hvis

Den udfører B altid.. hvilket betyder at "betingelse" ikke er lige "noget"..
Avatar billede thesurfer Nybegynder
08. december 2006 - 14:50 #12
fenriz> Prøv lige 08/12-2006 14:39:50..
Avatar billede softspot Forsker
08. december 2006 - 14:52 #13
Kan du ikke vise lidt mere kode end lige de 5 linier, for som ffsoft er inde på, kunne det være noget med konteksten hvori betingelsen fungerer (selvom jeg ikke er helt enig i ffsoft's argumentation)...?
Avatar billede softspot Forsker
08. december 2006 - 14:53 #14
thesurfer (vedr. 08/12-2006 14:49:09) > lcase konverterer til string, så det burde også være på plads hvis min metode benyttes :)
Avatar billede fenriz Nybegynder
08. december 2006 - 14:58 #15
Her er lidt mere af koden:

<table width="870" border="0" cellpadding="5" cellspacing="0" class="Lager"  onmouseover="this.style.backgroundColor='#B3C4CB'" onmouseout="this.style.backgroundColor='#FFFFFF';">
      <tr>
        <td width="148" height="30" valign="top"><% =rs("Varenummer")%></td>
        <td width="72" valign="top"><% =rs("Dato") %></td>
        <td width="60" align="right" valign="top"><% =rs("Antal") %></td>
        <td width="53" align="right" valign="top"><% =rs("Stkpris") %></td>
        <td width="75" align="right" valign="top"><% =rs("Liniebelob") %></td>
        <td width="77" align="center" valign="top"><% =rs("Valutakode") %></td>
        <td width="75" align="center" valign="top"><% =rs("Type") %></td>
        <td width="86" align="center" valign="top">
        <a href="posterview.asp" target="view" class="thumbnail">
        <% =rs("Konto") %><span>
                    <%
                    Dim SQLKre, SQLDeb
                   
                    AabenDB_KreDeb
                       
                    If CStr(rs("Type"))  = "Debitor" Then
       
                           
                            SQLDeb = "SELECT * FROM dbo.Debitor where AccountNumber='" & rs("Konto") & "'"
                           
                           
                            rs2.Open SQLDeb,Conn
                           
                            Else
                               
                                   
                                    SQLKre = "SELECT * FROM dbo.Kreditor where AccountNumber='" & rs("Konto") & "'"
                                   
                                   
                                    rs2.Open SQLKre,Conn

                            Do Until rs2.EOF
                       
                   
            %>
           
            <table width="256" border="0" cellpadding="0" cellspacing="0">
              <tr>
                <td width="115" height="19" valign="top" class="DetalTblColor">Account number: </td>
                <td width="144" valign="top" class="DetalTblColor"><% =rs2("AccountNumber") %></td>
              </tr>
              <tr>
                <td height="19" valign="top">Navn:</td>
                <td valign="top"><% =rs2("Name") %></td>
              </tr>
              <tr>
                <td height="19" valign="top" class="DetalTblColor">Adresse: </td>
                <td valign="top" class="DetalTblColor"><% =rs2("Address1") %></td>
              </tr>
              <tr>
                <td height="19" valign="top">Adresse 2: </td>
                <td valign="top"><% =rs2("Address2") %></td>
              </tr>
              <tr>
                <td height="19" valign="top" class="DetalTblColor">Adresse 3: </td>
                <td valign="top" class="DetalTblColor"><% =rs2("Address3") %></td>
              </tr>
              <tr>
                <td height="19" valign="top">Land:</td>
                <td valign="top"><% =rs2("Country") %></td>
              </tr>
              <tr>
                <td height="19" valign="top" class="DetalTblColor">Telefon nr.: </td>
                <td valign="top" class="DetalTblColor"><% =rs2("Phone") %></td>
              </tr>
            </table>
            <%
                                rs2.MoveNext
                                loop
                                End If
                                   
                                   
            %>


       
        </span></a>
        </td>
        <td width="114" align="center" valign="middle"><% =rs("Sagnummer") %></td>
      </tr>
     
                  <%
           
            rs.MoveNext
            If rs.EOF Then exit for
            Next
            End If
            rs.close
            %>
     
    </table>
Avatar billede fenriz Nybegynder
08. december 2006 - 14:59 #16
"thesurfer (vedr. 08/12-2006 14:49:09) > lcase konverterer til string" virker desværre ikke...
Avatar billede thesurfer Nybegynder
08. december 2006 - 15:04 #17
fenriz> Prøv lige 08/12-2006 14:39:50.. :-)

Har du prøvet med CStr(rs("type")) i stedet for bare rs("type")?

Det har du ikke svaret på endnu..
Avatar billede thesurfer Nybegynder
08. december 2006 - 15:05 #18
softspot> Det kan jeg godt se logikken i.. det er nok de færreste ting, der har en lowercase/uppercase tilstand.. :-)
Avatar billede softspot Forsker
08. december 2006 - 15:19 #19
thesurfer > ja, men da det jeg sammenligner med er lowercase (det kan jeg jo styre i.o.m. det er en konstant, jf. mit eksempel), så er der jo ikke nogen grund til at kalde lcase på den streng - det ville være åbenlys spild af resurser...
Avatar billede thesurfer Nybegynder
08. december 2006 - 15:25 #20
softspot> Enten jeg misforstet 08/12-2006 15:19:25, eller også har du misforstået 08/12-2006 15:05:22.. :-)

Pointen var: LCase(rs("Type")) skulle gerne automatisk konvertere rs("Type") til en streng, da man f.eks. ikke kan konverete tal til lowercase/små bogstaver.. det får man ikke noget ud af..

Med andre ord: Jeg er enig i din konklusion i 08/12-2006 14:53:19..
Avatar billede thesurfer Nybegynder
08. december 2006 - 15:26 #21
Stavefejl kan og vil forekomme.

fenriz> Kan vi få en status? Har du prøvet det der står i 08/12-2006 14:39:38 og i 08/12-2006 14:39:50?
Avatar billede softspot Forsker
08. december 2006 - 15:27 #22
thesurfer > Ja, så har jeg misforstået dig (jeg undskylder :))
Avatar billede softspot Forsker
08. december 2006 - 15:34 #23
fenriz > Jeg har muligvis overset noget og ikke helt forstået den opgave du forsøger at løse, men såvidt jeg kan se, skal den forspørgsel du laver i rs2 kun brugesi tilfælde af det er en kreditor. Hvis tabellen skal udskrives uanset hvad, så burde der vel være en

    End If

umiddelbart efter linien:

    rs2.Open SQLKre,Conn

ellers kan jeg som sagt ikke se formålet med at åbne rs2 i tilfælde af rs("type") = "Debitor"...

Desuden undrer jeg mig lidt over denne konstruktion:

    If rs.EOF Then exit for
    Next
  End If

da jeg ikke kan finde nogen for eller for each nogen steder i din kode. Er det hele koden du har vist her eller har du klippet inde midt i den?
Avatar billede fenriz Nybegynder
12. december 2006 - 11:23 #24
Arrgh.. da jeg ændrede den sidste "End If" så virkede det !!!

Så jeg vil mene det er en kombination af "CStr(rs("type"))" fra "thesurfer" og "Softspot" svar...
Avatar billede softspot Forsker
12. december 2006 - 12:03 #25
Kommer her :)
Avatar billede fenriz Nybegynder
12. december 2006 - 12:55 #26
Jeg mangler lige at "thesurfer" smider et svar :)
Avatar billede softspot Forsker
12. december 2006 - 12:59 #27
No hurry ;-)
Avatar billede thesurfer Nybegynder
12. december 2006 - 14:06 #28
Ingen grund til at vente længere.. her er et svar.. :-)
Avatar billede softspot Forsker
13. december 2006 - 13:55 #29
Tak for point :)
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

IT-JOB

Dalmatic TNV A/S

Dygtig svagstrømsingeniør

Forsvarsministeriets Materiel- og Indkøbsstyrelse

IT-supporterelever til Lokal IT på Antvorskov Kaserne

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Flådeprogrammets Program Management Office søger en Risk Manager