[ASP] AW: ActiveServerPages digest, Vol 1 #108 - 12 msgs

Hotel André activeserverpages at glengamoi.com
Wed, 22 Dec 2004 12:35:16 +0100


Hallo Georg,

Ich würde Fehlermeldungen beim Update oder Insert wie folgt
aus dem Weg gehen:

DIM entry
DIM n
DIM db_IDfield
DIM db_table
DIM idnr

idnr = Request.Form("ID")
if idnr = "" then idnr = 0
db_IDfield = "ID"
db_table = "schedule"
n = - 1
for each entry in Request.Form
	If Request.Form(entry) > "" and not LCase(entry) = db_IDfield then
		n + 1
	end if
next

DIM ArrayFields: REDIM ArrayFields(n)
DIM ArrayValues: REDIM ArrayValues(n)

n = 0

for each entry in Request.Form
	If Request.Form(entry) > "" and not LCase(entry) = db_IDfield then
		ArrayFields(n) = entry
		ArrayValues(n) = Request.Form(entry)
		n + 1
	end if
next

Call OpenConn(database)
Call Update_db_table(db_table, db_IDfield, ArrayFields,ArrayValues, idnr)
Call CloseConn()

function NewID(db_table,Arrayfields,Arraydaten)
	Dim rs
	Dim sql
	Dim n
	Set rs = Server.CreateObject("ADODB.RecordSet")
	sql = "Select * from " & db_table & " where " & db_IDfield & " < 0"
	rs.Open(sql), dbc, adOpenKeySet,adLockOptimistic,adCmdText
	rs.AddNew ArrayFields, ArrayDaten
	If Err.Number <> 0 then
		n = Err.description
	else
		n = rs.Fields(db_IDfield).value
	end if
	NewID = n
	Call CloseRS(rs)
end function

function Update_db_table(db_table, db_IDfield, ArrayFields,Arraydaten, idnr)
	Dim rs
	Dim sql
	Dim field
	Dim n
	Set rs = Server.CreateObject("ADODB.RecordSet")
	sql = "Select * from " & db_table & " where " & db_IDfield & " = " & idnr
	rs.Open(sql), dbc, adOpenKeySet,adLockOptimistic,adCmdText
	If rs.eof or rs.bof then
		Call CloseRS(rs)
		' Daten neu eintragen
		Update_db_table = NewID(db_table,Arrayfields,Arraydaten)
	else
		for each field in rs.fields
			'Response.Write(field.name & " = field.type: " & field.type)
			Select Case field.type
			case 11
				field.value = false
			case 135
				field.value = date()
			case 3, 6
				if not LCase(field.name) = LCase(db_IDfield) then
					field.value = 0
				end if
			case 220, 202
				field.value = ""
			end Select
		next
	end if
		rs.update
		rs.Update ArrayFields, ArrayDaten
		If Err.Number <> 0 then
			Update_db_table = Err.description
		else
			Update_db_table = rs.Fields(db_IDfield).value
		end if
	end if
end function

Rat am Rande: Beim verwenden von "ID" als Feldname können Fehlermeldungen
von Access aus entstehen, besser Du würdest den Feldnamen für das IDfield
in "scheduleID" oder ähnl. umbenennen.
Solltest Du nicht zurecht kommen, Email an mich.

Mit freundlichen Grüßen
Hotel André


André Scheres
Geneickener Str. 104
41238 Mönchengladbach
Telefon: + 49 2166 254199
Telefax: + 49 2166 254148
http://hotelandre.de

-----Ursprüngliche Nachricht-----
Von: activeserverpages-admin@glengamoi.com
[mailto:activeserverpages-admin@glengamoi.com]Im Auftrag von
activeserverpages-request@glengamoi.com
Gesendet: Mittwoch, 22. Dezember 2004 08:39
An: activeserverpages@glengamoi.com
Betreff: ActiveServerPages digest, Vol 1 #108 - 12 msgs


Message: 9
From: "Georg Dreier" <lineman74@gmx.at>
To: <activeserverpages@glengamoi.com>
Date: Wed, 22 Dec 2004 00:46:43 +0100
Subject: [ASP] Eintragspflicht bei Formular
Reply-To: activeserverpages@glengamoi.com


