Probleme beim Editieren

Torgath

Mitglied
So, hab ein kleines Proplem...

Ich hab diese beiden Quellcodes:

list.asp:

Code:
<%@ Language=VBScript %>
<%
dim vararray(16)
dim vartable
vartable = Request("vtable")
Response.Write vartable%><br>
<%Response.Write vtable%><br>
<%="test123"%>
<%
Select Case vartable
 Case "mitarbeiter"
  'Response.Write "1"
  vararray(0) = "glo_Mitarbeiter"
  vararray() = ""
  vararray() = ""
  vararray() = ""
  vararray() = ""
  vararray() = ""
 Case "kunden"
  'Response.Write "2"
  vararray(0) = "tbl_customer"
  vararray(1) = "fcompany"
  vararray(2) = "fzip"
  vararray(3) = "flocation"
  vararray(4) = "vcompany"
  vararray(5) = "vzip"
  vararray(6) = "vlocation"
  vararray(7) = "id"
  vararray(8) = "company"
  vararray(9) = "street"
  vararray(10) = "zip"
  vararray(11) = "location"
  vararray(12) = "ID"
  vararray(13) = "Firma"
  vararray(14) = "Strasse"
  vararray(15) = "PLZ"
  vararray(16) = "Ort"
 Case else
  'Response.Write "3"
  'Response.Write vartable
  'Request.QueryString (vartable)
  vararray(0) = "tbl_contact"
  vararray(1) = "fname"
  vararray(2) = "ffirstname"
  vararray(3) = "fzip"
  vararray(4) = "vname"
  vararray(5) = "vfirstname"
  vararray(6) = "vzip"
  vararray(7) = "id"
  vararray(8) = "name"
  vararray(9) = "firstname"
  vararray(10) = "zip"
  vararray(11) = "location"
  vararray(12) = "ID"
  vararray(13) = "Vorname"
  vararray(14) = "Name"
  vararray(15) = "PLZ"
  vararray(16) = "Ort"
end Select%>
 
<%

dim vname ' ---
dim vfirstname ' ---
dim vzip ' ---
dim vcompany ' ---
dim vlocation ' ---

dim counter ' ---
counter = 1
 
dim intpagecounter
intpagecounter = 1
dim pagesize ' --- Definieren der Seitengröße (Anzahl Datensätze pro Seite)
pagesize = 5
dim actpage
actpage = Request("PN")

'Response.Write vararray(1)%><br><%
'Response.Write vararray(2)%><br><%
'Response.Write vararray(3)%><br><%
vararray(4) = Request(vararray(1))
if vararray(4) <> "" Then 
    strCond = "and " & vararray(8) & " like " & chr(34) & "%" & vararray(4) & "%" & chr(34)
End if
vararray(5) = Request(vararray(2))
if vararray(5) <> "" Then 
    strCond = strCond & " and " & vararray(9) & " like " & chr(34) & "%" & vararray(5) & "%" & chr(34) 
End if
vararray(6) = Request(vararray(3))
if vararray(6) <> "" Then 
    strCond = strCond & " and " & vararray(10) & " like " & chr(34) & vararray(6) & "%" & chr(34) 
End if
'Response.Write vararray(1)%><br><%
'Response.Write vararray(2)%><br><%
'Response.Write vararray(3)%><br><%
'Response.Write strCond %><br><%
set ors = CreateObject("ADODB.RECORDSET") ' --- ors = objetrecordset
set ocn = CreateObject("ADODB.Connection") ' --- ocn = objectconnect
ors.PageSize = pagesize
ors.CacheSize = pagesize
ocn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath(".") & "\db\adb.mdb;"'Verbindung zur Datenbank wird erstellt
ors.open "Select * from " & vartable & " where 1=1 " & strCond & " order by ID ",ocn,3,3
if actpage = "" or not isnumeric(actpage) or cint(actpage) > cint(ors.PageCount) then
actpage = 1
end if
dim datarec
datarec = ors.RecordCount
dim maxpage
maxpage = fix(datarec/pagesize)
if (maxpage*pagesize) < datarec then maxpage = maxpage + 1
if counter > maxpage then counter = maxpage 
%>
<%
sub arrowleft
 if cint(actpage) <= 1 then
  response.Write Server.HTMLEncode("<<")
 else
  Response.Write "<a href='list.asp?PN=" & actpage - 1 &  "&" &vararray(1) & "=" & Request(vararray(1)) &  "&" &vararray(2) & "=" & Request(vararray(2)) &  "&" &vararray(3) & "=" & Request(vararray(3)) & "&vtable=" & vartable & "'> " & Server.HTMLEncode("<<") & "</a>"
 end if
