Avatar billede phineas_phreak Nybegynder
22. marts 2004 - 10:44 Der er 10 kommentarer og
1 løsning

if exist med SQL

Hejsa ... skal ha udskrevet en hel masse counts fra 10 sider med udfyldelses formularer.

Da det drejer sig om måske 100 SQLstrenge på hver side ville det jo være smart at loope det, men der opstår jo nogle problemer da der ik er lige mange spørgsmål og svar på hver side. Altså der vil være nogle SQLstrenge der ikke kommer til at eksistere

Og jeg er for doven til at skrive hele lortet manuelt + det bliver et helvede at rette i.

Har lavet forestillet mig at lave loopet som vist nedenunder, men er det ikke muligt at lave en IF EXIST på hver SQL sådan at den bare ignorerer de SQLs der ikke eksisterer ?

Eksempel:

<%
tabelnavn = Replace((trim(Request("tabelnavn"))), "'", "")
maaned = Replace((trim(Request("maaned"))), "'", "")
aar = Replace((trim(Request("aar"))), "'", "")

If tabelnavn = "belysning" then
  antalspoergsmaal = 4
end if

If tabelnavn = "ventilation" then
  antalspoergsmaal = 8
end if

For i=1 to antalspoergsmaal
    for j=1 to 6
    "SQLquestion" & i & "option" & j & " = SELECT COUNT(ID) AS Antal FROM " & (tabelnavn) & " WHERE svar" & i & "=" & j & " maaned=" & (maaned) & " AND aar=" & (aar) & "<br>"
    next
response.write "<br>"
next
%>


Problemet er som sagt at SVAR er varierer fra side til side + svarmuligheder J også varierer.

Hvor der er 4 spørgsmål med 4 svar muligheder i 1. spørgsmål, 3 i 2. 4. i 3. og 4. i 4. spørgsmål kommer der jo til at blive skrevet nogle SQLs der ikke eksisterer. Men det kan du jo ikke rette med et loop.

Håber i forstår hvad jeg mener, det er pissesvært at forklare :)
Avatar billede phineas_phreak Nybegynder
22. marts 2004 - 10:46 #1
tag jer ik af det "<br>" der er kommet med i SQLen har brugt det til at write SQLen ud for at se hvordan det så ud.
Avatar billede eagleeye Praktikant
22. marts 2004 - 10:55 #2
En variable som ikke har fået tilskrevet en værdi vil være Empty, så du kan bruge IsEmpty

if not isEmpty(str) then
  'variablen str indeholder noget
end if
Avatar billede phineas_phreak Nybegynder
22. marts 2004 - 12:09 #4
vil det også virke med en SQL sætning når jeg skal execute den bagefter ?
Avatar billede phineas_phreak Nybegynder
22. marts 2004 - 12:11 #5
SQL sætningen vil jo ikke være tom, scriptet vil jo gå i kage når jeg prøver at kalde en SQLstreng som ikke eksistere. Altså Hvis jeg prøver at hente data fra kolonne 6 i min tabel som eksistere i det ene tilfælde men ikke i det andet.

Det var derfor jeg tænkte på om man kunne lave noget if exist
Avatar billede eagleeye Praktikant
22. marts 2004 - 18:55 #6
Så forstår jeg ikke hvad du mener. Enten indeholder SQL strengen noget tekste eller ej??

Hvis man skriver et variable navn som ikke findes vil isEmpty være true.
Her i kode eksemple 1 findes variablen SQL2 ikke og Conn.Execute udføre ikke:
<%
if not isEmpty(SQL2) then
  Conn.Execute(SQL2)
end if
%>

Her i kode eksemple 2 findes variablen SQL2 og Conn.Execute udføres:
<%
SQL2 = "insert into tabelnavn (kol) values ('abc')"
if not isEmpty(SQL2) then
  Conn.Execute(SQL2)
end if
%>
Avatar billede phineas_phreak Nybegynder
23. marts 2004 - 08:31 #7
Så tror jeg bare jeg misforstod det link du sendte. Troede nemlig der var forskel på SQL og variabler.

Så dvs. at hvis nu jeg prøver at hente data fra en kolonne der ikke eksistere så bliver isEmpty true ?
Avatar billede phineas_phreak Nybegynder
23. marts 2004 - 08:39 #8
yes det gik galt som jeg forventede.

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[MySQL][ODBC 3.51 Driver][mysqld-4.0.18-nt]Unknown column 'svar7' in 'where clause'

Og der kommer selvfølgelig til at være tilfælde hvor jeg vil kalde kolonner som ikke eksisterer. Er der overhovedet nogen smart løsning til det her ? eller bliver man nødt til at lave det manuelt ?



SQLquestion4option5 = "SELECT COUNT(ID) AS Antal FROM " & (tabelnavn) & " WHERE svar7=4 AND maaned='" & (maaned) & "' AND aar=" & (aar) & ""
       
        if not isEmpty(SQLquestion4option5) then
            Conn.Execute(SQLquestion4option5)
        else
          response.write "SQLquestion4option5 findes ikke"
        end if
Avatar billede eagleeye Praktikant
23. marts 2004 - 21:29 #9
I det eksemple du har vist vil den udføre Conn.Execute da SQLquestion4option5 jo indeholder en SQL sætning. Den kan ikke tjekke om din SQL sætning er syntax messigt rigtig.

Vil du hvade noget som validere din SQL sætningen om kolonne navne findes i den valgte tabel?
Avatar billede phineas_phreak Nybegynder
25. marts 2004 - 11:38 #10
yes det er præcis det jeg gerne vil ha.

Ved sgu ik hvordan jeg skulle formulere det :)

Men det ser da ud til vi begynder at forstå hinanden :D
Avatar billede phineas_phreak Nybegynder
09. juni 2004 - 13:55 #11
gammelt spm. lukker
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