Seite kann nicht angezeigt werden, Hilfe!

stud3

Aktives Mitglied
hallo,
ich habe versucht bei dem folgenden Code, den Fehler stundenlang zu finden, korrigiert auch, aber die Seite wird mir nicht angezeigt, gerne würde ich das posten, falls sich jemand den kompletten Code anschauen möchte, das ist eigentlich ein sehr langer Code, ein Teil davon habe ich in einer separaten Datei gespeichert, um schneller Fehler zu finden. Die Eingabefelder sind Nummer(int), RC_Nummer(char), Beginn(datum), Ende(datum), RC_Description(char), Description (char) und Description_plausibel(char), wo könnte der Fehler sein?:

CODE <%
'Hier ändern  (Hier kann ein Primärschlüssel benutzt werden)
Dim Form_action, RC_Nummer   'Schritt 1: Produkt_id durch PK-Spaltennamen ersetzen                
Form_action     = Request("form_action")
RC_Nummer       = Request("RC_Nummer")   'Schritt 2: Produkt_id durch PK-Spaltennamen ersetzen

%>
<html>
<%
Dim objRS
Dim strConn
Dim SQLquery

Set Conn = Server.CreateObject("ADODB.Connection")
strConn = "" 'Schritt 3: BusinessData durch Datenbanknamen ersetzen
Conn.Open strConn

'Welche Funktion soll durgeführt werden, wenn der 'form_action' auf
'chg, chg_save, new, new_save oder del gesetzt ist?

Select Case Form_action
Case "chg"
   ShowChangeForm()
Case "chg_save"
   ChangeIt()
Case "new"
   ShowNewForm()
Case "new_save"
   InsertIt()
Case "del"
   DeleteIt()
End Select

%></html>


<%
private function ShowNewForm()


   %>

<head>
      <title>TABELLE Production_Problem</title> <!-- Schritt 4: LU_PRODUKT durch Tabellennamen ersetzen -->
      <link rel="stylesheet" type="text/css" href="../_rootverzeichnis/format.css">
   </head>
   <body  bgcolor=#ffffea>
   <form action="/_rootverzeichnis/change1.asp" method="post">