end sub

sub arrowright
 if cint(actpage) < cint(maxpage) then
     Response.Write "<a href='list.asp?PN=" & actpage + 1 & "&" & vararray(1) & "=" & Request(vararray(1)) & "&" & vararray(2) & "=" & Request(vararray(2)) &  "&" &vararray(3) & "=" & Request(vararray(3)) & "&vtable=" & vartable & "'> " & Server.HTMLEncode(">>") & "</a>"
 else
     response.Write Server.HTMLEncode(">>")
 end if
end sub

sub sitenumber
 for intpagecounter = 1 to ors.PageCount
  if cint(intpagecounter) = cint(actpage) then
   Response.Write intpagecounter & ""
  else
   Response.Write "<a href='list.asp?PN=" & intpagecounter &  "&" & vararray(1) & "=" & Request(vararray(1)) &  "&" & vararray(2) & "=" & Request(vararray(2)) &  "&" & vararray(3) & "=" & Request(vararray(3)) & "&vtable=" & vartable & "'> " & intpagecounter & " </a>"
  end if
 next
end sub
%>
<%
if not ors.EOF then
 ors.AbsolutePage = actpage
end if
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<table border=1 align=center>
<tr>
<td colspan="9">Adressliste; Seite <%=actpage%>; Anzahl Datensätze: <%=datarec%>; <%=maxpage%></td>
</tr>
<tr>
 <td>Check</td>
    <td><%=vararray(12)%></td>
    <td><%=vararray(13)%></td>
    <td><%=vararray(14)%></td>
    <td><%=vararray(15)%></td>
    <td><%=vararray(16)%></td>
    <td>Detail</td>
    <td>Editieren</td>
    <td>Löschen</td>
</tr>
<%
if ors.RecordCount > 0 then
    do while not ors.EOF and counter <= pagesize%>
        
        <tr>
   <td>
   <input type="checkbox" name="Auswahl" value="Check">
   </td>
            <td>
            <%=ors("" & vararray(7) & "")%>&nbsp;
            </td>
            <td>
            <%=ors("" & vararray(9) & "")%>&nbsp;
            </td>
            <td>
            <%=ors("" & vararray(8) & "")%>&nbsp;
            </td>
            
            <%'=ors("street")%>
            <%'=ors("number")%>
            
            <td>
            <%=ors("" & vararray(10) & "")%>&nbsp;
            </td>
            <td>
            <%=ors("" & vararray(11) & "")%>&nbsp;
            </td>
            
            <%'=ors("phone")%>
            <%'=ors("fax")%>
            <%'=ors("e_mail")%>
            
            <td>
            <a href="contact.asp?ident=<%=ors("" & vararray(7) & "")%>&vtable=<%=vartable%>" target="Edit">Detail</a>
            </td>
            <td>
   <a href="edit.asp?ident=<%=ors("" & vararray(7) & "")%>&vtable=<%=vartable%>" target="Edit">Editieren</a>
            </td>
            <td>
            <a href="delete.asp?ident=<%=ors("" & vararray(7) & "") & vararray(1) & "=" & Request(vararray(1)) & vararray(2) & "=" & Request(vararray(2)) & vararray(3) & "=" & Request(vararray(3))%>&vtable=<%=vartable%>" onClick="return confirm('Wirklich Löschen?')">Löschen</a>
            </td>
        </tr>
        <%counter = counter + 1
        ors.MoveNext
    loop
else
    response.Redirect "ask.asp" 'Sollte die Abfrage keinen geeigneten Wert finden wird die Seite neu geladen.
end if
%>
</table>
<table align=center>
 <tr>
  <td>
  <%
  arrowleft
  %>
  </td>
  <td>
  <%
  sitenumber
  %>
  </td>
  <td>
  <%
  arrowright
  %>
  </td>
 </tr>
</table>
<br>
<br>
<center><%Response.Write "<a href='select.asp?=&vararray(1)=" & Request("vararray(1)") & "&vararray(2)=" & Request("vararray(2)") & "&vararray(3)=" & Request("vararray(3)") & "'>Tabellenauswahl</a>" ' target='_parent'%> - 
<%Response.Write "<a href='ask.asp?=&vararray(1)=" & Request("vararray(1)") & "&vararray(2)=" & Request("vararray(2)") & "&vararray(3)=" & Request("vararray(3)") & "'>Neue Abfrage starten</a>" ' target='_parent'%>
</center>
<%ors.Close
set ors = nothing
ocn.Close
set ocn = nothing
%>
</BODY>
</HTML>

