Avatar billede totalpc Seniormester
20. december 2007 - 12:12 Der er 5 kommentarer og
1 løsning

If sætning i en sql kan man det?

Jeg laver et exceludtræk hvor jeg vælger felter ud med denne kommando:

call CreateExcel("Titelnavn","SELECT Medlemsnr,Fornavn,Efternavn,Adresse,Postnummer,By,Land,Medlemsstatus,Tlf,Email,Diverse,Apua,Kredsadmin,Admin,Tillad_Kreds,Tillad_Alle from medlem ORDER BY Medlemsnr")

Men nu har jeg det problem at et af felter kun skal med hvis det er ens med et andet felt. Dvs.

if gkoderod=kodeord skal gkodeord med eller skal ingen af felterne med i udtrækket! Kan det lade sig gøre?

Hele koden ses her :
<%
Dim objConn        'Holds the Database Connection Object
Set objConn = Server.CreateObject("ADODB.Connection")

'Set an active connection to the Connection object using a DSN-less connection
objConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("medlemsrs.mdb")

Function CreateExcel(Title,tblname)
  Dim Rs,Fso,Act,fname
  Fname = "Udtrak.xls"
  Set rs = Server.CreateObject("ADODB.Recordset")
  Set FSO = Createobject("scripting.filesystemobject")
  Set act = Fso.CreateTextfile(server.mappath(Fname),true)
  rs.Open Tblname, objconn, 3, 3
  If Not Rs.EOF and not Rs.BOF Then
    act.WriteLine "<html xmlns:x=""urn:schemas-microsoft-com:office:excel"">"
    act.WriteLine "<head>"
    act.WriteLine "<!--[if gte mso 9]><xml>"
    act.WriteLine "<x:ExcelWorkbook>"
    act.WriteLine "<x:ExcelWorksheets>"
    act.WriteLine "<x:ExcelWorksheet>"
    act.WriteLine "<x:Name>"& title &"</x:Name>"
    act.WriteLine "<x:WorksheetOptions>"
    act.WriteLine "<x:Print>"
    act.WriteLine "<x:ValidPrinterInfo/>"
    act.WriteLine "</x:Print>"
    act.WriteLine "</x:WorksheetOptions>"
    act.WriteLine "</x:ExcelWorksheet>"
    act.WriteLine "</x:ExcelWorksheets>"
    act.WriteLine "</x:ExcelWorkbook>"
    act.WriteLine "</xml>"
    act.WriteLine "<![endif]--> "
    act.WriteLine "</head>"
    act.WriteLine "<body>"

    Act.Writeline "<table border=1>"
    Act.Writeline "<Tr>"
    For X = 0 to Rs.Fields.count - 1
      Act.Writeline "<Td><b>" & Rs.Fields.Item(x).Name & "</b></td>"
    Next
    Act.Writeline "</Tr>"
    While not Rs.Eof
      Act.Writeline "<Tr>"
      For X = 0 To Rs.Fields.Count - 1
        Act.Writeline "<Td>" & Rs.Fields.Item(X).Value & "</td>"
      Next
      Act.Writeline "</Tr>"

      Rs.Movenext

    Wend
    Act.Writeline "</Table>"
    act.writeline "<tr></tr>"
    act.writeline "<tr>Genereret af Totalpc</tr>"
    act.WriteLine "</body>"
    act.WriteLine "</html>"

  End if
  Act.close
  Rs.close
%>
<html>
<body style="background-color: #ECF9FF">
Dit excel udtræk kan hentes hér: <a href="<%=fname%>" target="_blank"> Udtræk </a>
</body>
</html>
<%
  End function

call CreateExcel("Titelnavn","SELECT Medlemsnr,Fornavn,Efternavn,Adresse,Postnummer,By,Land,Medlemsstatus,Tlf,Email,Diverse,Apua,Kredsadmin,Admin,Tillad_Kreds,Tillad_Alle from medlem ORDER BY Medlemsnr")
'call CreateExcel("Titelnavn","SELECT feltnavn1,feltnavn2,feltnav3 from medlemmer ORDER BY feltnavn ")
'Reset server objects

Set rs = Nothing
Set objConn = Nothing

%>
Avatar billede softspot Forsker
20. december 2007 - 12:35 #1
Du kan muligvis klare det med en IIF i din SQL (felterne kommer med, men du kan i det mindste lægge en tom værdi i dem):

SELECT
  Medlemsnr,Fornavn,Efternavn,Adresse,Postnummer,By,Land,
  Medlemsstatus,Tlf,Email,Diverse,Apua,Kredsadmin,Admin,
  Tillad_Kreds,Tillad_Alle,
  IIF(gkodeord=kodeord, gkodeord, '') AS gkodeord,
  IIF(gkodeord=kodeord, kodeord, '') AS kodeord
FROM
  medlem
ORDER BY
  Medlemsnr
Avatar billede medions Nybegynder
20. december 2007 - 12:36 #2
Der bruger du blot Where clausen!

WHERE gkoderod=kodeord

//>Rune
Avatar billede totalpc Seniormester
20. december 2007 - 12:45 #3
softspot >
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Circular reference caused by alias 'gkodeord' in query definition's SELECT list.
/udtrak_alle.asp, line 14

medions > Så får jeg jo ikke alle med så vidt jeg lige kan gennemskue!
Avatar billede totalpc Seniormester
20. december 2007 - 12:55 #4
call CreateExcel("Titelnavn","SELECT Medlemsnr,Fornavn,Efternavn,Adresse,Postnummer,By,Land,Medlemsstatus,Tlf,Email,Diverse,Apua,Kredsadmin,Admin,Tillad_Kreds,Tillad_Alle,IIF(gkodeord=kodeord, gkodeord, '') AS Generet_kodeord from medlem ORDER BY Medlemsnr")

Så virker det... Jeg ville kun have feltet gkodeord med hvis det var = kodeord.
Så derfor kun den ene IIF. Kanon softspot. Smider du et svar!
Avatar billede softspot Forsker
20. december 2007 - 12:58 #5
Velbekomme :)
Avatar billede softspot Forsker
20. december 2007 - 13:04 #6
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