[ASP/Access] Hoe alle tabellen, kolommen (met SQL) opvragen

Pagina: 1
Acties:
  • 136 views sinds 30-01-2008
  • Reageer

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Topicstarter
Ja, ik zit dus met bovenstaande vraag. De situatie is als volgt:

Voor een intranetsite (welke wellicht wordt opgezet als template voor alle medewerkers) willen we een goed CMS erbij maken, zodat niet iedereen met .asp hoeft te klooien.

Nu hebben we ook een SQL Editor gemaakt (middels een FORM) waarmee de gebruikers dus een query op de Access 2000 database kunnen uitvoeren. Om het wat eenvoudiger te maken willen we een aantal standaard queries (middels een pulldown) leveren. Zo ook de volgende:

Voorbeeld code:
code:
1
2
3
4
5
6
7
8
9
10
11
SELECT  SO.NAME             AS TABLENAME,
    SC.NAME             AS COLUMN,
    ST.NAME             AS TYPE,
    SC.LENGTH           AS LENGTH
FROM    SYSTYPES            AS ST,
    SYSCOLUMNS          AS SC,
    SYSOBJECTS          AS SO
WHERE   ST.USERTYPE = SC.USERTYPE   AND
    SO.ID = SC.ID           AND
    SO.ID > 10000           
ORDER BY SO.NAME

Deze code werkt wel via een (online) SQL Editor, maar dan alleen naar een SQL Server database toe.

Vraag:
Weet iemand van jullie net zo'n stukje code als bovenstaand, maar dan eentje die hetzelfde resultaat kan geven voor een MS Access 2000 database :?

Toevoeging:
Bovenstaande SQL Query welke wordt ingevoerd in de textarea wordt met behulp van deze functie uitgevoerd:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Function getRecordset(strSQL)
'---------------------------------------------------------------------------
' Description:  Voer het SQL statement uit welke wordt meegegeven aan de 
'       functie, mocht er een fout optreden dan wordt er een
'       DisplayError Functie aangeroepen.
'       MAAR gaat gewoon alles goed dan geeft de functie de
'       RecordSet terug.
' Note:     Errors worden genegeerd omdat de ADO foutmeldingen dan
'       kunnen worden afgevangen.
' Input params: strSQL;     dit is een string waarin het SQL statement
'               zit welke uitgevoerd moet worden.
' Returns:  Recordset;  het recordset van het uitgevoerde SQL
'               statement.
'---------------------------------------------------------------------------
Dim connection, recordset

    'Check to see if the Application("[name]") is an Object.
    If IsObject(Session("Conn")) Then
        Set connection = Session("Conn")
    Else
        Set connection = Server.CreateObject("ADODB.Connection")
        connection.Open "DRIVER={Microsoft Access Driver (*.mdb)}; _
                 DBQ=" & server.mappath("database/TheDB.mdb")   

        Set Session("Conn") = connection
    End If

    Set recordset = connection.Execute(strSQL)

    ' If there were database errors then
    ' call the error display subroutine.
    If connection.Errors.Count > 0 Then 
        Call DisplayDatabaseErrors(connection.Errors, strSQL)
    End If

    Set getRecordset = recordset
        
End Function

[ Voor 0% gewijzigd door Woudloper op 15-08-2002 09:30 . Reden: Lay-out verneuking verminderd :) ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:42

gorgi_19

Kruimeltjes zijn weer op :9

Ik heb hier een artikel waarin in ieder geval beschreven wordt hoe je alle tabellen in een access DB kan weergeven. Kolommen moet ik nog ff naar kijken

http://www.4guysfromrolla.com/webtech/092298-2.shtml

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

No offence, maar waarom worden gebruikers van een CMS geconfronteerd met SQL related zaken, terwijl je ze wel wilt afschermen van ASP en HTML ? Is het niet DE feature van een CMS dat hij de gebruiker afschermt van ALLE overhead benodigd voor het publiceren van content?

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Topicstarter
Klopt, maar eigenlijk is dat SQL gebeuren een extentie voor de meer gevorderde gebruikers...

Het is namelijk zo dat ik een voorstel moet maken. Daarnaast heb ik geen rechten meer om te hacken, dus ben ik een hack voor mijzelf aan het inbouwen... :)

  • mvliet
  • Registratie: Oktober 2000
  • Laatst online: 13-04 09:27