edit.asp:

Code:
<%@ Language=VBScript %>
<%
dim nID
dim vartable
dim vararray
nID = Request("ident") ' mitgeliederte ID
vartable = Request("vtable") ' mitgelieferter Tabellenname
set ors = CreateObject("ADODB.RECORDSET") 'ors = objetrecordset
set Ocn = CreateObject("ADODB.Connection") 'ocn = objectconnect
ocn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath(".") & "\db\adb.mdb;"'Verbindung zur Datenbank wird erstellt
ors.Open "Select * from " & vartable &  " where id= " & nID,ocn,1,3 'Abfrage
vararray = split(space(ors.Fields.count)," ") 
textfldvararray = vararray
i = 0 ' i wird als 0 definiert

for each fld in ors.Fields ' for each...next-Schlaufe fld = ein Feld
 vararray(i) = fld.value ' Feldinhalt ist Variabler Array 
 textfldvararray(i) = "TBOX_" & fld.Name ' TBOX_Feldname ist Variabler Textfeldarray 
 i = i + 1 ' Zähler
next

if Request("Save") <> ""  then
 i = 0 
 for each fld in ors.Fields
  if i > 0 then
  'on error resume next 
  'ors.Fields(fld.name) = request(textfldvararray(i))
  'if err <> 0 then
  ' Response.Write fld.name
  ' Response.End  
  'End if 
  'on error goto 0
  End if
  i = i + 1
  
 next
 ors.Update 
 
 Response.Redirect "list.asp?" & Request.QueryString()
end if

%>
<HTML>
 <HEAD>
 <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
 </HEAD>
 <BODY><form target="Liste" action="edit.asp" method="post" id=form1 name=form1>
  <table border=1 align=center>
   <%=Request.QueryString()%><br>
   <%=vartable%>
   <%
   i = 0 
   for each fld in ors.Fields ' for each...next-Schlaufe
     if i > 0 then ' %>
   <tr>
    <td><%=Fld.name%></td>
    <td><input type="text" value="<%=vararray(i)%>"  name="<%=textfldvararray(i)%>"></td>
   </tr>
    
   <%
   End if 
   i = i + 1
   Next%>
   <tr>
    <td colspan="2" align="center"><input type="submit" value="Ändern" id="submit1" name="Save">
    <input type="hidden" value="<%=nID%>"  name="ident">
    <input type="hidden" value="<%=vartable%>" name="vtable">
    </td>
   </tr>
  </table></form>
 </BODY>
</HTML>
<%ors.Close
set ors = nothing
ocn.Close
set ocn = nothing
%>

list.asp ist wie ihr sicher seht für die Auflistung einer Tabelle zuständig und edit.asp für die Editierung! (Luzie sollte list.asp noch kennen... ;))

Nun will ich einen Datensatz editieren, aber es kommt nur dieser Fehler:


Microsoft JET Database Engine Fehler "80040e14'
Syntaxfehler in FROM-Klausel. /list.asp, line 119

Ich hab schon alles mögliche versucht, aber keine Lösung gefunden... könnt ihr mir helfen?
 

Luzie

Erfahrenes Mitglied
Hi

vararray enthält keinen Wert, deshalb vermutlich der Fehler wo auch immer.
Du hast vararray mit 16 Postionen initialisiert und die werden erwartet, aber case "mitarbeiter" hat sie nicht.

Beschreib Dein Problem mal etwas näher, evtl gibts eine andere Lösung.
 

Torgath

Mitglied
1. Hab ich mein Problem gestern spät abends noch gelöst... toll... wenn ich kurz vor dem einschlafen bin so um 12.30 bin ich am produktivsten... *schlagtmichtot!*
Aber dazu gleich mehr...

2. Der case "mitarbeiter" war bisher nie relevant und auch nicht in Betrieb... hab da wohl vergessen dies zu sagen. sorry... meine Probleme bezogen sich bisher immer nur auf "kunden" oder "kontakte"...

3. Das Problem war die Weiterleitung der Variable von edit.asp auf list.asp und somit die endgültige Speicherung...
Gelöst wurde dies dadurch, das ich auf Zeile 39 von edit.asp
Response.Redirect "list.asp?" & Request.QueryString()
in
Response.Redirect "list.asp?vtable=vartable"
änderte...