Avatar billede webbe Nybegynder
04. januar 2001 - 13:41 Der er 40 kommentarer og
1 løsning

Type mismatch???

Hejsa!

Jeg har lavet en noget avanceret if-clause der kører på forskellige forudsætninger ved update af nogle upload files.

Min If-statement ser sådan ud:

If rs1(\"Dump\") is nothing AND dump1 = \"\" Then
    sql1 = Nothing
End if
If rs1(\"Dump\") = \"%\" AND dump1 = \"\" Then
    sql1 = Nothing
End if
If rs1(\"Dump\") is nothing AND dump1 = \"%\" Then
        sql1 = \"INSERT INTO Film_dump_side1 (Dump) VALUES (\'\"&Upload.Files(\"dump1\").ExtractFileName&\"\') WHERE Edbnr=\'\"&Request.QueryString(\"edbnr\")&\"\'\"
        Connect.Execute(sql1)
End if
If rs1(\"Dump\") = \"%\" AND dump1 = \"%\" Then
        sql1 = \"UPDATE Film_dump_side1 SET Dump=\'\"&Upload.Files(\"dump1\").ExtractFileName&\"\' WHERE Edbnr=\'\"&Request.QueryString(\"edbnr\")&\"\'\"
        Connect.Execute(sql1)
End if

Jeg får en type mismatch fejl i den første linie, men kan ikke se fejlen....har efterhånden set mig blind på koderne.

Er der nogen der kan hjælpe mig?
Avatar billede kasseper Nybegynder
04. januar 2001 - 13:44 #1
prøv
If IsNull(rs1(\"Dump\")) AND dump1 = \"\" Then
istedet
   
Avatar billede joni@vordb Nybegynder
04. januar 2001 - 13:47 #2
rs1(\"dump\") et ikke et boolesk felt
Avatar billede webbe Nybegynder
04. januar 2001 - 13:47 #3
kasseper:

Det virker desværre ikke!
Avatar billede webbe Nybegynder
04. januar 2001 - 13:50 #4
joni:

Hvad mener du.....det er et felt i min tabel, der skal undersøges om det er tomt eller ej!

Jeg har før brugt tabel-felter i if-sætninger uden problemer....men denne if-sætning er noget vanskeligere end dem jeg har brugt før!
Avatar billede kasseper Nybegynder
04. januar 2001 - 13:57 #5
Hvis du skal tjecke om et felt er tomt skal du bruge isNull() ellers skal du gøre sådan her:
rs1(\"Dump\") = \"\" eller rs1(\"Dump\") = \" \", det er en spejet sag at undersøge om et felt er tomt eller om det er Null....Nogen databaser fortolker Null som et mellemrum, spørg mig ikke hvorfor, men sådan er det.....
Er feltet tomt eller indeholder det et mellemrum ?????
Avatar billede kasseper Nybegynder
04. januar 2001 - 13:58 #6
Hvilken type er Dump i basen ????
Avatar billede joni@vordb Nybegynder
04. januar 2001 - 14:00 #7
Fejlen du får betyder at du tester dit datafetl for en forkert type. f.eks, hvis dit felt er et tekstfelt og du forsøger at teste om det indeholder en dato.
Har haft samme problem selv, og fandt ikke anden løsning end at lægge en værdi i feltet når posten oprettes, som f.eks. \"none\"
se også http://www.eksperten.dk/spm/40292

eller prøv i første omgang med :
<%
if rs1(\"Dump\") = \"\" Amd dump1=\"\"
%>
Avatar billede kasseper Nybegynder
04. januar 2001 - 14:02 #8
åhhh ja joni@vorb vi har da vist haft denne snak før....;)
Avatar billede joni@vordb Nybegynder
04. januar 2001 - 14:03 #9
Kasseper>Overtager du ?
så vil jeg nemlig holde fri for idag :-)
Avatar billede joni@vordb Nybegynder
04. januar 2001 - 14:03 #10
præcis *s*
Avatar billede kasseper Nybegynder
04. januar 2001 - 14:04 #11
hahaha, jge skal lige til et lille møde....Kommer snart igen
Avatar billede webbe Nybegynder
04. januar 2001 - 14:05 #12
Kasseper:

Ingen af felterne indeholder mellemrum!

Det er jo det den skal undersøge....hvis tabel-feltet er tomt og det felt man på admin-delen kan udfylde også er tomt skal den ikke gøre noget.

Er tabel-feltet udfyldt og feltet i admindelen tomt skal den heller ikke gøre noget.

Er tabel-feltet tomt og feltet på admin-delen udfyldt skal den indsætte i tabelfeltet.

Er både tabel-feltet og mit form-field udfyldt skal den opdatere!

En vanskelig nød at knække ik\'!? ;o)
Avatar billede webbe Nybegynder
04. januar 2001 - 14:09 #13
Det har ikke noget med datoer eller andet spidsfindigt at gøre....det er rene tekstfelter der bare skal tjekkes for om der står noget eller ej!
Avatar billede kasseper Nybegynder
04. januar 2001 - 14:58 #14
er det access base du anvender ?
Avatar billede webbe Nybegynder
04. januar 2001 - 15:01 #15
kasseper:

Jeps - en acces2000 database!
Avatar billede kasseper Nybegynder
04. januar 2001 - 15:06 #16
OK, lav det som i http://www.eksperten.dk/spm/40292
Du laver en standard værdi i alle felterne, f.eks. \'empty\', eller \'none\'
Det viser sig at ASP har meget svært ved at tolke NULL\'s fra en Access base....
Hvorfor ved jeg ikke.
Anyway, så bruger du denne kode :
********************************************
If rs1(\"Dump\") = \"none\" AND dump1 = \"%\" Then
        sql1 = \"INSERT INTO Film_dump_side1 (Dump) VALUES (\'\"&Upload.Files(\"dump1\").ExtractFileName&\"\') WHERE Edbnr=\'\"&Request.QueryString(\"edbnr\")&\"\'\"
        Connect.Execute(sql1)
End if
If rs1(\"Dump\") = \"%\" AND dump1 = \"%\" Then
        sql1 = \"UPDATE Film_dump_side1 SET Dump=\'\"&Upload.Files(\"dump1\").ExtractFileName&\"\' WHERE Edbnr=\'\"&Request.QueryString(\"edbnr\")&\"\'\"
        Connect.Execute(sql1)
End if
********************************************

Der er heller ikke nogen grund til at lave check\'s på noget hvor du hvis tjecket går igennem ikke gør noget.....SÅ de to sidste er nok...
Avatar billede kasseper Nybegynder
04. januar 2001 - 15:07 #17
BTW hvilken type er Dump i databasen ????
Avatar billede webbe Nybegynder
04. januar 2001 - 15:08 #18
Det er et tekstfelt der indeholder navnet på en fil, fx. fil1.jpg

Kan det evt. være det der er galt?
Avatar billede kasseper Nybegynder
04. januar 2001 - 15:11 #19
Nej....Det har ikke noget at sige...
Avatar billede kasseper Nybegynder
04. januar 2001 - 15:18 #20
OKay du kan hacke dig vej igennem uden at ændre i din base sådan her :

\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'
If (len(rs1(\"Dump\") & \"test\") = 4) AND dump1 = \"%\" Then
        sql1 = \"INSERT INTO Film_dump_side1 (Dump) VALUES (\'\"&Upload.Files(\"dump1\").ExtractFileName&\"\') WHERE Edbnr=\'\"&Request.QueryString(\"edbnr\")&\"\'\"
        Connect.Execute(sql1)
End if
If rs1(\"Dump\") = \"%\" AND dump1 = \"%\" Then
        sql1 = \"UPDATE Film_dump_side1 SET Dump=\'\"&Upload.Files(\"dump1\").ExtractFileName&\"\' WHERE Edbnr=\'\"&Request.QueryString(\"edbnr\")&\"\'\"
        Connect.Execute(sql1)
End if
\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'
Da string1 & Null giver string1 kan man ved at tjecke om længden er længden af striong1 afgøre om Null er Null. Tosset men det skulle virke....

Avatar billede kasseper Nybegynder
04. januar 2001 - 15:19 #21
Evt kan du placere din rs1(\"Dump\") i en variabel først, så kan det også være at det virker med IsNull() som det egentlig burde...!
Avatar billede webbe Nybegynder
04. januar 2001 - 15:23 #22
Det virker heller ikke....får stadig type mismatch i linie 348 (den første linie i min if-sætning)
Avatar billede kasseper Nybegynder
04. januar 2001 - 15:34 #23
OK, må man se hele din kode ?????
Avatar billede webbe Nybegynder
04. januar 2001 - 15:36 #24
kasseper:

Okay - vær forberedt på en masse linier - du får min case \"saveedit\" der er problemer med!

Case \"saveedit\"

Dim Upload, Edbnr, Dump, Dump1, Side1, Side11, Galleri1, Galleri11, Galleri2, Galleri21, Galleri3, Galleri31, Galleri4, Galleri41, Galleri5, Galleri51, Galleri6, Galleri61, Galleri7, Galleri71, Galleri8, Galleri81, Galleri9, Galleri91, Galleri10, galleri101, Poster1, Poster11, Poster2, Poster21, Poster3, Poster31, Trailer1, Trailer11, Trailer2, Trailer21

Set Connect = Server.CreateObject(\"ADODB.Connection\")
Connect.Open \"bagkat_film\"

\'sætter upload funktionen
Set Upload = Server.CreateObject(\"Persits.Upload.1\")
    Upload.OverwriteFiles = False
    Upload.Save Server.MapPath(\"./Filer\") & \"\\\"

\'definerer navne for at undgå replace statements i insert clause
Edbnr = Upload.Form(\"edbnr\")
Dump = Upload.Form(\"dump\")
Side1 = Upload.Form(\"side1\")
Galleri1 = Upload.Form(\"galleri1\")
Galleri2 = Upload.Form(\"galleri2\")
Galleri3 = Upload.Form(\"galleri3\")
Galleri4 = Upload.Form(\"galleri4\")
Galleri5 = Upload.Form(\"galleri5\")
Galleri6 = Upload.Form(\"galleri6\")
Galleri7 = Upload.Form(\"galleri7\")
Galleri8 = Upload.Form(\"galleri8\")
Galleri9 = Upload.Form(\"galleri9\")
Galleri10 = Upload.Form(\"galleri10\")
Poster1 = Upload.Form(\"poster1\")
Poster2 = Upload.Form(\"poster2\")
Poster3 = Upload.Form(\"poster3\")
Trailer1 = Upload.Form(\"trailer1\")
Trailer2 = Upload.Form(\"trailer2\")

Set Dump = Upload.Files(\"dump\")
    If Dump is nothing Then
        Dump1 = \"\"
    Else
        Dump1 = Dump.ExtractFileName
    End if
   
Set Side1 = Upload.Files(\"side1\")
    If Side1 is nothing Then
        Side11 = \"\"
    Else
        Side11 = Side1.ExtractFileName
    End if
   
Set Galleri1 = Upload.Files(\"galleri1\")
    If Galleri1 is nothing then
        Galleri11 = \"\"
    Else
        Galleri11 = Galleri1.ExtractFileName
    End if

Set Galleri2 = Upload.Files(\"galleri2\")
    If Galleri2 is nothing Then
        Galleri21 = \"\"
    Else
        Galleri21 = Galleri2.ExtractFileName
    End if
   
Set Galleri3 = Upload.Files(\"galleri3\")
    If Galleri3 is nothing Then
        Galleri31 = \"\"
    Else
        Galleri31 = Galleri3.ExtractFileName
    End if
   
Set Galleri4 = Upload.Files(\"galleri4\")
    If Galleri4 is nothing Then
        Galleri41 = \"\"
    Else
        Galleri41 = Galleri4.ExtractFileName
    End if
   
Set Galleri5 = Upload.Files(\"galleri5\")
    If Galleri5 is nothing Then
        Galleri51 = \"\"
    Else
        Galleri51 = Galleri5.ExtractFileName
    End if
   
Set Galleri6 = Upload.Files(\"galleri6\")
    If Galleri6 is nothing Then
        Galleri61 = \"\"
    Else
        Galleri61 = Galleri6.ExtractFileName
    End if
   
Set Galleri7 = Upload.Files(\"galleri7\")
    If Galleri7 is nothing Then
        Galleri71 = \"\"
    Else
        Galleri71 = Galleri7.ExtractFileName
    End if
   
Set Galleri8 = Upload.Files(\"galleri8\")
    If Galleri8 is nothing Then
        Galleri81 = \"\"
    Else
        Galleri81 = Galleri8.ExtractFileName
    End if
   
Set Galleri9 = Upload.Files(\"galleri9\")
    If Galleri9 is nothing Then
        Galleri91 = \"\"
    Else
        Galleri91 = Galleri9.ExtractFileName
    End if
   
Set Galleri10 = Upload.Files(\"galleri10\")
    If Galleri10 is nothing Then
        Galleri101 = \"\"
    Else
        Galleri101 = Galleri10.ExtractFileName
    End if
   
Set Poster1 = Upload.Files(\"poster1\")
    If Poster1 is nothing Then
        Poster11 = \"\"
    Else
        Poster11 = Poster1.ExtractFileName
    End if
   
Set Poster2 = Upload.Files(\"poster2\")
    If Poster2 is nothing Then
        Poster21 = \"\"
    Else
        Poster21 = Poster2.ExtractFileName
    End if
   
Set Poster3 = Upload.Files(\"poster3\")
    If Poster3 is nothing Then
        Poster31 = \"\"
    Else
        Poster31 = Poster3.ExtractFileName
    End if
   
Set Trailer1 = Upload.Files(\"trailer1\")
    If Trailer1 is nothing Then
        Trailer11 = \"\"
    Else
        Trailer11 = Trailer1.ExtractFileName
    End if
   
Set Trailer2 = Upload.Files(\"trailer2\")
    If Trailer2 is nothing Then
        Trailer21 = \"\"
    Else
        Trailer21 = Trailer2.ExtractFileName
    End if


\'sætter if-clauses for Film-Dump
If rs1(\"Dump\") = \" \" AND dump1 = \" \" Then
    sql1 = Nothing
End if
If rs1(\"Dump\") = \"%\" AND dump1 = \" \" Then
    sql1 = Nothing
End if
If rs1(\"Dump\") is nothing AND dump1 = \"%\" Then
        sql1 = \"INSERT INTO Film_dump_side1 (Dump) VALUES (\'\"&Upload.Files(\"dump1\").ExtractFileName&\"\') WHERE Edbnr=\'\"&Request.QueryString(\"edbnr\")&\"\'\"
        Connect.Execute(sql1)
End if
If rs1(\"Dump\") = \"%\" AND dump1 = \"%\" Then
        sql1 = \"UPDATE Film_dump_side1 SET Dump=\'\"&Upload.Files(\"dump1\").ExtractFileName&\"\' WHERE Edbnr=\'\"&Request.QueryString(\"edbnr\")&\"\'\"
        Connect.Execute(sql1)
End if


\'sætter if-clauses for Film-Side1
\'If rs1(\"Side1\") is nothing AND side11 = \"\" Then
\'    sql2 = Nothing
\'End if
\'If rs(\"Side1\") = \"%\" AND side11 = \"\" Then
\'    sql2 = Nothing
\'End if
\'If rs(\"Side1\") is nothing AND side11 = \"%\" Then
\'    sql2 = \"INSERT INTO Film_dump_side1 (Side1) VALUES (\'\"&Upload.Files(\"side11\").ExtractFileName&\"\') WHERE Edbnr=\'\"&Request.QueryString(\"edbnr\")&\"\'\"
\'    Connect.Execute(sql2)
\'End if
\'If rs(\"Side1\") = \"%\" AND side11 = \"%\" Then
\'    sql2 = \"UPDATE Film_dump_side1 SET Side1=\'\"&Upload.Files(\"side11\").ExtractFileName&\"\' WHERE Edbnr=\'\"&Request.QueryString(\"edbnr\")&\"\'\"
\'    Connect.Execute
\'End if


\'sætter if-clauses for Galleri1
\'If rs2(\"Galleri1\") is nothing AND galleri11 = \"\" Then
\'    sql3 = Nothing
\'End if
\'If rs2(\"Galleri1\") = \"%\" AND galleri11 = \"\" Then
\'    sql3 = Nothing
\'End if
\'If rs2(\"Galleri1\") is nothing AND galleri11 = \"%\" Then
\'    sql3 = \"INSERT INTO Film_galleri (Galleri1) VALUES (\'\"&Upload.Files(\"galleri11\").extractfilename&\"\') WHERE Edbnr=\'\"&Request.QueryString(\"edbnr\")&\"\'\"
\'    Connect.Execute(sql3)
\'End if
\'If rs2(\"Galleri1\") = \"%\" AND galleri11 = \"%\" Then
\'    sql3 = \"UPDATE Film_galleri SET Galleri1=\'\"&Upload.Files(\"galleri11\").ExtractFileName&\"\' WHERE Edbnr=\'\"&Request.QueryString(\"edbnr\")&\"\'\"
\'    Connect.Execute(sql3)
\'End if


\'sætter if-clauses for Galleri2
\'If rs2(\"Galleri2\") is nothing AND galleri21 = \"\" Then
\'    sql4 = Nothing
\'End if
\'If rs2(\"Galleri2\") = \"%\" AND galleri21 = \"\" Then
\'    sql4 = Nothing
\'End if
\'If rs2(\"Galleri2\") is nothing AND galleri21 = \"%\" Then
\'    sql4 = \"INSERT INTO Film_galleri (Galleri2) VALUES (\'\"&Upload.Files(\"galleri21\").ExtractFileName&\"\') WHERE Edbnr=\'\"&Request.QueryString(\"edbnr\")&\"\'\"
\'    Connect.Execute(sql4)
\'End if
\'If rs2(\"Galleri2\") = \"%\" AND galleri21 = \"%\" Then
\'    sql4 = \"UPDATE Film_galleri SET Galleri2=\'\"&Upload.Files(\"galleri21\").ExtractFileName&\"\' WHERE Edbnr=\'\"&Request.QueryString(\"edbnr\")&\"\'\"
\'    Connect.Execute(sql4)
\'End if

\'sætter if-clauses for Galleri3


\'sætter if-clauses for Galleri4


\'sætter if-clauses for Galleri5


\'sætter if-clauses for Galleri6


\'sætter if-clauses for Galleri7


\'sætter if-clauses for Galleri8


\'sætter if-clauses for Galleri9


\'sætter if-clauses for Galleri10


\'sætter if-clauses for Poster1
\'sql3 = \"UPDATE Film_poster SET Poster1=\'\"&Upload.Files(\"poster11\").ExtractFileName&\"\', Poster2=\'\"&Upload.Files(\"poster21\").ExtractFileName&\"\', Poster3=\'\"&Upload.Files(\"poster31\").ExtractFileName&\"\' WHERE Edbnr=\"&Request.QueryString(\"edbnr\")&\"\"
\'Connect.Execute(sql3)

\'sætter if-clauses for Poster2


\'sætter if-clauses for Poster3


\'sætter if-clauses for Trailer1


\'sætter if-clauses for Trailer2
\'sql4 = \"UPDATE Film_trailer SET Trailer1=\'\"&Upload.Files(\"trailer11\").ExtractFileName&\"\', Trailer2=\'\"&Upload.Files(\"trailer21\").ExtractFileName&\"\' WHERE Edbnr=\"&Request.QueryString(\"edbnr\")&\"\"
\'Connect.Execute(sql4)


Set Upload = Nothing
Connect.Close
Set Connect = Nothing

Response.Redirect(\"ret3.asp?action=edit&edbnr=\'\"&Request.QueryString(\"edbnr\")&\"\'\")

End Select
%>
Avatar billede kasseper Nybegynder
04. januar 2001 - 15:52 #25
Hvilke af de løsninger jeg kom med har du prøvet ???
Avatar billede kasseper Nybegynder
04. januar 2001 - 15:56 #26
Den plejer at give om hvor der er type mismatch, står der noget om det ?
Avatar billede webbe Nybegynder
04. januar 2001 - 15:56 #27
Hehehe - dem alle! ;o)

Men det kan jo være, at jeg ikke har skrevet det rigtigt
Avatar billede webbe Nybegynder
04. januar 2001 - 15:57 #28
Nej - den siger bare type mismatch....ikke andet!
Avatar billede kasseper Nybegynder
04. januar 2001 - 15:58 #29
Ja der skulle have stået :
Den plejer at give et vink om hvor der er type mismatch, står der noget om det ?
Avatar billede kasseper Nybegynder
04. januar 2001 - 15:59 #30
jamen er dump1 egentlig en string ???
Avatar billede webbe Nybegynder
04. januar 2001 - 16:00 #31
Nix - men det er i den linie der starter min if-statement....

\'sætter if-clauses for Film-Dump
If rs1(\"Dump\") = \" \" AND dump1 = \" \" Then
    sql1 = Nothing
End if


Avatar billede webbe Nybegynder
04. januar 2001 - 16:01 #32
Dump1 bliver sat her:

Set Dump = Upload.Files(\"dump\")
    If Dump is nothing Then
        Dump1 = \"\"
    Else
        Dump1 = Dump.ExtractFileName
    End if
   


Avatar billede kasseper Nybegynder
04. januar 2001 - 16:05 #33
prøv evt. at kommentere dump1 ud :

\'sætter if-clauses for Film-Dump
\'If rs1(\"Dump\") = \" \" AND dump1 = \" \" Then
If isNull(\"Dump\") Then
    sql1 = Nothing
End if

for at se om det er dump eller dump1 der sutter.




Avatar billede webbe Nybegynder
04. januar 2001 - 16:09 #34
Det lader til at det er dump der sutter!
Avatar billede ldanielsen Nybegynder
04. januar 2001 - 16:49 #35
Er der nogen der har foreslåer rs(\"Dump\") = null i stedet for rs(\"Dump\") is null ??
Avatar billede chris2k Nybegynder
04. januar 2001 - 21:09 #36
Det du skal bruge er en TrimNull funktion. En funktion som checker om feltet indeholder en gyldig strengværdi. Problemmet er at access laver feltets værdi som null, hvis det er tomt, hvilket jo er logisk nok.

Her er funktionen, det skal lige siges at den IKKE virker på Notater:

Private Function TrimNull(startstr) As String
\'Shared function for removeing null values/objects
If VarType(startstr) = vbNull Then
    TrimNull = \"\"
ElseIf IsNull(startstr) = True Then
    TrimNull = \"\"
Else
    TrimNull = startstr
End If
End Function

Jeg er ikke sikker på at den virker i asp, da den er skrevet til vb.

Udover det, skal du nok ændre nogle af dine AND oberatorer til OR.
Avatar billede webbe Nybegynder
04. januar 2001 - 23:51 #37
ldanielsen:

Er prøvet på egen hånd....virkede ikke!
Avatar billede webbe Nybegynder
04. januar 2001 - 23:53 #38
chris:

Hmmmm.....hvad så med mine sql-sætninger!?

Tror ikke lige det er det jeg skal bruge men prøver det lige af inde jeg afviser dit svar!
Avatar billede chris2k Nybegynder
04. januar 2001 - 23:54 #39
Okay...
Avatar billede webbe Nybegynder
11. januar 2001 - 14:51 #40
Har selv løst problemet!
Avatar billede webbe Nybegynder
11. januar 2001 - 14:52 #41
Lukker hermed spørgsmålet!
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