Avatar billede fomse Nybegynder
02. august 2004 - 18:43 Der er 10 kommentarer og
1 løsning

Flytte data fra en tabel til en anden+tilføj eflere data

Jeg har følgende som flytter data fra liste1 til liste2.
Men vil gerne samtidig med at data flyttes, også indtaste nogle nye data!
Altså udfylde nogle flere inputfelter.

Hvordan gør jeg det?

Koden:
<%
IDrequest = Request.Querystring("tilmeldID")

dim conn

function OpenConn( DBName )

Set Conn = Server.CreateObject("ADODB.Connection")
ODBCpath = left(request.servervariables("PATH_TRANSLATED"), instrrev(request.servervariables("PATH_TRANSLATED"), "\"))
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ODBCpath & DBName

end function

OpenConn("../db.mdb")


' SQL sætning opbygges
strSQL = "Select * from liste1 where ID = " & IDrequest & ""

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL, Conn, 1, 3

ID = rs("ID")
omr = rs("omr")
byg = rs("byg")
emne = rs("emne")
ark = rs("ark")
ent = rs("ent")

rs.delete
' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing

function OpenConn( DBName )

Set Conn = Server.CreateObject("ADODB.Connection")
ODBCpath = left(request.servervariables("PATH_TRANSLATED"), instrrev(request.servervariables("PATH_TRANSLATED"), "\"))
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ODBCpath & DBName

end function

OpenConn("../db.mdb")

' SQL sætning opbygges
strSQL = "Insert into liste2(ID,omr,byg,emne,ark,ent) values('"& ID &"','"& Replace(omr,"'","''") & "','"& Replace(byg,"'","''") & "','"& Replace(emne,"'","''") & "','"& Replace(ark,"'","''") & "','"& Replace(ent,"'","''") & "')"

' SQL sætning eksekveres
Conn.Execute(strSQL)

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing

'udskift sideDuKomFra.asp med den side du kom fra
Response.Redirect "tilmeld1Dato.asp"
%>

Det jeg skal havet tilføjet er en tilmeldDato.
Håber i forstår.....

Fomse:-)
Avatar billede fomse Nybegynder
02. august 2004 - 18:44 #1
Forresten så kalder jeg et på den her måde:
<a href=tilmeldliste1Dato.asp?tilmeldID=" & MyArr(0,i) & ">Tilmeld</a>
Avatar billede phineas_phreak Nybegynder
02. august 2004 - 19:26 #2
så ville jeg hente hele posten ind i en form på en ny side, og så tilføje de nye felter du vil ha skrevet. bemærk at du selvfølgelig bare kan bruge hidden felter til de data du ikke har brug for at indtaste igen.

og din form action sætter du så til endnu en side som eksekverer det hele ligesom du gør nederst.
Avatar billede fomse Nybegynder
02. august 2004 - 19:46 #3
Ja lyder jo nemt nok:-)
Hvordan henter jeg det ind i en form, sletter det fra liste 1 samtidmed at jeg tilføjer nye elementer i formen?

Kan ikke lige overskue det, kan du forklare mig det skridt for skridt?

Fomse
Avatar billede phineas_phreak Nybegynder
02. august 2004 - 20:27 #4
egentlig vil du kunne klare både sletningen og skrivningen på samme side.

men i store træk vil det se ud noget i den her stil (der er nogle navne osv. der lige skal ændres):

udtræk fra db ind i form:
<%
  ' først connecter du til db (skriv din connection streng osv. her

  ' så strukturer vi vores SQL
  strSQL = "SELECT * FROM tabelnavn WHERE ID = " & Request("ID")
 
  Set rs = conn.Execute(strSQL)
  ' og så udskriver vi tingene i vores form
%>

<form method="post" action="skriv.asp?ID=<%= rs("ID") %>"

så laver du de felter du nu skal bruge, enten tekst felter eller hidden, det spiller ingen rolle. det foregår således:

<input type="hidden" name="kolonne1navn" size="14" value="<%= rs("kolonne1navn") %")">
<input type="hidden" name="kolonne2navn" size="14" value="<%= rs("kolonne2navn") %")">

og hvis du vil tilføje flere ting
<input type="tekst" name="etnavndufinderpå" size="14" value">
<input type="tekst" name="etnytnavndufinderpå" size="14" value">

</form>


Nu har du hentet tingene ind i formen, og vil nu have dem smidt i databasen. det foregår i den fil action peger på (i dette tilfælde skriv.asp).


i den gør du ligesom du selv har gjort med at lave connection til db og strukturerer din SQL som du har gjort hvor du nu medtager dine nye tekstfelter.
HUSK where ID = " & request.("id")

og så kan du evt. lave en SQL mere hvor du sletter fra den gamle tabel:

SQLslet = "DELETE * FROM tabel1 WHERE ID=" & Request("ID")

og så executer du dem begge:

Conn.Execute(strSQL, SQLslet)


var det forståeligt ?
Avatar billede fomse Nybegynder
02. august 2004 - 20:47 #5
Det tror jeg det er:-)
Kikker på det imorgen, er nød til at løbe!!!