ik heb zelf is een tooltje geschreven om op een access database te kunnen queryen via het web....erg handig om dingen te controlleren...alleen wel erg hack gevoelig... vandaar die IP check (die nu ff uit staat omdat dit me interne versie is)
je zou ook je database readonly kunnen openen....dan kunnen ze iig niet updaten en deleten enzo....

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
<%
'code: Maarten van Vliet
'mail - maarten@wordtgek
'ICQ 501797
RESPONSE.BUFFER = TRUE
RESPONSE.EXPIRES = -1
RESPONSE.CACHECONTROL = "no-cache"
RESPONSE.ADDHEADER "Pragma", "no-cache"
sqlstring = Request("sqlstring")
%>
<!--#INCLUDE VIRTUAL="INC/ADOVBS.INC" -->

<HTML>
<HEAD>
<TITLE>dbquery</TITLE>
<style>
    TD,BODY     {font-size: 11px; font-family: Arial; font-weight: bold}
    TD.tdkop    {
                background-color : #D8D6D6;

                border-right-style: solid;
                border-right-color: #000000;
                border-width:1;

                font-family: Arial;
                font-size: 12px;
                color: black;   
            }
    TD.tdregel  {
                background-color : #FFFFFF;
            
                border-right-style: solid;
                border-right-color: #000000;
            
                border-bottom-style: solid;
                border-bottom-color: #D8D6D6;
                border-width:1;
            
                font-family : Arial;
                font-size : 12px;
                color : black;
            }
    .conttable,input
            {
                background-color: #D8D6D6;
            
                border-top-color: #FFFFFF;
                border-top-style: solid;
            
                border-left-color: #FFFFFF;
                border-left-style: solid;
            
                border-bottom-color: #000000;
                border-bottom-style: solid;
            
                border-right-color: #000000;
                border-right-style: solid;
            
                border-width:1;
                color:black;
                font-family: Arial;
                font-size: 12px;
            }
</style>
</HEAD>
<BODY  bgcolor="#808080">
<center>
<big>DBQuery</big>
<form name="dbquery" action="accessquery.asp" method="post">
    <textarea class="conttable" rows="10" cols="80" name="sqlstring" size="20"><%=sqlstring%></textarea><br>
    <input type="submit" value="Query uitvoeren"><input type="reset" value="wissen">
</form>
<%
DIM oCN, Param, sql, Data, rs

'On Error Resume Next

'IF Request.ServerVariables("REMOTE_ADDR") <> "XXX.XX.XX.XX" THEN
'   RESPONSE.WRITE "TOEGANG GEWEIGERD :-( "
'ELSE
    SET oCN = SERVER.CREATEOBJECT("ADODB.CONNECTION")
    oCN.OPEN APPLICATION("DSN")
    Set rs = Server.CreateObject("ADODB.Recordset")
    Set rsSchema = oCN.OpenSchema(adSchemaTables)   
    %>
    <form name="frmtables">
    <table border=0 cellpadding=0 cellspacing=0>
        <tr>
            <td>
                Tabellen:
            </td>
            <td>
                <select name="tblname">
                <%
                While Not rsSchema.EOF
                    IF rsSchema("TABLE_TYPE") = "TABLE" THEN
                    %>
                        <option value="<%=rsSchema(2).value%>"><%=rsSchema(2).value%>&nbsp;-&nbsp;<%=rsSchema(5).value%>
                    <%
                    END IF
                    rsSchema.movenext
                WEND
                %>
                </select>
                <input type="button" onclick="dbquery.sqlstring.value += frmtables.tblname.value;" value="toevoegen"> 
            </td>
        </tr>
    </table>
    </form>
    <%

    IF trim(sqlstring) <> "" THEN
        rs.Open sqlstring, oCN, 3, 3
        IF NOT rs.EOF THEN
        %>
        <table class="conttable" border="0" cellpadding="2" cellspacing="0">
            <tr>
        <%
        For i = 0 to rs.Fields.count - 1
            %>
            <td class=tdkop nowrap onclick="dbquery.sqlstring.value += '<%=rs.fields(i).name%>';"><b><%=rs.fields(i).name%></b></td>
            <%
            
        Next
        %>
            </tr>
            <tr>
        <%
            DO WHILE NOT rs.EOF
                For i = 0 to rs.Fields.count - 1
                    %>
                    <td class=tdregel nowrap>
                    <%
                        If trim(rs.fields(i).value) = "" then
                            response.write "&nbsp;"
                        Else
                            response.write rs.fields(i).value
                        End if
                    %>
                    </td>
                    <%
                    
                Next
        %>
            </tr>
            <tr>
        <%
                rs.MOVENEXT
            LOOP
        %>
            </tr>
        </table>
        <%
        END IF
    END IF