<input type="hidden" id="form_action" name="form_action" value="new_save">
<div>
 <table align=center cellspacing=1 cellpadding=0 width="100%" border=0>
       <tr><td height=25 class="headback"><font size=2><b>Production_Problem - NEUEN EINTRAG ERSTELLEN</b></font></td></tr>
       <tr><td height=15 class="textback" valign=middle style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:13px">Bitte füllen Sie die Eingabefelder aus.
 Bitte achten Sie weiterhin auf die korrekte Angabe Ihrer Daten:</td>
       </tr>
       </table>
       <br>
       <div>
       <table border=0 width=100% align=center height="400">
    <% ' Schritt 5:  Produkt, Dienstleistung, Report durch Spaltennamen oder gewünschte Labelbezeichnungen ersetzen %>
 
       <tr><td class="text"><b>Nummer:</b></td></tr>
 <tr><td class="text"><input type="text" name="Nummer"  size="10" maxlength="10" value=""></td></tr>
 <tr><td class="text" ><b>RC_Nummer:</b></td></tr>
 <tr><td class="text"><input type="text" name="RC_Nummer"  size="10" maxlength="10" value=""></td></tr>
 <tr><td class="text"><b>Beginn:</b>
 
 <select name="tag">
 <%
 datum_Beginn = Now()
 For i=1 To 31
       Response.Write("<option value = " &i)
    If i=Day(datum_Beginn) Then
    Response.Write("selected")
    Response.Write(">")
    Response.Write(i)
    Next
 Response.Write("</select><select name=monat>")
 For i=1 To 12
       Response.Write("<option value = " &i)
    If i=Month(datum_Beginn) Then
    Response.Write("selected")
    Response.Write(">")
    Response.Write(i)
    Next
 Response.Write("</select>")
 newdate = DateAdd("yyyy", 2, datum_Beginn)
 newYear = Year(newdate)
 Response.Write("<select name=jahr>")
 For i = Year(datum_Beginn) To newYear
       Response.Write("<option value = " &i)
    If i=Year(datum_Beginn) Then
    Response.Write("selected")
    Response.Write(">")
    Response.Write(i)
 Next
 Response.Write("</select>")
 Response.Write("         ")
 Response.Write("<select name=stunde>")
 For i = 0 To 23
       Response.Write("<option value = " &i)
    If i = Hour(datum_Beginn) Then
    Response.Write(">")
    Response.Write(i)
 Next
 Response.Write("</select><b>:</b><select name=Minute>")
 For i= 0 To 59
       Response.Write("<option value=" &i)
    If i = Minute(datum_Beginn) Then
    Response.Write("selected")
    Response.Write(">")
    Response.Write(i)
 Next
 %>
 </select></td></tr>
 <tr><td class="text"><b>Ende:</b>
 
 <select name="tag">
 <%
 datum_Ende = Now()
 For i=1 To 31
       Response.Write("<option value = " &i)
    If i=Day(datum_Ende) Then
    Response.Write("selected")
    Response.Write(">")
    Response.Write(i)
    Next
 Response.Write("</select><select name="monat">")
 For i=1 To 12
       Response.Write("<option value = " &i)
    If i=Month(datum_Ende) Then
    Response.Write("selected")
    Response.Write(">")
    Response.Write(i)
    Next
 Response.Write("</select>")
 newdate = DateAdd("yyyy", 2, datum_Ende)
 newYear = Year(newdate)
 Response.Write("<select name=jahr>")
 For i = Year(datum_Ende) To newYear
       Response.Write("<option value = " &i)
    If i=Year(datum_Ende) Then
    Response.Write("selected")
    Response.Write(">")
    Response.Write(i)
 Next
 Response.Write("</select>")
 Response.Write("         ")
 Response.Write("<select name=stunde>")
 For i = 0 To 23
       Response.Write("<option value = " &i)
    If i = Hour(datum_Ende) Then
    Response.Write(">")
    Response.Write(i)
 Next
 Response.Write("</select><b>:</b><select name=Minute>")
 For i= 0 To 59
       Response.Write("<option value=" &i)
    If i = Minute(datum_Ende) Then
    Response.Write("selected")
    Response.Write(">")
    Response.Write(i)
 Next
 %>
 </select></td></tr>
 <tr><td class="text"><b>RC_Description:</b></td></tr>
 <tr><td class="text"><textarea name="RC_Description" rows=5 cols=30></textarea></td></tr>
 <tr><td class="text"><b>Description:</b></td></tr>
 <tr><td class="text"><textarea name="Description" rows=5 cols=30></textarea></td></tr>

 <tr><td>Ist die Description plausibel?</td></tr>
 <tr><td><input type=radio value="Ja" name="Description_plausibel" checked>Ja <input type=radio value="Nein" name="Description_plausibel">Nein</td></tr>

    </table></div><br>
    <table width=100% align=center>
       <tr><td width=100% height=40 class="textback"><center><input type="submit" value="Neuen Eintrag speichern" > 
       <input type="button" value="Abbrechen" style="width:7em" onClick="self.close()" ></center></td></tr>
    </table></form>
</body>
<% end function

private function InsertIt()
'****************************************************************************************
'*** Funktion zum Hinzufügen der in die Eingabefelder eingetragene Werte in die Tabelle
'*** Eingabe: ---
'*** Ausgabe: eingetragene Daten werden durch das Request eingelesen
'*** Vorbedingungen:   1. Es werden keine doppelten Einträge für das Feld "Produkt" übernommen, sonst Meldung
'***                   2. "Produkt" und "Dienstleistung" müssen einen Wert beinhalten
'****************************************************************************************

%>
<head>
<title>Eintrag speichern</title>
<link rel="stylesheet" type="text/css" href="../_rootverzeichnis/format.css">
</head>

