Avatar billede hundevennen Nybegynder
04. april 2007 - 09:48 Der er 20 kommentarer og
1 løsning

hvordan backup og navngivning af access tabel i asp

Jeg vil gerne med en knap gemme en tabel i en accessbase med et nyt navn via asp script??
Avatar billede fennec Nybegynder
04. april 2007 - 09:53 #1
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.
Avatar billede hundevennen Nybegynder
04. april 2007 - 10:08 #2
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?
Avatar billede hundevennen Nybegynder
04. april 2007 - 10:09 #3
mine felter er dato - klokken - navn - tekst
Avatar billede hundevennen Nybegynder
04. april 2007 - 10:10 #4
der er selvfølgelig også lige et ID felt
Avatar billede hundevennen Nybegynder
04. april 2007 - 10:12 #5
m.h.t. at gemme tabellen, skal brugeren selv kunne vælge hvad tabellen skal hedde
Avatar billede fennec Nybegynder
04. april 2007 - 10:29 #6
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.
Avatar billede hundevennen Nybegynder
13. april 2007 - 13:04 #7
nu virker opret tabel koden som du ser herunder:
<!-- #include file=forbindelse.asp -->

<%

dim orec, SQL, ID, k, strConnect

Valg = request.form("Valg")
    if Valg = "" then
%>
<form name=sampleform action="tbl_name.asp" method=post>
           
<table>
<tr><h4>OPRET KOPI AF DATA</h4></tr>
<tr>
</tr>
<td>
<b>Tabelnavn:</b></td><td> <input type=text name=tbl_name>                   
</td>
</tr>
</table>
<input type=submit value=Opret name=Valg style="width:100px">
</form>
<%
    else
       
        tbl_name = request.form("tbl_name")
       
        SQL = "CREATE TABLE "& tbl_name &"(ID autoincrement primary key, dato datetime , klokken int, felt1 int, felt2 text)"
       
        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?????
Avatar billede fennec Nybegynder
13. april 2007 - 13:30 #8
Ved ikke om Access understøtter denne sql syntax:
INSERT INTO NyTabel SELECT dato, klokken, felt1, felt2 FROM OldTable

Vær opmærksom på at rækkerne får et nyt ID. Hvis det skal bibeholdes skal vi have slået autonummer fra, inden vi indsætter.
Avatar billede hundevennen Nybegynder
16. april 2007 - 08:38 #9
Fennec - hvor skal jeg placere INSERT sætningen?
Avatar billede hundevennen Nybegynder
16. april 2007 - 09:10 #10
Fennec - jeg fandt denne hos Microsoft og den virker sgu:
select dato, klokken, feltl, felt2 INTO " &tbl_name&" From gammeltabel
Avatar billede hundevennen Nybegynder
16. april 2007 - 09:14 #11
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??
Avatar billede fennec Nybegynder
16. april 2007 - 09:37 #12
Det vil jeg lave med session:

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.
Avatar billede hundevennen Nybegynder
16. april 2007 - 12:32 #13
det forstår jeg ikke helt - først og fremmest skal jeg ha fat i tabelnavnene og puttet dem ind i en form??? hvordan får jeg fat i tabelnavnene?
Avatar billede fennec Nybegynder
16. april 2007 - 13:15 #14
Ahh ja. 2 løsninger:

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.
Avatar billede hundevennen Nybegynder
17. april 2007 - 10:55 #15
Jeg har fundet noget der kan bruges med lidt mere hjælp fra dig

<!-- #include file="forbindelse.asp" -->
<html>
<head>
<title>Dokumentation</title>
<LINK REL=Stylesheet HREF="../intranettet.css" TYPE="text/css">
<meta http-equiv="refresh" content="60">
</head>
<%
    Dim dbc, rsData, rsFieldNames

    '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
           
     
      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>&nbsp;" & trim(objRS(2)) & "</td><td>&nbsp;" & trim(objRS(3)) & "</td><td>&nbsp;" & 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
    %>
Avatar billede hundevennen Nybegynder
17. april 2007 - 10:56 #16
Jerg mangler bare at få tabelnavnet med over i søgningen nederst i scriptet - kan du hjælpe mig med det? Jeg skal nok hæve point til noget meget mere?
Avatar billede fennec Nybegynder
17. april 2007 - 11:17 #17
Ikke helt med på hvad du mener, men der er nogle problemer i den sidste del. Den må først køres når man har valgt database og tabel:

<!-- #include file="forbindelse.asp" -->
<html>
<head>
<title>Dokumentation</title>
<LINK REL=Stylesheet HREF="../intranettet.css" TYPE="text/css">
<meta http-equiv="refresh" content="60">
</head>
<%
    Dim dbc, rsData, rsFieldNames

    '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>&nbsp;" & trim(objRS(2)) & "</td><td>&nbsp;" & trim(objRS(3)) & "</td><td>&nbsp;" & 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
%>
Avatar billede hundevennen Nybegynder
17. april 2007 - 12:35 #18
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???????
Avatar billede fennec Nybegynder
17. april 2007 - 12:43 #19
Har du et link hvor man kan se det i aktion?? Det er lidt nemmere...
Avatar billede hundevennen Nybegynder
17. april 2007 - 12:50 #20
det virker, så nu tror jeg at jeg takker foreløbig for hjælpen
Avatar billede fennec Nybegynder
17. april 2007 - 13:09 #21
.o) <-- One Eyed Jack
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