Det kommer lidt an på hvor advanceret den skal være.
Hvis den f.eks selv skal læse kolonnenavne og datatyper bliver det lidt indviklet. Mens det er nemt, hvis det er en opbygning du kender, og derfor bare skal fyre en "create table" syntax af.
Hej fennec Det er et lille logsystem - der i tabbelen kun består af 4 kendte felter - tabellen hedder f.eks log - den vil jeg så gerne kunne gemme i samme accessbase men med et andet navn f.eks log040407. Senere vil jeg så gerne kunne hente den ind i mit system igen, men det er vist et andet spm. - noget med en side der viser alle tabeller i basen og så via en form vælge den rigtige tabel og få den sat ind i min forbindelse.asp fil?
Så er det bare at fyre en create table af. Her er et eks med et par forskellige datatyper: conn.execute("CREATE TABLE tabelNavn (ID AUTOINCREMENT PRIMARY KEY, kolonneNavn nvarchar(50) not null, kolonneNavn int, kolonneNavn decimal(18,2))")
Du indsætter så bare det navn som brugeren har valgt til tabellen.
Kan ikke huske hvordan Access har det med "insert from select" så vi kan flytte data over med en sql-sætning, men det må vi teste når du har opret tabel koden til at køre.
set oCon = server.createobject("ADODB.Connection") oCon.Open strConnect oCon.Execute SQL oCon.Close Set oCon = nothing Response.redirect "nytabel.asp" end if %>
</body> </html> nu skal jeg så bare ha data med?????
Nu skal jeg så ha lavet muligheden for via en FORM, at vælge en af backuptabellerne og bruge den istedet for - d.v.s. i alle sql sætninger skifte gammeltabel ud med den tabel dr vælges ud fra en dropdownliste??
if session("DBTable") = "" then session("DBTable") = "PrimærTabel" sql = "select * from "& session("DBTable") &""
Ved at lave en anden side hvor du ændre session("DBTable") via en dropdown, kan du vælge hvilken tabel der skal bruges: <% if Request.querystring("mode") = "change" then session("DBTable") = Request.Form("DBTable") end if %> <form name="myForm" method="post" action="denneside.asp?mode=change"> <select name="DBTable"> <option value="PrimærTabel">PrimærTabel</option> <option value="testTable1">testTable1</option> <option value="testTable2">testTable2</option> <option value="testTable3">testTable3</option> </select> </form>
Det er ret vigtigt at du får kørt: if session("DBTable") = "" then session("DBTable") = "PrimærTabel"
så variablen har en værdi. Har du f.eks en login side, kan du nøjes med at have den her, ellers skal den ind på alle sider.
1: Du gemmer alle de nye tabelnavne i en tabel, og slår dem op her. 2: Du åbner et skema: Set rs = conn.OpenSchema (20) while not rs.eof response.write rs(0) &":"& rs(1) &":"& rs(2) &":"& rs(3) &":"& rs(4) &"<br>" rs.MoveNext wend
Det er lang tid siden jeg brugte skemaer, så jeg kan ikke huske hvordan/hvilke data der kommer ud, men det er mere end bare navnet. F.eks dato for oprettelse, type osv. Mener tabelnavnet ligger på plads 2.
'Her bliver du bedt om at vælge database --- If Request.Form("mdb")="" Then Dim objFSO, objFolder, objItem 'Her bliver der lavet en dropdown liste med de databaser der er i biblioteket --- Set objFSO = Server.CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(Server.MapPath(".")) Response.Write "<HTML><BODY BGCOLOR=White><font face='verdana,arial' size=2>" Response.Write "<FORM METHOD='Post' ACTION='browsertest.asp'>" Response.Write "Vælg database: " Response.Write "<SELECT name='mdb'>" For Each objItem In objFolder.Files If InStr(UCase(objItem.Name), ".MDB") > 0 Then Response.Write "<OPTION value=" & """" & objItem.Name & """" & "</OPTION>" & UCase(objItem.Name) Next Response.Write "</SELECT>" Response.Write "<Input type='submit' value=' Næste --> '>" Response.Write "</FORM>" Set objFSO = Nothing Set objFolder = Nothing Set objItem = Nothing
'Her bliver du bedt om at vælge tabel --- ElseIf Request.Form("table")="" Then Set dbc = Server.Createobject("ADODB.Connection") dbc.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath(Request.Form("mdb")) 'lav dropdown liste med tabeller i databasen Set rsFieldNames = dbc.OpenSchema(adSchemaTables) rsFieldNames.Filter = "TABLE_TYPE='TABLE'" Response.Write "<HTML><BODY BGCOLOR=White><font face='verdana,arial' size=2>" Response.Write "<FORM METHOD='Post' ACTION='browsertest.asp'>" Response.Write "Vælg den backuptabel du ønsker: " Response.Write "<SELECT name=table>" Do While Not rsFieldNames.EOF Response.Write "<OPTION value=" & """" & rsFieldNames("TABLE_NAME") & """" & "</OPTION>" & rsFieldNames("TABLE_NAME") rsFieldNames.MoveNext Loop Response.Write "</SELECT>" Response.Write "<input name='mdb' type=hidden value='" & Request.Form("mdb") & "'>" Response.Write "<Input type='submit' value=' Næste --> '>" Response.Write "</FORM>" rsFieldNames.Close set rsFieldNames = Nothing dbc.Close set dbc = Nothing end if
tabel_navn = request.form("table")
strText = "SELECT * FROM " & tabel_navn & " " openDB objCommand objCommand.commandtext = strText set objRS = objCommand.execute
'Her bliver du bedt om at vælge database --- If Request.Form("mdb")="" Then Dim objFSO, objFolder, objItem 'Her bliver der lavet en dropdown liste med de databaser der er i biblioteket --- Set objFSO = Server.CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(Server.MapPath(".")) Response.Write "<HTML><BODY BGCOLOR=White><font face='verdana,arial' size=2>" Response.Write "<FORM METHOD='Post' ACTION='browsertest.asp'>" Response.Write "Vælg database: " Response.Write "<SELECT name='mdb'>" For Each objItem In objFolder.Files If InStr(UCase(objItem.Name), ".MDB") > 0 Then Response.Write "<OPTION value=" & """" & objItem.Name & """" & "</OPTION>" & UCase(objItem.Name) Next Response.Write "</SELECT>" Response.Write "<Input type='submit' value=' Næste --> '>" Response.Write "</FORM>" Set objFSO = Nothing Set objFolder = Nothing Set objItem = Nothing
'Her bliver du bedt om at vælge tabel --- ElseIf Request.Form("table")="" Then Set dbc = Server.Createobject("ADODB.Connection") dbc.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath(Request.Form("mdb")) 'lav dropdown liste med tabeller i databasen Set rsFieldNames = dbc.OpenSchema(adSchemaTables) rsFieldNames.Filter = "TABLE_TYPE='TABLE'" Response.Write "<HTML><BODY BGCOLOR=White><font face='verdana,arial' size=2>" Response.Write "<FORM METHOD='Post' ACTION='browsertest.asp'>" Response.Write "Vælg den backuptabel du ønsker: " Response.Write "<SELECT name=table>" Do While Not rsFieldNames.EOF Response.Write "<OPTION value=" & """" & rsFieldNames("TABLE_NAME") & """" & "</OPTION>" & rsFieldNames("TABLE_NAME") rsFieldNames.MoveNext Loop Response.Write "</SELECT>" Response.Write "<input name='mdb' type=hidden value='" & Request.Form("mdb") & "'>" Response.Write "<Input type='submit' value=' Næste --> '>" Response.Write "</FORM>" rsFieldNames.Close set rsFieldNames = Nothing dbc.Close set dbc = Nothing else tabel_navn = request.form("table") strText = "SELECT * FROM " & tabel_navn & " " openDB objCommand objCommand.commandtext = strText set objRS = objCommand.execute response.write "<table border=1 cellpadding=0 cellspacing=0 width=630 >" Response.Write "<tr><th align=left width=30><font size=-1>Klokken</font></th><th width=50><font size=-1>felt3</font></th><th><font size=-1>Felt4</font></th></tr>" if not objRS.eof then while not objRS.eof if color = 0 then Response.write "<tr bgcolor=#FFFFFF>" color = 1 else Response.write "<tr bgcolor=#F0F3EF>" color = 0 end if response.write "<td> " & trim(objRS(2)) & "</td><td> " & trim(objRS(3)) & "</td><td> " & trim(objRS(4)) & "</td></tr>" objRS.movenext wend else response.write "<tr>" response.write "<td colspan=3 align=center><font color='#FF0000'><font size=+1>Databasen er tom</font></font></td></tr>" response.write "</table>" end if end if %>
du har helt ret - den skal først køre den sidste del tilsidst efter man har valgt tabelnavnet - men jeg får ikke tabelnavnet med i sqlsætningen - så der er noget galt ved denne del: tabel_navn = request.form("table") strText = "SELECT * FROM " & tabel_navn & " " jeg får syntax error in FROM clause???????
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.