<%
'Das Request-Objekt enthält vom Browser gesendete und vom Server generierte Daten. Es wird beispiesweise verwendet, um Formulareingaben zu verarbeiten.
'Schritt 9: Produkt, Dienstleistung und Report durch Spaltennamen oder gewünschte Labelbezeichnungen ersetzen
Nummer= Request("Nummer")
RC_Nummer= Request("RC_Nummer")
datum_Beginn = Request.Querystring("tag") & "." & Request.Querystring("monat") & "." & Request.Querystring("jahr") & chr(32) & Request.Querystring("stunde") & chr(32) & Request.Querystring("Minute")
datum_Beginn=CDate(datum_Beginn)
datum_Ende = Request.Querystring("tag") & "." & Request.Querystring("monat") & "." & Request.Querystring("jahr") & chr(32) & Request.Querystring("stunde") & chr(32) & Request.Querystring("Minute")
datum_Ende=CDate(datum_Ende)

RC_Description= Request("RC_Description")
Description = Request("Description")
Description_plausibel= Request("Description_plausibel")


'Schritt 10: Report durch Spaltennamen(e) ersetzen die Null-Einträge haben dürfen
If (RC_Description="") Then RC_Description=Null   'Wenn beim "Report" nichts eingegeben, kann das Eingabefeld leer bleiben
'Schritt 11: Produkt, Dienstleistung durch Spaltennamen(e) ersetzen die keine Null-Einträge haben dürfen
If ((Nummer="") OR (RC_Nummer="")) Then   'Wenn nichts bei "Produkt" eingegeben oder bei "Dienstleistung" asugewählt wurde:
%>
<body bgcolor=#ffffea>
<table align=center><tr><td class="textback">Sie haben nicht alle benötigten Felder ausgefüllt.
Klicken Sie auf den Zurück-Button in Ihrem Browser, um die Eingaben zu ergänzen</td></tr></table>
<br><br>
<p align="center"><input type="button" value="Zurück" onClick="history.back()"></p>
</body>
<% Else %>    
<%  
   'Durch SQL_test und RS_test wird geprüft ob es in der Datenbank das eingegebene "Produkt" schon in der Tabelle mehrmals vorkommt
   Dim SQL_test
   Set objRS=Server.CreateObject("ADODB.Recordset")
   
 
   'Schritt 12: Lu_Produkt durch Tabellennamen und Produkt durch Spaltennamen ersetzen, d.h. welche Spalte(n) in der Tabelle dürfen keine doppelte Einträge beinhalten    
   SQL_test="SELECT COUNT(*) FROM Production_Problem WHERE RC_Nummer='" & Request("RC_Nummer") & "'"
   Set RS_test=Conn.Execute(SQL_test)
   If RS_test(0)=0 Then     'wenn das nicht der Fall wäre:
   objRS.Cursortype = 1 'adOpenKeyset223, der Cursortype des Recordsets vor Öffnen des Recordsets wird auf adOpenKeyset gesetzt.
   objRS.Locktype = 3 'adLockOptimistic, Datenbank-Locking, das ein Benutzen der Update bzw. UpdateBatch Methoden erlaubt, dabei wird die LockType Eigenschaft auf adLockOptimistic (für Update) gesetzt
SQLquery="SELECT * from Production_Problem"  'Schritt 13: alle Tabellen aus der einzusetzenden Tabelle auswählen
   objRS.Open SQLquery, strConn
   objRS.AddNew  

   'Schritt 14: Produkt, Dienstleistung und Report durch Spaltennamen ersetzen objRS("Spaltenname") = Labelbezeichnung
   objRS("Nummer") = Nummer
   objRS("RC_Nummer") = RC_Nummer
   objRS("Beginn") = datum_Beginn
objRS("Ende") = datum_Ende

objRS("RC_Description") = RC_Description
objRS("Description") = Description
objRS("Description_plausibel") = Description_plausibel
   objRS.Update            'Benutzen der ADO Methoden Update oder UpdateBatch: Dabei wird ein (leeres) ADO Recordset geöffnet, mittels der AddNew Methode ein neuer Datensatz oder mehrere Datensätze angefügt, und das geänderte Recordset dann durch Ausführen der Update (bzw. UpdateBatch) Methode wieder in die Tabelle geschrieben.
   objRS.UpdateBatch
   objRS.close
   Set objRS=Nothing
   Conn.Close
