Peter Skensved skrev:
> Jeg har en asp side med en række submit forms.
Er der flere forms på samme side?
> Det første problem er at hvergang jeg åbner siden med submit
> forms, indsættes en blank record i db'en.
Det er ikke så mærkeligt. Når du som her har formhandleren på samme
side som selve formen (altså siden submittes til sig selv) skal du
i formhandlerkoden tjekke om der i det hele taget er submittet
noget.
En nem måde at tjekke det på er ved at bruge
If Request.Form.Count <> 0
' Der er submittet en form
Else
' Der er ikke submittet en form
End If
Hvis du har flere forms på en side er det ikke sikkert at
ovenstående kode er nok.
> Det andet problem er at mine forms ikke virker når de er indsatte
> i tabeller, som om at request funktionen ikke kan "se" dem.
Du kan kun submitte én form ad gangen - dvs. hvis du har flere
forms på en side er det kun felterne fra den form du submitter du
kan tilgå med Request.Form (eller request.querystring).
Bortset fra det skulle det ikke gøre nogen forskel at have
inputfelterne i en tabel - sålænge form-koden stadig omslutter det
hele. Hvordan ser dit tabelforsøg ud?
Et par kommentarer til din databasekode:
> strSQL = [...] VALUES('" & request.form("Fornavn") & "', '" & ...
Når du indsætter tekstværdier fra en form ind i en sql-streng er
det en god ide at sikre mod de fejl der kan ske hvis et felt
indeholder enkelt anførselstegn. ASP sætter blot værdierne ukritisk
sammen - og hvis Request.Form("fornavn") herover fx indeholder
"Mc'Masters" vil den sammensatte streng blive "....
VALUES('Mc'Masters', '...). Det vil give en fejl fra databasen som
ikke kan regne ud hvad den skal gøre med det ekstra anførselstegn.
Løsningen er at escape alle enkeltanførselstegn med følgende kode:
Replace(<formtekst>, "'", "''")
Altså erstat alle forekomster af ' med '' (2 x ').
> Set rs = Conn.Execute(strSQL)
En handlingsforespørgsel (INSERT, UPDATE og DELETE) genererer ikke
noget postsæt - derfor er der heller ikke nogen grund til at lave
et postsæt i asp (det er det du gør med Set rs = ...).
Du kan nøjes med at skrive
Conn.Execute(strSQL)
Skal det være rigtig fint kan man give en ekstra parameter der
fortæller systemet at der ikke returneres nogle poster, men jeg kan
ikke lige huske værdien for den.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på
http://usenet.dk/netikette/citatteknik.html