Hey Leute!

Habe folgendes Riesen-Problem: Wenn ich eine Insert oder Update =
Anweisung
mache müssen Zahlen und Datumsfelder ausgefüllt sein obwohl ich das =
nicht
möchte. Ich bekomme sonst immer die Fehlermeldung "Datentypen in
Kriterienausdruck unverträglich"! Ich arbeite mit einer Access =
Datenbank.
Unter "Eingabe erforderlich" habe ich in Access überall ein nein.".

### Hier eine meiner Update Anweisungen: ###
-----------------------------------------------------------------------
<%
If IsObject(Session("cowhp_conn")) Then
    Set conn = Session("cowhp_conn")
Else
    Set conn = Server.CreateObject("ADODB.Connection")
    strDSNPfad = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=" & Server.MapPath("/maturaprojekt/db/db.mdb")
    conn.open strDSNPfad,"",""
    Set Session("cowhp_conn") = conn
End If
sql = "update schedule set team = '" & request.Form("team") & "',"
sql = sql & "seasontype = '" & request.Form("seasontype") & "',"
sql = sql & "week = '" & request.Form("week") & "',"
sql = sql & "datum = '" & request.Form("datum") & "',"
sql = sql & "zeit = '" & request.Form("zeit") & "',"
sql = sql & "stadion = '" & request.Form("stadion") & "',"
sql = sql & "ort = '" & request.Form("ort") & "',"
sql = sql & "gegner = '" & request.Form("gegner") & "',"
sql = sql & "pointsfor = '" & request.Form("pointsfor") & "',"
sql = sql & "pointsagainst = '" & request.Form("pointsagainst") & =
"',"
sql = sql & "anmerkung = '" & request.Form("anmerkung") & "',"
sql = sql & "bild = '" & request.Form("bild") & "' "
sql = sql & "where ID = " & request.Form("ID") & " ; "
'response.write sql
conn.execute sql
%>
-----------------------------------------------------------------------

### Hier eine meiner Insert Anweisungen: ###
-----------------------------------------------------------------------
<%
If IsObject(Session("cowhp_conn")) Then
    Set conn = Session("cowhp_conn")
Else
    Set conn = Server.CreateObject("ADODB.Connection")
    strDSNPfad = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=" & Server.MapPath("/maturaprojekt/db/db.mdb")
    conn.open strDSNPfad,"",""
    Set Session("cowhp_conn") = conn
