Avatar billede zetn Nybegynder
14. februar 2004 - 22:29 Der er 21 kommentarer

Fejl ved ASP

Heysa
1. hvordan kan det være jeg ikke kan skrive tegnet ' i input felter. Den melder fejl når jeg forsøger at indsætte det i en MySQL database.

2. Ved hver side load skal den tjekke efter for gamle posteringer, så hvis dags dato er større end "tildato" så skal det slettes. Skulle det her ikke gerne gøre det:

do while not rs.eof
if rs("tildato") < "" & date & "" then
SQL = "delete from tabel where id = " & request.querystring("id") & ""
Set rs3 = conn.Execute(Sql)
end if
rs.MoveNext
Loop

Den kan nemlig godt finde på at slette fx 16-02-04 selv om dags dato: 14-02-04

MVH
JW
Avatar billede eagleeye Praktikant
14. februar 2004 - 22:37 #1
1. Fordi ' bruges i SQL til at starte og stoppe streng værdier:  tekst = 'hej med dig'
Det er altid en god ide at replace en ' med to '' hvis det er tekst der skal i database for at undgå SQL fejl. Samt fjerne ' for tal kolonner. Det skal man altid gøre, og folk som kender lidt til SQL kan misbruge det og lave SQL-injektion.


2. Prøv at sætte nogle CDate omkring:

if CDate(rs("tildato")) < CDate(date) then
Avatar billede zetn Nybegynder
14. februar 2004 - 22:40 #2
replace hvordan?
Avatar billede eagleeye Praktikant
14. februar 2004 - 22:43 #3
Hvis du hender noget fra en form:
navn = Request.Form("navn")

Så replace en ' med to '' sådan her:
navn = Replace(Request.Form("navn"), "'", "''")
Avatar billede zetn Nybegynder
14. februar 2004 - 22:47 #4
Skal man gøre det ved hvert enkel request eller er det muligt at lave en så den gør det ved hele Insert?
Avatar billede eagleeye Praktikant
14. februar 2004 - 22:49 #5
Man er nød til at gøre det ved hver enkelt for hvis man gøre det for hele SQL sætningen vil den lave dem som skal være enkelt ' om til dobbelt ''
Avatar billede zetn Nybegynder
16. februar 2004 - 17:08 #6
Får denne fejl ved CDate:
Microsoft VBScript runtime error '800a000d'

Type mismatch: 'CDate'

default.asp, line 39

Hvordan kan det være? - jeg har sat den til at skrive følgende sætning hvis den ville slette noget:
Her ville den slette følgende arr: <b>" & rs("head") & "</b> - Tildato: " & rs("tildato") & "

Men alligevel vil den nogle gange slette nogen fx d. 1 marts.

jacob
Avatar billede eagleeye Praktikant
16. februar 2004 - 17:10 #7
Hvordan er datoen gemt i databasen, bliver det indsat via SQL?
Avatar billede eagleeye Praktikant
16. februar 2004 - 17:13 #8
Hvis man har et dato kolonne og indsætter via SQL:
"INSERT INTO bb (dato) VALUES (#03-02-2004#)"  #dd-mm-yyyy#

Så vil access bytte rundt på måned og dag da SQL bruger dato formatet yyyy-mm-dd eller mm-dd-yyyy så Access vil læse det som 2. marts og ikke 3. februar.
Avatar billede zetn Nybegynder
16. februar 2004 - 17:17 #9
Bliver indsat i en MySQL database. Bliver insat i formatet: 17-04-2004
Avatar billede eagleeye Praktikant
16. februar 2004 - 17:20 #10
i en DATETIME kolonne?
Avatar billede zetn Nybegynder
16. februar 2004 - 17:21 #11
text
Avatar billede eagleeye Praktikant
16. februar 2004 - 17:26 #12
ok, så det kommer ud i DK formatet 17-04-2004.
Hvis du udskriver Date skriver den så 16/2/2004 eller 2/16/2004 ??
Det kunne måske være fordi serveren ikke køre DK dato format.
Avatar billede zetn Nybegynder
16. februar 2004 - 17:27 #13
Det er en kalender jeg gør brug af: http://www.ch1.dk/kalen2/

Jeg kan sagtens se de forskellige datoer, men lagde en funktion ind der skulle tjekke om der var nogle emner der gik over tid, og så nogle gange sletter den en der ikke skal slettes. Det kommer ud i 16-02-04
Avatar billede eagleeye Praktikant
16. februar 2004 - 17:41 #14
Det lyder underligt den så vil slette nyere datoer, hvis man bruger det med CDate:

if CDate(rs("tildato")) < CDate(date) then
Avatar billede zetn Nybegynder
16. februar 2004 - 17:43 #15
får følgende fejl:

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'CDate'

/default.asp, line 39
Avatar billede eagleeye Praktikant
16. februar 2004 - 17:45 #16
Så der en af dato'erne "tildato" eller date den ikke kan se som et gyldigt dataformat.
Hvad hvis man skriver:

if CDate(rs("tildato")) < date then
Avatar billede zetn Nybegynder
16. februar 2004 - 17:49 #17
Der var en der havde skrevet "tirsdag" i dato feltet.

Hvad gør CDate?
Avatar billede eagleeye Praktikant
16. februar 2004 - 17:53 #18
Den laver en streng om til typen Date eller Date/Time hvis der også er tid med.

Når man har en if sætingen og typen er text vil den sammen ligne de to stregen karakter for karakter og ikke hele streng som en helhed, en dato. Så hvis man konvertere til med CDate vil if sætnignen betrakte de to stregne som to datoer.
Avatar billede zetn Nybegynder
16. februar 2004 - 17:54 #19
Oki, men lyder det ikke mærkeligt at den vil slette nogen der er nyere en date? - det er modtageren der modtager denne fejl som den eneste. Jeg har aldrig selv stødt på den endnu.
Avatar billede eagleeye Praktikant
16. februar 2004 - 17:58 #20
Hvis den sammenligner disse to:

if "22-01-2000" > "12-04-2004" then

Så vil "22-01-2000" være størt fordi den sammenligener som text.

if CDate("22-01-2000") > CDate("12-04-2004") then

Så vil "12-04-2004" være størt fordi den sammeligner stengen som en "enhed"
Avatar billede zetn Nybegynder
16. februar 2004 - 18:00 #21
En af fejlmeddelelserne kom også ved brug af if CDate("22-01-2000") > CDate("12-04-2004") then

Men det kan vel også være han gør et eller andet bestemt der gør det... Jeg har testet systemet og kan ikke få fejlen til at komme frem..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester