Avatar billede scorpion Nybegynder
23. marts 2003 - 21:11 Der er 8 kommentarer og
2 løsninger

[] Problem med en del af scriptet til en input side

Hej på den anden side.

Håber der er nogen der har muligheden for at hjælpe med et lille problem. Sagen er den at jeg bruger en side til både at redigere i en DB, samt til at lægge ny data ind i den. Dette betyder at jeg kan komme til siden fra to steder:

ny-indtastning.asp eller
redigere-indtastning.asp

Hvis jeg kommer fra ”redigere-indtastning.asp” følger der et ”id” med så man kan genkende informationen der skal redigeres, eller sagt med andre ord; hvilken data der skal hentes fra DB.
Hvis jeg derimod kommer fra ”ny-indtastning.asp”, skal indtastningsfelterne være tomme, da der jo skal lægges ny data i DB, eller sagt med andre ord: der findes ikke noget ”id” i denne situation.

PROBLEMET:
Der opstår en fejl når jeg kommer fra ”ny-indtastning.asp”, som ser ud som følgende:

Microsoft JET Database Engine (0x80040E14)
Der er en ekstra højreparentes: ) i forespørgselsudtrykket "(id=)".

Koden ser ud som følgende:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Data Source=" & Server.mapPath("../db/db.mdb;Provider=Microsoft.Jet.OLEDB.4.0;")

  sql = "SELECT dato , overskrift , tekst FROM nyheder WHERE (id=" & request("id") & ")"
  Set objRec = Conn.Execute(sql)

If objRec.EOF Then
  sql = "dato = null, overskrift = null, tekst = null"
  set objRec = Conn.Execute(sql)
End If
%>

Er der nogen der kan se, hvad jeg gør galt?

OBS Mine Value’s ser ud som følgende <%= objRec("dato")  %>, hvis det skal have nogen betydning.

På forhånd tak
Scorpion
Avatar billede erikjacobsen Ekspert
23. marts 2003 - 21:31 #1
Du skal vel have en if-sætning rundt om - så du ikke udfører
din SQL-sætning hvis feltet er tomt
Avatar billede hossein Nybegynder
23. marts 2003 - 21:32 #2
sql = "SELECT dato , overskrift , tekst FROM nyheder WHERE (id=" & request("id")
Avatar billede hossein Nybegynder
23. marts 2003 - 21:32 #3
sql = "SELECT dato , overskrift , tekst FROM nyheder WHERE id=" & request("id")
Avatar billede erikjacobsen Ekspert
23. marts 2003 - 21:33 #4
Det skal fedt hjælpe, hossein
Avatar billede scorpion Nybegynder
23. marts 2003 - 22:03 #5
Hej

Det kan ikke kun være: 
sql = "SELECT dato , overskrift , tekst FROM nyheder WHERE (id=" & request("id") & ")"
der er noget galt med, den virker jo, hvis den kommer fra redigere siden?

Der må vel være noget i følgende sætning som er galt på den:
If objRec.EOF Then
  sql = "dato = null, overskrift = null, tekst = null"

Mvh
Scorpion
Avatar billede erikjacobsen Ekspert
23. marts 2003 - 22:14 #6
Din første sql er der ikke noget i vejen med, forudsat
der står noget noget i request("id") - gør der ikke,
må du ikke udføre sætningen. Derfor skal du have en if
rundt om. Din anden sql er rent vrøvl, men det opdager du
jo nok en dag ;)
Avatar billede the_bma_man Nybegynder
24. marts 2003 - 09:53 #7
dim myID
myID = request("id")

if not isNull(myID) then
  sql = "UPDATE nyheder SET dato = '#" & dinDato & "#', overskrift = '" & dinOverskrift & "', tekst = '" & dinTekst & "' WHERE (id=" & request("id")& ")"
else
  sql = "INSERT INTO nyheder(dato, overskrift, tekst) VALUES ('#" & dinDato & "#', '" & dinOverskrift & "', '" & dinTekst & "')"
end if
conn.execure(sql)
Avatar billede scorpion Nybegynder
25. marts 2003 - 20:14 #8
Tak for svaret the_bma_man

Jeg tager lige en kig på det :-)
Scorpion
Avatar billede scorpion Nybegynder
31. marts 2003 - 01:50 #9
Tak for hjælpen... løsningen tog en lidt anden drejning, men jeg lærte da noget :-)

Scorpion
Avatar billede the_bma_man Nybegynder
03. april 2003 - 16:55 #10
OK - det er altid godt at udvide sin horisont.

Thanx 4 points
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