webForumDet fria alternativet

Två frågor: typblandningsfel och IF (else) End If

ASP

10 svar · 409 visningar · startad av Oputres

Medlem sedan feb. 2004333 inlägg
Frågan#1

Vi börjar med en fråga som kräver hela koden, så att någon vänlig skäl också får inblick nog att besvara fråga två.
Koden är till för att redan ändra en befintlig nyhetspost med id: <% intId %> av användaren <% = AnvId %>

Fråga 1) Av updatesatsen får jag felmeddelandet Typblandningsfel i villkorsutryck men jag ser inget fel.

  Case "Nyhet"
    Dim intId, strUpdRubrik, strUpdNyhet
    intId = Request.QueryString("Id")
    strUpdRubrik = Request.Form("F_Rubrik")
    strUpdNyhet = Request.Form("F_Nyhet")
    If Len(strUpdRubrik) = 0 Or Len(strUpdNyhet) = 0 Then
      Response.Write "<div align='center'><font color='red'><b>Ett fel uppstod:</b> Fältet ''Rubrik eller ''Nyhet'' är tomt.</font><br><br><b><a href='JavaScript:history.go(-1);'>Tillbaka</a></b></div>"
    End If
    Connect.Execute("Update AgendaNyheter Set AnvId = '" & AnvId & "', Rubrik = '" & strUpdRubrik & "',  Datum = #" & Now & "#, AgendaNyhet = '" & strUpdNyhet & "', Typ = 'Nyhet' Where Id = '" & intId & "';"),, 128
    Response.Write "<div align='center'><font color='#009933'><b>Ändringar genomförda.</b></font><br><br><b><a href='administration.asp?AnvId=" & AnvId & "&Sida=Start'>Tillbaka</a></b></div>"

Fråga 2) Hur blir det egentligen med IF-satsen, kommer den även om IF-satsen uppfylls, alltså att rubrikfältet och/eller textfältet är tomt, genomföra Update-kommandot?
Borde jag kanske sätta den i Else enligt nedan?

    If Len(strUpdRubrik) = 0 Or Len(strUpdNyhet) = 0 Then
      Response.Write "<div align='center'><font color='red'><b>Ett fel uppstod:</b> Fältet ''Rubrik eller ''Nyhet'' är tomt.</font><br><br><b><a href='JavaScript:history.go(-1);'>Tillbaka</a></b></div>"
    [B]Else[/B]
    Connect.Execute("Update...
    [B]End If[/B]
Medlem sedan juli 200498 inlägg
#2

Hej,

Du använder Microsoft Access?

Vad har du för datatyp på anvID (just nu tolkas den som en sträng) och sen så skulle jag nog vilja se att datumet skulle skrivas så här

mittDatum = '#" & Now() & "#'

Sen så kanske det är några reserverade ord och ev. något mer fel i Sql-satsen som förekommer. Typ och Datum är jag osäker på ifall de är reserverade ord. (beror antagligen på vilken version av Access du kör).

Logiken i if-satsen ska väl funka.

Om b = 0 eller c = 0 då är något av fältet tomt. Annars kan du nog göra ungefär så här

If b = "" Or c = "" Then ' ...

/m

Medlem sedan mars 20032 667 inlägg
#3
  1. AnvId är väl ett numeriskt fält? Då ska du inte ha '' runt värdet i sql-frågan.

  2. Nej. Om rubrik eller nyhet har en längd på 0 tecken utförs utskriften annars din update-sats.

Medlem sedan mars 20032 667 inlägg
#4

ahlen skrev:

Hej,

Du använder Microsoft Access?

(...) sen så skulle jag nog vilja se att datumet skulle skrivas så här

mittDatum = '#" & Now() & "#'

Varför då? Jag skulle vilja ha det så här:

mittDatum =  Now()

eller för tidiga versioner av access

mittDatum = #" & Now() & "#

eller för senare versioner av access

mittDatum = '" & Now() & "'
Medlem sedan feb. 2004333 inlägg
#5

AnvId är en räknare av typen replikeringsId, vilket väl gör att det måste skrivas som en sträng?!

Medlem sedan juli 200498 inlägg
#6

K@llen,

Har inte använt Access på år och dar, läser dagligen i forum där folk missar # och lösningen just är #.

Med

MittDatum = Now() så är det Access inbyggda datum funktion du menar?

Använder uteslutande SQL-Server där datum skrivs in som text. Alternativt Sql-servers egna datum funktion.

/m

/red.

ReplikeringsID ska tolkas som en sträng.

Medlem sedan feb. 2004333 inlägg
#7

Hittade felet, så här skulle det visst vara:
... Where Id = " & intId & ";
Alltså INTE Where Id = '" & intId & "';

Jag har en SQL-bok framför mig och där har de ett tal (10000000006) angivet inom fnuttarna, skall det inte vara det? Fast det står iofs inte vilken datatyp de har...

Medlem sedan mars 20032 667 inlägg
#8

Det är datatypen på kolumnen som avgör fnuttar eller ej (text fnuttar. Numeriskt inga fnuttar.). Inte innehållet i värdet som skickas in. Du kan ju som bekant lagra 123456 i en kolumn av text-typ, men inte abcdef i en kolumn av numerisk typ.

Medlem sedan mars 20032 667 inlägg
#9

ahlen skrev:

Har inte använt Access på år och dar, läser dagligen i forum där folk missar # och lösningen just är #.

Det var inte dina # jag var skeptisk till utan din användning av både # och ' tillsammans. Skulle kunna fungera på senare varianter av access, men har aldrig sett kombinationen tidigare eller testat den.

Medlem sedan juli 200498 inlägg
#10

Hej igen,

Jag hade brottom till tv'n igår, jag skrev så snabbt att jag glömde det jag skulle skriva ungefär.

Låg och tänkte på det inatt, om jag har glömt något så tänker jag "glömde jag skriva det?". Det jag skulle skriva var ' istället för #. Ursäkta.

'#" & datum & "#' används, sökte och såg att utan ' ska det också funka.

Tack vet jag Sql-server ;-)

/m

Medlem sedan feb. 2004333 inlägg
#11

Så rätt metod är alltså '# ... #' men Access och IIS godtar även utan fnuttarna?

259 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)