%>
<head>
<link rel="stylesheet" type="text/css" href="../_rootverzeichnis/format.css">
</head>
<body bgcolor="#ffffea">


<table><tr><td class="textback" height=15>Sie haben folgenden Datensatz in die Tabelle hinzugefügt:</td></tr></table>
<% 'Schritt 15: Produkt, Dienstleistung und Report durch Labelbezeichnungen ersetzen %>

<p ><b>Nummer:</b> <%= Nummer %></p>
<p ><b>RC_Nummer:</b> <%= RC_Nummer %></p>
<p ><b>Beginn:</b> <%= datum_Beginn %></p>
<p ><b>Ende:</b> <%= datum_Ende %></p>
<p ><b>RC_Description:</b> <%= RC_Description %></p>
<p ><b>Description:</b> <%= Description %></p>
<p ><b>Ist die Description plausibel?:</b> </p>
<%
If Description_plausibel = "Ja" Then
Response.Write("<p>Ja</p>")
Else
Response.Write("<p>Nein</p>")
End If %>


<center><p ><b><font color="#003366">Ihr Eintrag wurde gespeichert!</font></b></p></center>
<br>
<p align="center"><input type="button"  value="Schließen" onclick="self.close()" ></p>

</body>

    <%
 'falls der Eintrag mehrmals in der Datenbank vorkommt
 Else %>
<head>
<link rel="stylesheet" type="text/css" href="../_rootverzeichnis/format.css">
</head>
<body bgcolor="#ffffea">
<table align=center><tr><td class="textback" height=15>
<% 'Schritt 16: Produkt durch Labelbezeichnung ersetzen, die LB entspricht die Spalte(n) in der Tabelle die keine doppelten Einträge haben dürfen %>
Die RC_Nummer <b><%= RC_Nummer %></b> existiert schon in der Tabelle.<br>Die von Ihnen hinzugefüten Daten an der Tabelle konnten nicht vorgenommen werden, da der Index, Primärschlüssel oder die Beziehung mehrfach vorkommende Werte enthalten würde.</td></tr></table>
<br><br>
<p align="center"><input type="button" value="Zurück" onclick="history.back()"></p>
</body>
    <% End If %>
<% End If %>
<% end function
   



private function DeleteIt()
'****************************************************************************************
'*** Funktion zum Löschen des ausgewählten Datensatzes
'*** Eingabe: ---
'*** Ausgabe: Datensatz wird mit Hilfe der SQL Anweisung DELETE aus der Tabelle gelöscht
'****************************************************************************************
%>

<head><title>TABELLE Production_Problem</title>
<link rel="stylesheet" type="text/css" href="../_rootverzeichnis/format.css">

</head>
<body bgcolor="#ffffea">
<table align="center" width="380" height="40">
<td class="textback" align="center"><b>Der Datensatz wurde erfolgreich gelöscht!</b></td>
</table><br>
<p align="center"><input type="button" value="Schliessen" onclick="self.close()"></p>

     
<%
'Schritt 28: LU_Produkt durch Tabellennamen, Produkt_id durch PK-Spaltennamen ersetzen
 
SQLquery = "DELETE FROM Production_Problem WHERE RC_Nummer='" & Request("RC_Nummer") & "'"
Set objRS = Conn.Execute(SQLquery)  
%>
 
 
<% end function %>

</body>  
</html>
 
Ich schätze mal, dass die Seite nicht angezeigt wird, wenn keine Form_Action übergeben wird. Je nachdem kann es auch vorkommen, dass eine Fehlermeldung nicht auf der Seite angezeigt wird (weil sie z.B. nicht in gültigem HTML steht) und man im HTML-Source der Seite nachsehen muss.

Mit einem "Case Else" in diesem "Select Case Form_Action", das irgendeinen Text ausgibt, könnte man herausfinden ob keine vorgesehene Form_Action übergeben wurde.

Griessli
Irene
 
danke Irene für die Antwort, ich bekomme die folgende Fehlermeldung:

"Die Seite kann nicht angezeigt werden, HTTP 500 - Interner Serverfehler Internet Explorer". Den Code habe ich auskommentiert, der dient oder wird als Template für verschiedene Tabellen eingesetzt, dadurch dass das Template war am Anfang für eine Tabelle namens LU_Produkt gedacht, sind die Kommentare da, sorry, wenn das verwirrt.
In der Tabelle kann man Datensätze ändern, löschen und hinzufügen. Für die entsprechenden Funktionen stehen Popup Formulare z.V., so dass wenn man auf jeden Button neben jedem Datensatz klickt, wird das Popup Formular um da Daten einzugeben. Der Code ist noch länger, deswegen habe ich mich eingeschränkt nur ein Teil davon hier anzuzeigen. Falls diese Erklärung immer noch nicht reicht, bitte einfach melden, dankbar.
 
Ein Fehler 500 kann irgendwas bedeuten. Ich würde erstmal sicherstellen, dass weder im Browser (Extras/Internetoptionen/Erweitert/Kurze HTTP-Fehlermeldungen muss deaktiviert sein) noch auf dem Server (Web-Eigenschaften, detaillierte ASP-Fehlermeldungen anzeigen muss aktiviert sein) die genauen Fehlermeldungen unterdrückt werden. Zum Überprüfen, ob die Fehlermeldungen angezeigt werden, kannst Du oben in der Seite einen Fehler provozieren mit err.raise "testfehler". Dann würd ich noch kontrollieren, ob andere ASP-Seiten auf diesem Server problemlos ausgeführt werden.

Wenn das nichts hilft, würde ich mal im Eventlog des Servers nach Einträgen vom Webserver und vom SQL Server schauen. Gröbere Probleme werden meistens dort hinterlegt. Falls es sehr lange dauert, bis der Fehler erscheint, könnte ein Deadloop das Problem sein -> Prozessorlast im Auge behalten.

Den Code testen kann ich momentan leider nicht, da ich keinen Test-ASP-Server laufen hab.

Griessli
Irene
 
Schon möglich. Problem habe ich nur in der Darstellung des Datums in ASP, das Eingabeformular wird mir angezeigt, die Dropdowns für das Datum und Uhrzeit auch, aber beim Klicken auf Neuen Eintrag speichern, passiert nichts und ich bekomme dann die Fehlermeldung: "Die Seite kann nicht angezeigt werden, HTTP Fehler 500-100 Interner Serverfehler Internet Explorer", d.h. das Datum wurde dann nicht in die Datenbank hinzugefügt. Für das Hinzufügen steht die Funktion InsertIt():
'an der Stelle von Datumseingaben

datum_Beginn = Request.Querystring("tag") & "." & Request.Querystring("monat") & "." & Request.Querystring("jahr") & Request.Querystring("stunde") & ":" & Request.Querystring("Minute") & ":00"
datum_Beginn=CDate(datum_Beginn)
datum_Ende = Request.Querystring("tag") & "." & Request.Querystring("monat") & "." & Request.Querystring("jahr") & Request.Querystring("stunde") & ":" & Request.Querystring("Minute") & ":00"
datum_Ende=CDate(datum_Ende)

Der oben gezeigten Code verursacht mit Sicherheit den Fehler, aber ich weiß nicht wie ich das besser in ASP gestalten kann. Ich benutze eine Datenbank in einem SQL Server, und dort die Spalten Beginn und Ende haben den Datentyp datetime. Für weitere Tips wäre ich sehr dankbar.
 
Das Einfügen von Datumswerten ist tatsächlich knifflig, vor allem weil es auch von den Ländereinstellungen des Systems abhängt. Ausserdem verwenden ASP und der SQL Server teils unterschiedliche Datumsformate. Das US-Format ist eigentlich das einzige, was immer funktioniert, deshalb setz ich Datumswerte in einem SQL-String immer als explizit formatierten String ein.