'END IF
    Set rs = nothing
    SET oCN = nothing

%>
</center>

</BODY>
</HTML>

www.cenobytes.nl Noize Party's & industrialnation.nl


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Topicstarter
mvliet schreef op 15 augustus 2002 @ 10:18:
ik heb zelf is een tooltje geschreven om op een access database te kunnen queryen via het web....erg handig om dingen te controlleren...alleen wel erg hack gevoelig... vandaar die IP check (die nu ff uit staat omdat dit me interne versie is)
je zou ook je database readonly kunnen openen....dan kunnen ze iig niet updaten en deleten enzo....

[... snip ...]
Hey, die ziet er netjes uit... Dit is dus de verdere uitwerking van wat gorgi had gezegd... Gaaf, ik ga er wel mee stoeien! Ziet er in ieder geval goed uit, nu alleen nog aanpassen naar mijn eigen wensen aangezien er bij jou versie geen goede error afhandeling is e.d.

  • mvliet
  • Registratie: Oktober 2000
  • Laatst online: 13-04 09:27
Woudloper schreef op 15 augustus 2002 @ 10:46:
[...]
Hey, die ziet er netjes uit... Dit is dus de verdere uitwerking van wat gorgi had gezegd... Gaaf, ik ga er wel mee stoeien! Ziet er in ieder geval goed uit, nu alleen nog aanpassen naar mijn eigen wensen aangezien er bij jou versie geen goede error afhandeling is e.d.
klopt...is ook niet voor eind gebruikers geschreven....
maar ik gebruik het zelf regelmatig om ff in een database te prikken van een klant (of van me eigen website)

www.cenobytes.nl Noize Party's & industrialnation.nl


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Topicstarter
Daarvoor wilde ik het dus ook gaan gebruiken....

Wilde namelijk een kleine hack toevoegen zodat ik ook gewoon de database van mijzelf (waar ik straks dus geen access meer toe heb :( ) kon blijven benaderen en daar waar nodig tabellen toevoegen...

Ik heb namelijk stiekempies ook een file-manager ingebakken en de huis/tuin en keuken gebruikers hier komen daar dus niet achter...

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Woudloper schreef op 15 augustus 2002 @ 10:59:
Ik heb namelijk stiekempies ook een file-manager ingebakken en de huis/tuin en keuken gebruikers hier komen daar dus niet achter...
En hoe ga jij je klant later uitleggen dat er automagisch ineens foutjes uit de applicatie verdwijnen (of juist bijkomen) terwijl je officieel helemaal geen toegang hebt?
M.a.w. hoewel het op het eerste gezicht handig lijkt ben je imho zeer gevaarlijk bezig.

Today's subliminal thought is:


  • mvliet
  • Registratie: Oktober 2000
  • Laatst online: 13-04 09:27
ja psies...... ik zou d'r wel een beetje mee uitkijken......tis een handig maar gevaarlijk tooltje.......1 verkeerdere query en alles is om zeep

maar goed wat je d'r mee doet moet je zelf weten.... >:)

www.cenobytes.nl Noize Party's & industrialnation.nl


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Topicstarter
Annie:
En hoe ga jij je klant later uitleggen dat er automagisch ineens foutjes uit de applicatie verdwijnen (of juist bijkomen) terwijl je officieel helemaal geen toegang hebt?
M.a.w. hoewel het op het eerste gezicht handig lijkt ben je imho zeer gevaarlijk bezig.
I know! Maar het is voor ons eigen intranet en ik wilde ook gewoon een beetje de systeembeheerder een hak zetten d.mv. zulke stukjes code in te bouwen. Ik heb zelf altijd graag inzicht in hetgeen wat er allemaal gebeurd (* Woudloper is een control freak)...

Bij ons was het namelijk zo dat iedereen een eigen site kon aanvragen, daar wat ontwikkelingen doen en deze sharen met andere medewerkers... Helaas hebben ze dit afgekapt, doordat ze zeggen dat mensen er illegale software op sharen (Yeah right)

Nu is bij een aantal mensen de vraag neergelegd om een standaard neer te zetten zodat iedereen de beschikking krijg om wat standaard zaken online te zetten (gekoppeld aan een access database, zoveel zitten er toch niet tegelijkertijd op een intranetsite). Dit ben ik aan het uitwerken en het leek mij wel leuk om zo'n feature in te bouwen...

Verwijderd

Als ik jouw baas was, stond je nu op straat. Ik weet niet of jouw baas er net zo over denkt, maar het lot tarten lijkt me wat al te self-destructive, vind je ook niet?
Pagina: 1