End If
sql = "insert into schedule (team, seasontype, week, datum, zeit, =
stadion,
ort, gegner, pointsfor, pointsagainst, anmerkung, bild) values ('"
sql = sql & request.form("team") & "','"
sql = sql & request.form("seasontype") & "','"
sql = sql & request.form("week") & "','"
sql = sql & request.form("datum") & "','"
sql = sql & request.form("zeit") & "','"
sql = sql & request.form("stadion") & "','"
sql = sql & request.form("ort") & "','"
sql = sql & request.form("gegner") & "','"
sql = sql & request.form("pointsfor") & "','"
sql = sql & request.form("pointsagainst") & "','"
sql = sql & request.form("anmerkung") & "','"
sql = sql & request.form("bild") & "');"
'response.Write sql
conn.execute sql
%>
-----------------------------------------------------------------------

SQL Ansicht im Access klappt bei mir leider nicht so ganz!
Hier sind die Daten in einer Textdatei:
-----------------------------------------------------------------------
1;"Regular Team";"Preseason";"-";28.3.2004 00:00:00;30.12.1899
13:00:00;"Stadion Svoboda";"Ljubljana";"Ljubljana
Silverhawks";38;6;;"ljubljanasilverhawks.jpg"
2;"Regular Team";"Regular Season";"Week 2";4.4.2004 00:00:00;30.12.1899
13:00:00;"Postpl. Hörtendorf";"Klagenfurt";"=D6ko-Box Graz
Giants";12;60;;"oekoboxgrazgiants.jpg"
3;"Regular Team";"Friendship Game";"-";18.4.2004 00:00:00;30.12.1899
14:00:00;"Postpl. Hörtendorf";"Klagenfurt";"Ljubljana
Silverhawks";30;0;;"ljubljanasilverhawks.jpg"
4;"Regular Team";"Regular Season";"Week 4";2.5.2004 00:00:00;30.12.1899
16:00:00;"Happyland";"Klosterneuburg";"Danube
Dragons";7;35;;"danubedragons.jpg"
5;"Regular Team";"Regular Season";"Week 6";16.5.2004 00:00:00;30.12.1899
13:00:00;"Postpl. Hörtendorf";"Klagenfurt";"Carinthian
Falcons";26;10;;"carinthianfalcons.jpg"
6;"Regular Team";"Regular Season";"Week 7";22.5.2004 00:00:00;30.12.1899
18:00:00;"Herrenried";"Hohenems";"Cineplexx Blue Devils";0;35;"Wegen
Spielermangels abgesagt und strafverifiziert!";"cineplexxbluedevils.jpg"
7;"Regular Team";"Regular Season";"Week 10";12.6.2004 =
00:00:00;30.12.1899
17:00:00;"Tivoli W1";"Innsbruck";"Papa Joe's Tyrolean
Raiders";12;48;;"papajoestyroleanraiders.jpg"
8;"Regular Team";"Regular Season";"Week 11";20.6.2004 =
00:00:00;30.12.1899
13:00:00;"Postpl. Hörtendorf";"Klagenfurt";"Chrysler Vikings
Vienna";0;35;"Wegen Spielermangels abgesagt und
strafverifiziert!";"chryslervikingsvienna.jpg"
9;"Junioren";"Regular Season";"Week 1";5.9.2004 00:00:00;30.12.1899
13:00:00;"Postpl. Hörtendorf";"Klagenfurt";"Baden
Bruins";36;6;;"badenbruins.jpg"
10;"Junioren";"Regular Season";"Week 2";11.9.2004 00:00:00;30.12.1899
15:00:00;"Pepsi Field";"Baden";"Baden Bruins";8;0;;"badenbruins.jpg"
11;"Junioren";"Regular Season";"Week 5";2.10.2004 00:00:00;30.12.1899
13:00:00;"Postpl. Hörtendorf";"Klagenfurt";"Carinthian
Falcons";52;0;;"carinthianfalcons.jpg"
12;"Junioren";"Regular Season";"Week 7";17.10.2004 00:00:00;30.12.1899
14:00:00;"Koschatplatz";"Klagenfurt";"Carinthian
Falcons";30;0;"";"carinthianfalcons.jpg"
13;"Junioren";"Post Season";"Final";30.10.2004 00:00:00;30.12.1899
13:00:00;"Postpl. Hörtendorf";"Klagenfurt";"Salzburg
Bulls";;;;"salzburgbulls.jpg"
14;"Jugend";"Regular Season";"Week 3";19.9.2004 00:00:00;;"Postpl.
Hörtendorf";"Klagenfurt";"Papa Joe's Tyrolean Raiders";0;35;"Wegen
Spielermangels abgesagt und =
strafverifiziert!";"papajoestyroleanraiders.jpg"
15;"Jugend";"Regular Season";"Week 4";25.9.2004 00:00:00;;"Postpl.
Hörtendorf";"Klagenfurt";"=D6ko-Box Graz Giants";0;35;"Wegen =
Spielermangels
abgesagt und strafverifiziert!";"oekoboxgrazgiants.jpg"
16;"Jugend";"Regular Season";"Week 5";3.10.2004 00:00:00;30.12.1899
15:00:00;"BSZ Südstadt";"Maria Enzersdorf";"AFC ASK=D6 =
Rangers";0;35;"Wegen
Spielermangels abgesagt und strafverifiziert!";"afcaskoerangers.jpg"
17;"Jugend";"Regular Season";"Week 6";10.10.2004 00:00:00;30.12.1899
14:00:00;;"St. Pölten";"OVB St. Pölten Invaders";0;0;"Wegen =
Spielermangels
bei beiden Seiten abgesagt!";"ovbstpoelteninvaders.jpg"
-----------------------------------------------------------------------

Tut mir leid dass das alles etwas unübersichtlich ist. Ich hoffe mir =
kann
jemand helfen - ist extrem wichtig.

Danke

Georg