Sofern der Datumswert als solcher nur fürs SQL und nicht an einer anderen Stelle noch im ASP gebraucht wird, würde ich das CDate weglassen. Für die Übergabe an die Datenbank hab ich mir eine Hilfsfunktion gebastelt, die mir das Datum als String für ins SQL liefert:

Function USDateTime(pDBDateTime)
'umwandeln eines Datum/Zeitwerts in das US-Format (für SQL benötigt, z.B. '1/1/98 3:45:00 PM')

dUSDate = Month(pDBDateTime) & "/" & Day(pDBDateTime) & "/" & Right(Year(pDBDateTime), 2) & " "

If Hour(pDBDateTime) >= 12 Then
lStd = Hour(pDBDateTime) - 12
sAMPM = "PM"
Else
lStd = Hour(pDBDateTime)
sAMPM = "AM"
End If

sMin = Right("0" & Minute(pDBDateTime), 2)
sSec = Right("0" & Second(pDBDateTime), 2)

dUSTime = lStd & ":" & sMin & ":" & sSec & " " & sAMPM
USDateTime = dUSDate & dUSTime

End Function

Du kannst diese Funktion verwenden, um die eingegebenen Werte in ein gültiges US-Datumsformat umzuwandeln. Müsstest nur die Variable pDBDateTime (und die Month-, Day- etc. Funktionen) durch Deine entsprechenden Request("") Felder ersetzen.

Griessli
Irene
 
hallo Irene,
danke für den Tip, wenn die Anwendung für mich wäre, würde ich das von Ihnen geratenen Format des Datums, aber die Anwendung ist für meinen Betreuer und den Teamleiter, und die wünschen sich genau das Format, das die Daten Typ datetime in dem SQL Server vorhanden sind, d.h. das Format, das sie benutzen, und zwar so: 03.06.05 12:30:00.
 
Das ist glaub ein Missverständnis. Natürlich ist der Datentyp in der Datenbank selbst Datetime, das soll auch so sein. Meine Funktion sorgt lediglich dafür, dass die SQL-Anweisung den Datumswert so übergibt, dass es der SQL-Server richtig versteht und das ASP nicht darüberstolpert. Am Datentyp in der DB ändert sie nichts, und auch die spätere Ausgabe der Datumswerte wird davon nicht beeinflusst.

Datumswerte sind aus Sicht einer Datenbank etwas kompliziert. Was effektiv gespeichert wird, ist (bei den meisten Datenbanken) lediglich eine Zahl, mit oder ohne Kommastellen. Diese bekommt man als Mensch aber fast nie zu sehen. Bei der Ausgabe wird - weil die DB ja "weiss", dass die Zahl einem Menschen nichts sagt - die Zahl als Datum formatiert. Je nachdem kann man auch ein bestimmtes Format der Ausgabe verlangen. Bei der Eingabe (also beim Insert oder Update) muss man ein Datum so formatiert übergeben, dass es die DB versteht.

Beim SQL Server gibt es einige vordefinierte Datum-/Zeitformate, die man für Ein- und Ausgabe verwenden kann. In der Hilfe zum SQL Server (bei CAST and CONVERT) gibts es eine Auflistung dieser Formate.

Griessli
Irene
 
... also ich verstehe es so:

wenn ich mir folgendes Format für mein Datum wünsche: 23.10.2005 14:30, dann wird nah Ihrer Funktion an das US Format angepasst, irre ich mich?

Dann würde ich Ihre Funktion testen auf diese Weise:
<%
Function USDateTime(pDBDateTime)
....
...
End Function%>


diese Funktion würde ich aufrufen in meinem Code und so:


datum_Beginn = Request.Querystring("tag") & "." & Request.Querystring("monat") & "." & Request.Querystring("jahr") & chr(32) & Request.Querystring("stunde") & ":" & Request.Querystring("Minute") & ":00"
datum_Beginn=USDateTime(datum_Beginn)
datum_Ende = Request.Querystring("tag") & "." & Request.Querystring("monat") & "." & Request.Querystring("jahr") & chr(32) & Request.Querystring("stunde") & ":" & Request.Querystring("Minute") & ":00"
datum_Ende=USDateTime(datum_Ende)


wo genau in Ihrer Funktion muß ich ersetzen? sorry, ich bin immer noch Anfänger, mit Datenwerten in ASP kenne ich mir nicht gut aus. Für eine Antwort wäre ich Ihnen dankbar.
 
Du müsstest die Werte, die innerhalb der Funktion verwendet werden, ersetzen, und in ASP *keinen* Date-Datentyp verwenden. Wenn Du die Funktion mehrmals brauchst, also für mehr als ein Datum, würde ich sie grad so anpassen, dass sie für jeden Datumsteil einzelne Parameter verwendet:

Function USDateTime(pJahr, pMonat, pTag, pStunde, pMinute, pSekunde)
'umwandeln eines Datum/Zeitwerts in das US-Format (für SQL benötigt, z.B. '1/1/98 3:45:00 PM')

dUSDate = pMonat & "/" & pTag & "/" & Right(pJahr, 2) & " "

If pStunde >= 12 Then
lStd = pStunde - 12
sAMPM = "PM"
Else
lStd = pStunde
sAMPM = "AM"
End If

sMin = Right("0" & pMinute, 2)
sSec = Right("0" & pSekunde, 2)

dUSTime = lStd & ":" & sMin & ":" & sSec & " " & sAMPM
USDateTime = dUSDate & dUSTime

End Function

Diese Funktion liefert für den 23.10.2005 14:30:00 den String "10/23/05 02:30:00 PM". Das versteht der SQL Server.
Aufrufen kannst Du die Funktion dann wie folgt:

sBeginn = USDateTime(Request.Querystring("jahr"), Request.Querystring("monat"), Request.Querystring("tag"), Request.Querystring("stunde"), Request.Querystring("Minute"), 0)

Der Datums-String kommt dann ins SQL:

sSQL = "INSERT INTO Tabelle (Datum_Beginn) VALUES('" & sBeginn & "')"

Griessli
Irene
 
..es funktioniert nicht, ich benutze kein Insert für das Hinzufügen sondern Add. Ich bekomme die folgende Anzeige für das Datum: // :0:00 AM// :0:00 AM ????, es ist nicht diese Ausgabe die gewünschte, die Ausgabe sollte so nach dem Format: 24.10.2005 23:10, aber es klappt nicht.
Vielleicht um meinen Beitrag zu ergänzen, hier füge ich den Code zum Anzeigen des Formulars, damit der User neue Einträge hinzufügt, alles durch Comboboxen für den Tag, Monat, Jahr, Stunde und Minute

<tr><td class="text"><b>Beginn:</b></td>
<td><select name="tag">
<%
datum_Beginn = Now()
For i=1 To 31
Response.Write("<option value = " &i)
If i=Day(datum_Beginn) Then Response.Write("selected")
Response.Write(">")
Response.Write(i)

Next
Response.Write("</select><select name=monat>")
For i=1 To 12
Response.Write("<option value = " &i)
If i=Month(datum_Beginn) Then Response.Write("selected")
Response.Write(">")
Response.Write(i)

Next
Response.Write("</select>")
newdate = DateAdd("yyyy", 2, datum_Beginn)
newYear = Year(newdate)
Response.Write("<select name=jahr>")
For i = (Year(datum_Beginn)) To newYear
Response.Write("<option value = " &i)
If i=Year(datum_Beginn) Then Response.Write("selected")
Response.Write(">")
Response.Write(i)

Next
Response.Write("</select>")
Response.Write(" ")
Response.Write("<select name=stunde>")
For i = 0 To 23
Response.Write("<option value = " &i)
If i = Hour(datum_Beginn) Then Response.Write(">")
Response.Write(">")
Response.Write(i)

