tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
1041
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Meitli Tutorials.de Gastzugang
    Hi Zusammen

    Ich hab ein grösseres Projekt und sitzte seit Stunden am gleichen Problem.

    Es lassen sich keine Daten aus einem Formular in die Datenbank eintragen.

    Das Projekt: Es gibt verschiedene Kurse, welche Unterlagen verwenden, diese Unterlagen werden an einem Ort gespeichert. In folgendem File werden zuerst die Unterlagen, welche schon dem Kurs zugeordnet sind ausgegeben. Das funktioniert, dass heisst auch die Datenbankverbindung funktioniert. Unter der Ausgabe befindet sich eine Form, in welcher ich eine weitere vorhandene Unterlagen hinzufügen kann. Die vorhanden Daten werden in diesem Auswahlfenster angezeigt.
    Jetzt zum Probelm: Wenn ich auf "Hinzufügen" klicke passiert nichts, ausser das die Seite neu geladen wird.

    Zum Aufbau der Datenbank: In der Tabelle Kursunterlagen wird die Fremdschlüssel KursID und UnterlagenID eingetragen. So können mehrere Kurse die gleiche Unterlagen verwenden, aber auch ein einzelner Kurs kann mehrer Unterlagen verwenden.

    Der Formularcode:
    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
    
    <form name="form1" method="post" action="">
        <table width="100%" border="0" cellspacing="1" bordercolor="#CCCCCC" ID="Table6">
           <tr bgcolor="#B7C2D0"> 
             <td width="25%"><font face="Arial, Helvetica, sans-serif" size="2"><b>Unterlagen: 
                          </b></font></td>
                        <td width="75%"> <font face="Arial, Helvetica, sans-serif" size="2"> 
                          <select name="sUnter" ID="Select4">
                            <option value="no" selected>
                            <% 'Unterlagen in Auswahlmenu einlesen %>
                            </option>
                            <%
             Set rs = KPLcon.Execute("SELECT * FROM Unterlagen")
             do until rs.EOF%>
                            <option value="<%response.write(rs("UnterlagenID"))%>">  
                 <%response.write(rs("Unterlagen"))%>
                            &nbsp; 
                                         <%response.write(rs("Speicherort"))%>
                            </option>
                            <%rs.MoveNext
             loop
            rs.close %>
                          </select>
                          </font></td>
                      </tr>
                      <tr bgcolor="#B7C2D0"> 
                        <td width="25%"> <font face="Arial, Helvetica, sans-serif" size="2"> 
               <input type="hidden" name="KursID" value=<%Response.Write(Request("KursID"))%> ID="Hidden1">
                          &nbsp; </font></td>
                        <td width="75%"> <font face="Arial, Helvetica, sans-serif" size="2"> 
                 <input type="submit" name="Submit" value="&Uuml;bernehmen" ID="Submit1">
                          </font></td>
                      </tr>
                    </table>
            </form>

    Der Einfügecode:

    Code :
    1
    2
    3
    4
    5
    
    if Request("action") = "new" then
     
    Set rs = KPLcon.Execute("INSERT INTO Kursunterlagen (KursID, UnterlagenID) VALUES ('" & Request("KursID") & "', '" & Request("UnterlagenID") & "')")
     
    end if

    Wäre echt froh wenn mir jemand helfen könnte.

    Liebe Grüsse
    Meitli
     

  2. #2
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    Hi

    habe den Scriptcode überflogen aber ich sehe kein Feld namens action und auch nicht Unterlagenid

    Ferner kommt es beim insert darauf an, ob kursid bzw. Unterlagenid Felder vom type Integer sind. Dann nämlich gehören die Hochkomma weg (Access)

    Versuchs mal so:

    Code :
    1
    2
    3
    4
    5
    
    if Request.Form.Count>0 then
     
    Set rs = KPLcon.Execute("INSERT INTO Kursunterlagen (KursID, UnterlagenID) VALUES (" & Request.Form("KursID") & ", " & Request.Form("sUnter") & ")")
     
    end if
     
    liebe Grüße, die Luzie

  3. #3
    Meitli Tutorials.de Gastzugang
    Es ist nicht der ganze Code vorhanden! Dieser wäre zu lang um zu posten!

    Aber dein Code hat funktioniert. Danke viel mal! Endlich kann ich wieder weiterarbeiten!

    P.S. Hast du auch gerade eine Lösung für das Löschen?

    Das ist der Löschlink:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    <td width="10%"> 
         <div align="center"><font face="Arial, Helvetica, sans-serif" size="2">
              <a href="kspeicherort.asp?action=del&KurstageID=<%response.write(rs("UnterlagenID"))%>&KursID=<%response.write(Request("KursID"))%>" onClick="return sure()">
    L&ouml;schen
    </a><
    /div>
    </td>

    Das ist der Löschbefehl:
    Code :
    1
    2
    3
    
    if Request("action") = "del" then
    Set rsdel = KPLcon.Execute("DELETE FROM Kursunterlagen WHERE KursunterlagenD=" & Request("KursunterlagenID") & "")  
    end if

    Mit diesem Befehl kommt immer der selbe Fehler nach dem ausführen:

    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

    [Microsoft][ODBC Microsoft Access Driver] Syntaxfehler (fehlender Operator) in Abfrageausdruck 'UnterlagenID='.
    Geändert von Meitli (22.06.05 um 14:51 Uhr) Grund: Hab was vergessen...
     

  4. #4
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    Hi

    das ist eigenartig.

    Die Meldung besagt, dass in der Where-Bedingung des Delete-Statements kein Wert übergeben wird.

    Dieses heißt in Deinem Script KursunterlagenD=" in der Fehlermeldung aber UnterlagenID=.

    Das lässt jetzt irgendwie die Vermutung aufkommen, dass sich die Meldung auf ein anderes Script bezieht oder Du hast es geändert. Wie auch immer.

    Du rufst den Request aus dem QueryString ("KursunterlagenID") im Statement auf. Aber dieser Parameter ist in Deiner URL nicht zu finden. Dort heißt er vermutlich KurstageID.

    Du musst einfach mal etwas sauberer arbeiten.

    Wenn Du einen Parameter aus einer URL übergibst, sollstest Du dies dem Server mitteilen und zwar mir Request.QueryString("wert"). Genauso verhält es sich mit dem Parameter aus dem Formular Request.Form("wert"). Gibst Du nur den Request() an, dann geht das auf die Performance, denn er sucht jetzt alle möglichen Konstellationen durch von Cookie bis zu den ServerVarialben.
     
    liebe Grüße, die Luzie

  5. #5
    Meitli Tutorials.de Gastzugang
    Es funktioniert! Ich habe ein paar Mal zu viel UnterlagenID verwendet, wo eigentlich KursunterlagenID hätte hinkommen sollen.

    Das mit dem Code ist nicht meine Schuld! Ich bearbeite nur das Projekt, dass heisst ich mach einige Erweiterungen. Und mein Vorgänger hat seinen Code nicht besonders schön geschrieben. Und wenn ich dann mal etwas kopier, kann es schon vorkommen das ich ein Fehler auftaucht, oder ich einen Fehler in der bisherigen Anwendung finde.

    Sorry! Und nocheinmal danke. Du hast mir sehr geholfen!
     

Ähnliche Themen

  1. Daten in Datenbank eintragen
    Von $TîM$ im Forum Relationale Datenbanksysteme
    Antworten: 7
    Letzter Beitrag: 27.04.06, 13:55
  2. Antworten: 3
    Letzter Beitrag: 28.06.05, 15:03
  3. Daten mit Form in Datenbank eintragen
    Von Hampfibius im Forum PHP
    Antworten: 1
    Letzter Beitrag: 12.06.05, 13:46
  4. Daten in einer Access datenbank über Formular eintragen
    Von bomber080674 im Forum .NET Archiv
    Antworten: 14
    Letzter Beitrag: 21.04.05, 20:55
  5. Daten in datenbank eintragen
    Von AndreBrueck im Forum .NET Archiv
    Antworten: 3
    Letzter Beitrag: 17.09.04, 14:02