Avatar billede mhq Nybegynder
30. september 2004 - 09:52 Der er 6 kommentarer og
1 løsning

Hjælp til kodeforståelse (AddWhereClause)?

For længe siden har jeg copy/paste flg kode.
If Not Forms!F_D_Dok_Search_Rapp!Status.Value = 1 Then
    strSQL = fkt_AddWhereClause(useWhere, strSQL)
    useWhere = True
    strSQL = strSQL & "QA_App= True"
End If
_________________________________________________________________
Private Function fkt_AddWhereClause(useWhere As Boolean, strSQL As String) As String
    If useWhere = False Then
        strSQL = strSQL & "WHERE "
    Else
        strSQL = strSQL & " AND "
    End If
    'return string
    fkt_AddWhereClause = strSQL
End Function

Men jeg forstår den ikke, og kan ikke finde megen hjælp i F1. Derfor,- er dere nogen der kan forklare:
- hvad opnåes ved fkt_AddWhereClause(useWhere, strSQL)?
- hvorfor sættes useWhere = True ?
- hvorfor sættes fkt_AddWhereClause = strSQL inden retur til kaldende ?
Avatar billede sjap Praktikant
30. september 2004 - 11:04 #1
Det eneste funktionen gør er at tilføje et WHERE eller et AND i slutningen af den streng som funktionen kaldes med.

Hvis UseWhere er FALSE tilføjes WHERE i slutningen af strengen.
Hvis UseWhere er TRUE tilføjes AND i slutningen af strengen.

Der hvor du sætter "useWhere = True" kan jeg ikke se den tjener noget formål - medmindre der ligger en løkke uden om denne kode som jeg ikke kan se.
Avatar billede mhq Nybegynder
30. september 2004 - 11:09 #2
Hej sjap. Mit spgs er lidt tåget formuleret. Men jeg er med på tilføjelsen af AND og WHERE. Men hvad defineres/kaldes i ...(useWhere, strSQL). Hvad kan jeg ellers bruge denne funktion til, hvor kan jeg finde beskrivelse af denne syntaks?

Hvor kommer værdien af useWhere fra?
Avatar billede sjap Praktikant
30. september 2004 - 12:01 #3
Jeg mener at hvis en boolean variabel ikke får sat nogen værdi, så er den som standard FALSE.
Avatar billede sjap Praktikant
30. september 2004 - 12:03 #4
Funktionen kunne også skrives lidt kortere som

Private Function fkt_AddWhereClause(useWhere As Boolean, strSQL As String) As String
    If useWhere Then
        fkt_AddWhereClause = strSQL & " AND "
    Else
        fkt_AddWhereClause = strSQL & "WHERE "
    End If
End Function

Resultatet af funktionen er en streng. Det er derfor der f.eks. står

fkt_AddWhereClause = strSQL & " AND "

Resultatet af funktionen er den gamle streng (dvs. strSQL) med " AND " i enden.
Avatar billede sjap Praktikant
30. september 2004 - 12:16 #5
Du kan bruge funktionen i forbindelse med etablering af WHERE delen af en SQL-sætning.

Et eksempel:

Følgende kode
strSQL = "SELECT Efternavn, Fornavn FROM Medarbejdere "
strSQL = fkt_AddWhereClause(useWhere, strSQL) & "Fornavn ='Jens'"
useWhere= True
strSQL = fkt_AddWhereClause(useWhere, strSQL) & "AND ='Jensen'"

vil give følgende SQL-sætning
"SELECT Efternavn, Fornavn FROM Medarbejdere WHERE Fornavn ='Jens' AND Efternavn ='Jensen'"

Der kan sikkert være situationer, hvor det er smart at gøre det ved hjælp af denne funktion, men ofte er det lettest at skrive WHERE eller AND i stedet for fkt_AddWhereClause(useWhere, strSQL)
Avatar billede mhq Nybegynder
30. september 2004 - 14:56 #6
Tak for hjælp
Avatar billede sjap Praktikant
30. september 2004 - 15:00 #7
:0)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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

Politiets Efterretningstjeneste

AI/ML udvikler i PET

Djurslands Bank

IT-udvikler

Netcompany A/S

Network Engineer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Sektionschef til Enterprise Arkitektur i Forsvaret på Østerbro