Next
Response.Write("</select><b>:</b><select name=Minute>")
For i= 0 To 59
Response.Write("<option value=" &i)
If i = Minute(datum_Beginn) Then Response.Write("selected")
Response.Write("selected")
Response.Write(">")
Response.Write(i)

Next
%>
</select></td></tr>

Das gleiche für Datum_Ende

Wenn der User auf "Neuen Eintrag speichern" klickt, sollte folgendes passieren:

datum_Beginn = Request.Querystring("tag") & "." & Request.Querystring("monat") & "." & Request.Querystring("jahr") & chr(32) & Request.Querystring("stunde") & ":" & Request.Querystring("Minute") & ":00"
datum_Beginn=CDate(datum_Beginn)
datum_Ende = Request.Querystring("tag") & "." & Request.Querystring("monat") & "." & Request.Querystring("jahr") & chr(32) & Request.Querystring("stunde") & ":" & Request.Querystring("Minute") & ":00"
'datum_Ende=CDate(datum_Ende)

aber natürlich das mit dem Einträgen des Datums klappt nicht so....

Die Splaten der Tabelle Production_Problem sind: Nummer, RC_Nummer, Beginn, Ende, Produkt_id Fachbereich_ID usw., anstatt Insert benutze ich folgendes:

SQLquery="SELECT * FROM Production_Problem"
objRS.Open SQLquery, strConn
objRS.AddNew


objRS.Fields("Nummer") = Nummer
objRS.Fields("RC_Nummer") = RC_Nummer
objRS.Fields("Beginn") = datum_Beginn
objRS.Fields("Ende") = datum_Ende
objRS.Fields("Produkt_id") = Produkt
objRS.Fields("Fachbereich_ID") = Fachbereich
objRS.Fields("RC_Description") = RC_Description
objRS.Fields("Description") = Description
objRS.Fields("Description_plausibel") = Description_plausibel
objRS.Update objRS.UpdateBatch
objRS.close
Set objRS=Nothing
Conn.Close
 
Das

Response.Write("<option value = " &i)
If i=Day(datum_Beginn) Then Response.Write("selected")
Response.Write(">")
Response.Write(i)

ergibt bei mir

<option value = 8selected>8

und der resultierende Datums-String lautet dann "8.3.2005selected 14:30selected:00". Damit muss der CDate natürlich auf die Nase fallen. Du solltest Option Values grundsätzlich in Anführungszeichen setzen und beim Zusammensetzen von Strings auf die notwendigen Leerzeichen achten.

Ein Tipp für die Fehlersuche: Stell den Browser und auch den Server so ein, dass die genauen Fehlermeldungen angezeigt werden. Ich bekomme die Fehlermeldung

CODE ...

HTTP 500.100 - Internal Server Error - ASP error
Internet Information Services

--------------------------------------------------------------------------------

Technical Information (for support personnel)

Error Type:
Microsoft VBScript runtime (0x800A000D)
Type mismatch: 'CDate'
/test.asp, line 11

...


Damit ist es viel einfacher, den Fehler zu finden und zu beheben.

Was das Ändern der Daten in der DB betrifft, so kannst Du natürlich die Add-/Edit-Methoden des Recordsets benutzen. Ich würde Dir aber davon abraten - früher oder später gibt das Probleme, vor allem bei Datums- und Zahlenwerten, aber auch bei Unicode-Textwerten.

Griessli
Irene
 
hallo Irene,
bei mir ist ganz schlecht. Mein Betreuer beim Praktikum setzt mich unter Druck und will die Eingabemaske morgen schon fertig, das mit dem Datum funktioniert immer noch nicht, inzwischen habe ich es geändert, anstatt Comboboxen zu nutzen, nutze ich jetzt Textfelder, eins für das Datum und eins für die Uhrzeit, das Eintragen des Datums in die Tabelle funktioniert immer noch nicht, und ich weiß nicht mehr als Anfänger was ich noch machen soll, diese Insert zu nutzen anstatt AddNew überlege ich mir mal, aber ich hoffe, heute schon die Lösung zu finden.
 
Zurück
Oben