På forhånd tak.

Fomse:-)
Avatar billede fomse Nybegynder
16. august 2004 - 11:52 #6
Hmm Kan ikke få det til at fungerer!!!
Kan du hjælpe mig?

Her er koden til "hovedsiden" visliste1.asp:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tilmeld</title>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
</head>
<body>

<%
dim conn

function OpenConn( DBName )

Set Conn = Server.CreateObject("ADODB.Connection")
ODBCpath = left(request.servervariables("PATH_TRANSLATED"), instrrev(request.servervariables("PATH_TRANSLATED"), "\"))
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ODBCpath & DBName

end function

sortering = Request.Querystring("sortering")
If sortering = "" then sortering = "aftaleDato Desc"

'Her skal skal stien stå til din database.mdb - er den placeret i sammen mappe som dette dokument skal det være som nedenfor, hvor database.mdb skal udskiftes med navnet på din database
OpenConn("../db.mdb")

'udskift tabelnavn med navet på din tabel
strSQL = "Select * from liste1 Order By "& sortering &""

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL, Conn, 1

top = rs.RecordCount
If top <> 0 then
MyArr = rs.GetRows()
end if

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>

<strong><font style="font-size: 12px;">Dette er liste 1</font></strong>
<br>
<br>
<a href="#" onClick="history.back(); return false;"onFocus="this.blur()">Tilbage</a><br>
<a href="visliste1slet.asp">Se slettede poster i liste 1</a><br>
<br>
<br>
<table cellspacing="0" cellpadding="0">
<tr>
<td class="Table" width="100"><strong><a href="visliste1.asp?sortering=omr">Område:</a></strong></td><td class="Table" width="100"><strong><a href="visliste1.asp?sortering=byg">Bygherre:</a></strong></td><td class="Table" width="100"><strong><a href="visliste1.asp?sortering=emne">Emne:</a></strong></td><td class="Table" width="100"><strong><a href="visliste1.asp?sortering=ark">Arkitekt:</a></strong></td><td class="Table" width="100"><strong><a href="visliste1.asp?sortering=ent">Entreprenør:</a></strong></td><td class="Table" width="100"><strong><a href="visliste1.asp?sortering=aftaleDato">Aftaledato:</a></strong></td><td class="Table">&nbsp;&nbsp;<strong>Slet</strong>&nbsp;&nbsp;</td><td class="Table">&nbsp;&nbsp;<strong>Tilmeld</strong>&nbsp;&nbsp;</td>
</tr>
<%
If top <> 0 then
For i=0 to (top-1)
  Response.Write "<tr><td class=""Table"" width=""100"">" & MyArr(1,i) & "</td><td class=""Table"" width=""100"">" & MyArr(2,i) & "</td><td class=""Table"" width=""100"">" & MyArr(3,i) & "</td><td class=""Table"" width=""100"">" & MyArr(4,i) & "</td><td class=""Table"" width=""100"">" & MyArr(5,i) & "</td><td class=""Table"" width=""100"">" & MyArr(6,i) & "</td><td class=""Table"" align=""center""><a href=flyt.asp?flytID=" & MyArr(0,i) & ">Ja</a></td><td class=""Table"" align=""center""><a href=tilmeldliste1Dato.asp?tilmeldID=" & MyArr(0,i) & ">Ja</a></td></tr>"
Next
End if
%>
</table>
</body>
</html>


Hvordan skal min tilmeldliste1Dato.asp så se ud?

Håber du forstår hvad jeg mener og gerne vil hjælpe!!!

Fomse:-)
Avatar billede phineas_phreak Nybegynder
16. august 2004 - 13:40 #7
Burde følgende ikke være tilstrækkeligt ?
synes det er en mærkelig måde du udskriver dit recordset. Men kan selvfølgelig godt være mig der ikke helt har fattet det.

Om ik andet så ved jeg ikke hvad din primære nøgle hedder. i følgende skal du evt ændre
<%= rs("id") %> til <%= rs("det din kolonne med ID nu hedder") %>

jeg viser dig lige de næste sider i et nyt indlæg. men prøv at se nærmere på nedenstående:

<html>
<head>
<title>Tilmeld</title>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
</head>
<body>

<%

' conn objekt
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("../db.mdb")

sortering = Request.Querystring("sortering")
If sortering = "" then sortering = "aftaleDato Desc"

'udskift tabelnavn med navet på din tabel
strSQL = "Select * from liste1 Order By "& sortering &""
Set rs = conn.Execute(strSQL)
%>

<strong><font style="font-size: 12px;">Dette er liste 1</font></strong>
<br>
<br>
<a href="#" onClick="history.back(); return false;"onFocus="this.blur()">Tilbage</a><br>
<a href="visliste1slet.asp">Se slettede poster i liste 1</a><br>
<br>
<br>
<table cellspacing="0" cellpadding="0">
<tr>
<td class="Table" width="100"><strong><a href="visliste1.asp?sortering=omr">Område:</a></strong></td>
<td class="Table" width="100"><strong><a href="visliste1.asp?sortering=byg">Bygherre:</a></strong></td>
<td class="Table" width="100"><strong><a href="visliste1.asp?sortering=emne">Emne:</a></strong></td>
<td class="Table" width="100"><strong><a href="visliste1.asp?sortering=ark">Arkitekt:</a></strong></td>
<td class="Table" width="100"><strong><a href="visliste1.asp?sortering=ent">Entreprenør:</a></strong></td>
<td class="Table" width="100"><strong><a href="visliste1.asp?sortering=aftaleDato">Aftaledato:</a></strong></td>
<td class="Table">&nbsp;&nbsp;<strong>Slet</strong>&nbsp;&nbsp;</td><td class="Table">&nbsp;&nbsp;<strong>Tilmeld</strong>&nbsp;&nbsp;</td>
</tr>

<%
If rs.BOF Or rs.EOF Then
  response.write("Tabellen er tom")
Else
  ' Så udskriver vi vores recordset udfra de ovenstående valgte kriterier
  Do While Not rs.EOF
%>

<tr>
    <td class="Table" width="100"><%= rs("omr") %></td>
    <td class="Table" width="100"><%= rs("byg") %></td>
    <td class="Table" width="100"><%= rs("emne") %></td>
    <td class="Table" width="100"><%= rs("ark") %></td>
    <td class="Table" width="100"><%= rs("ent") %></td>
    <td class="Table" width="100"><%= rs("aftaleDato") %></td>
    <td class="Table" align="center"><a href=flyt.asp?flytID="<%= rs("id") %>">Ja</a></td>
    <td class="Table" align="center"><a href=tilmeldliste1Dato.asp?tilmeldID="<%= rs("id") %>">Ja</a></td>
</tr>

<%
  rs.MoveNext
  LOOP

  ' Luk databaseforbindelse
  end if
  RS.Close
  conn.Close
  Set conn = nothing
  Set strSQL = nothing
%>

</table>

</body>
</html>
Avatar billede phineas_phreak Nybegynder
16. august 2004 - 13:47 #8
næste side som hedder flyt.asp ser således ud:

<body>
<%
' conn objekt
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("../db.mdb")

strSQL = "SELECT * FROM liste1 WHERE flytID = " & Request("flytID")
Set rs = conn.Execute(strSQL)
%>

<form name="form1" method="post" action="gemflyt.asp?flytID=<%= rs("id")%>">
    <input name="dato" type="text" value="<%= rs("omr") %>">
    <input name="dato" type="text" value="<%= rs("byg") %>">
    <input name="dato" type="text" value="<%= rs("emne") %>">
    <input name="dato" type="text" value="<%= rs("ark") %>">
    <input name="dato" type="text" value="<%= rs("ent") %>">
    <input name="dato" type="text" value="<%= rs("aftaledato") %>">
</form>
<%
conn.Close
Set conn = nothing
Set strSQL = nothing
%>
</body>

og den sidste side som jeg har valgt at kalde gemflyt.asp kommer lige om lidt.
Avatar billede phineas_phreak Nybegynder
16. august 2004 - 13:49 #9
lige en slåfejl.

formen skal se således ud:

<form name="form1" method="post" action="gemflyt.asp?flytID=<%= rs("id")%>">
    <input name="omr" type="text" value="<%= rs("omr") %>">
    <input name="byg" type="text" value="<%= rs("byg") %>">
    <input name="emne" type="text" value="<%= rs("emne") %>">
    <input name="ark" type="text" value="<%= rs("ark") %>">
    <input name="ent" type="text" value="<%= rs("ent") %>">
    <input name="aftaledato" type="text" value="<%= rs("aftaledato") %>">
</form>

det går jo ikke at samtlige felter hedder dato :)
Avatar billede phineas_phreak Nybegynder
16. august 2004 - 13:57 #10
sidste side skal se således ud:

<%
' conn objekt
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("../db.mdb")

omr = TRIM(Request.form("omr"))
byg = TRIM(Request.form("byg"))
emne = TRIM(Request.form("emne"))
ark = TRIM(Request.form("ark"))
ent = TRIM(Request.form("ent"))
aftaledato = TRIM(Request.form("aftaledato"))

flytSQL = "UPDATE DISTINCTROW Tabel2 SET omr='"&omr&"',byg='"&byg&"',emne='"&emne&"',ark='"&ark&"',ent='"&ent&"', '"&aftaledato&"' WHERE flytID=" & Request("flytID")
sletSQL = "DELETE * FROM tabel1 WHERE id=" & Request("flytID")

Conn.execute(flytSQL,sletSQL)

conn.Close
Set conn = nothing
Set flytSQL = nothing
Set sletSQL = nothing

response.write("den valgte post er nu flyttet fra tabel1 til tabel2")
%>

der kan være nogle småfejl med datatyper og navne men ellers ser 3. side nogenlunde sådan ud.

Jeg lægger et svar hvis du kunne bruge noget af det
Avatar billede fomse Nybegynder
07. september 2004 - 15:29 #11
Undskyld det tog sin tid:-)
Fik det til at fungerer, tak for hjælpen
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