Avatar billede kalt Nybegynder
15. august 2001 - 21:08 Der er 44 kommentarer og
1 løsning

tjek af eksisterende poster

Når nogen prøver at tilmelde et link vil jeg have at den tjekker om url\'en er der i forvejen.
Jeg det nedenstående kode, men den skriver at url findes i forvejen selv om den ikke gør ??

Conn.Open strConnect

Set rs = Server.CreateObject(\"ADODB.RecordSet\")     
strSQL = \"SELECT COUNT(*) AS cnt FROM links WHERE URL LIKE \'\" & Request.form(\"2\") & \"\'\"
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic   
if( rs.EOF OR rs.BOF ) then   
  strSQL = \"INSERT INTO links ( LinkName, URL, sogeord, kategori, Beskrivelse, Email, Rigtignavn ) \"   
strSQL = strSQL & \" VALUES(\'\" & Request.Form(\"1\") & \"\',\'\" & Request.Form(\"2\") & \"\',\'\" & Request.Form(\"sogeord\") & \"\',\"   
strSQL = strSQL & \"\'\" & Request.Form(\"kategori\") & \"\',\'\" & Request.Form(\"Beskrivelse\") & \"\',\'\" & Request.Form(\"Email\") & \"\',\"   
strSQL = strSQL & \"\'\" & Request.Form(\"Rigtignavn\") & \"\'\"   
Conn.Execute strSQL   
else 
  response.redirect (\"form1.htm\") 
end if   
rs.Close     
Set rs = Nothing     
Conn.Close     
set Conn = Nothing   
%>
Avatar billede hyperactive Nybegynder
15. august 2001 - 21:12 #1
Skal det ikke være if( rs.EOF AND rs.BOF ) then   
 
Avatar billede tomsommer Juniormester
15. august 2001 - 21:12 #2
SQL = \"select * from Links where UCase(URL) = UCase(\'\"& request.form(\"2\") &\"\')\"
Set RS = conn.Execute(SQL)
if not RS.EOF then
    response.write \"Findes allerede\"
end if
Avatar billede kalt Nybegynder
15. august 2001 - 21:19 #3
OK, jeg er nødt til at have det uddybet lidt jeg er begynder her..
Avatar billede tomsommer Juniormester
15. august 2001 - 21:20 #4
i stedet for : if( rs.EOF OR rs.BOF ) then   

skriver du

if rs.EOF then   
Avatar billede kalt Nybegynder
15. august 2001 - 21:23 #5
jeg prøver lige
Avatar billede kalt Nybegynder
15. august 2001 - 21:27 #6
Jeg får følgende:
Operation is not allowed when the object is open.

/form.asp, line 18

Og linie 18 ser sådan her ud:
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic   
Avatar billede tomsommer Juniormester
15. august 2001 - 21:28 #7
hmmmmmm.... luk din browser og åben den igen....

underlig fejl...
Avatar billede kalt Nybegynder
15. august 2001 - 21:32 #8
den gør det igen.??
Avatar billede tmceu Praktikant
15. august 2001 - 23:04 #9
Du har sandsynligvis 2 (eller flere) rs.Open i din kode. Kig længere oppe i koden.

Denne fejl opstår hvis du prøver at åbne et recordset der allerede er åbnet.
Avatar billede kalt Nybegynder
15. august 2001 - 23:07 #10
Det er rigtigt.
Øjeblik!!
Avatar billede kalt Nybegynder
15. august 2001 - 23:09 #11
Operation is not allowed when the object is open.

/form.asp, line 23


Hva gør jeg ??
Avatar billede tmceu Praktikant
15. august 2001 - 23:10 #12
Hvad er der i den linie ?
Avatar billede tmceu Praktikant
15. august 2001 - 23:11 #13
Prøv evt. at poste hele koden...
Avatar billede kalt Nybegynder
15. august 2001 - 23:11 #14
rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Avatar billede kalt Nybegynder
15. august 2001 - 23:12 #15
Her kommer hele skidtet:
<%Response.Buffer = True%>

<%

Const adOpenKeyset = 1
Const adLockOptimistic = 3

strConnect = \"Data Source=d:\\home\\istoriadk\\db\\database.mdb;Provider=Microsoft.Jet.OLEDB.4.0;\"

Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"

Conn.Open strConnect

Set rs = Server.CreateObject(\"ADODB.RecordSet\")
   
SQL = \"select * from Links where UCase(URL) = UCase(\'\"& request.form(\"2\") &\"\')\"
Set RS = conn.Execute(SQL)
if not RS.EOF then
    response.write \"Findes allerede\"
end if

rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic   
 
  strSQL = \"INSERT INTO links ( LinkName, URL, sogeord, kategori, Beskrivelse, Email, Rigtignavn ) \"   
strSQL = strSQL & \" VALUES(\'\" & Request.Form(\"1\") & \"\',\'\" & Request.Form(\"2\") & \"\',\'\" & Request.Form(\"sogeord\") & \"\',\"   
strSQL = strSQL & \"\'\" & Request.Form(\"kategori\") & \"\',\'\" & Request.Form(\"Beskrivelse\") & \"\',\'\" & Request.Form(\"Email\") & \"\',\"   
strSQL = strSQL & \"\'\" & Request.Form(\"Rigtignavn\") & \"\'\"   
Conn.Execute strSQL   
 
rs.Close     
Set rs = Nothing     
Conn.Close     
set Conn = Nothing   


%>
Avatar billede tmceu Praktikant
15. august 2001 - 23:14 #16
Du åbner dit recordset både med Set RS = conn.Execute(SQL) og rs.Open
Avatar billede kalt Nybegynder
15. august 2001 - 23:15 #17
Skal jeg så bare slette rs.open
??
Avatar billede kalt Nybegynder
15. august 2001 - 23:18 #18
Nej, hvis jeg gør det kommer den her:
Type mismatch: \'strSQL\'

/form.asp, line 23
Avatar billede tmceu Praktikant
15. august 2001 - 23:19 #19
Sandsynligvis skal du bare have en response.end ind efter \"findes allerede\", for du vil jo ikke lave en insert hvis den allerede findes. I de tilfælde hvor den ikke findes og du derfor vil lave en insert, skal du erstatte din rs.open med rs.execute, d.v.s. du skal ikke åbne det igen, men blot køre et nyt SQL statement.
Avatar billede kalt Nybegynder
15. august 2001 - 23:21 #20
OK altså
SQL = \"select * from Links where UCase(URL) = UCase(\'\"& request.form(\"2\") &\"\')\"
Set RS = conn.Execute(SQL)
if not RS.EOF then
    response.write \"Findes allerede\"
    respone.end
end if
Avatar billede tmceu Praktikant
15. august 2001 - 23:26 #21
Jeps, det afbryder videre behandling af scriptet.

Men du skal stadig ændre din rs.open længere nede, da dit recordset allerede er åbnet hvis den ikke findes og du derfor vil indsætte den.
Avatar billede tmceu Praktikant
15. august 2001 - 23:27 #22
Ahh, der mangler lige et \'s\' i din kode fra før
Avatar billede kalt Nybegynder
15. august 2001 - 23:27 #23
s ??
Avatar billede tmceu Praktikant
15. august 2001 - 23:29 #24
SQL = \"select * from Links where UCase(URL) = UCase(\'\"& request.form(\"2\") &\"\')\"
Set RS = conn.Execute(SQL)
if not RS.EOF then
    response.write \"Findes allerede\"
    respone.end                              <---- HER :-)
end if
Avatar billede kalt Nybegynder
15. august 2001 - 23:35 #25
OK, nu får den fejl igen?
Operation is not allowed when the object is open.

/form.asp, line 24

linie 24: rs.open strSQL, Conn, adOpenKeyset, adLockOptimistic   
Avatar billede kalt Nybegynder
15. august 2001 - 23:37 #26
rs.open er erstattet med rs.execute
Object doesn\'t support this property or method: \'rs.Execute\'

/form.asp, line 24
Avatar billede tmceu Praktikant
15. august 2001 - 23:39 #27
Du skal faktisk helt fjerne linien med rs.open

SQL = \"select * from Links where UCase(URL) = UCase(\'\"& request.form(\"2\") &\"\')\"
Set RS = conn.Execute(SQL)
if not RS.EOF then
    response.write \"Findes allerede\"
end if

rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic    <-- Her åbner du, men det er allerede åbnet. Samtidig kører du med strSQL som SQL statement, men det bliver først defineret herunder.
 
  strSQL = \"INSERT INTO links ( LinkName, URL, sogeord, kategori, Beskrivelse, Email, Rigtignavn ) \"   
strSQL = strSQL & \" VALUES(\'\" & Request.Form(\"1\") & \"\',\'\" & Request.Form(\"2\") & \"\',\'\" & Request.Form(\"sogeord\") & \"\',\"   
strSQL = strSQL & \"\'\" & Request.Form(\"kategori\") & \"\',\'\" & Request.Form(\"Beskrivelse\") & \"\',\'\" & Request.Form(\"Email\") & \"\',\"   
strSQL = strSQL & \"\'\" & Request.Form(\"Rigtignavn\") & \"\'\"   
Conn.Execute strSQL                                        <- denne linie skal du beholde, i stedet for den med rs.open
Avatar billede kalt Nybegynder
15. august 2001 - 23:42 #28
Også:
Conn, adOpenKeyset, adLockOptimistic
i linien
rs.open strSQL, Conn, adOpenKeyset, adLockOptimistic 
Avatar billede tmceu Praktikant
15. august 2001 - 23:42 #29
Undskyld, det er rigtigt. Du skal bruge execute mod connection objektet, som du gør i Set RS = conn.Execute(SQL). Prøv at bruge følgende kode:

<%Response.Buffer = True%>

<%

Const adOpenKeyset = 1
Const adLockOptimistic = 3

strConnect = \"Data Source=d:\\home\\istoriadk\\db\\database.mdb;Provider=Microsoft.Jet.OLEDB.4.0;\"

Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"

Conn.Open strConnect

Set rs = Server.CreateObject(\"ADODB.RecordSet\")
   
SQL = \"select * from Links where UCase(URL) = UCase(\'\"& request.form(\"2\") &\"\')\"
Set RS = conn.Execute(SQL)
if not RS.EOF then
    response.write \"Findes allerede\"
    response.end
end if

strSQL = \"INSERT INTO links ( LinkName, URL, sogeord, kategori, Beskrivelse, Email, Rigtignavn ) \"   
strSQL = strSQL & \" VALUES(\'\" & Request.Form(\"1\") & \"\',\'\" & Request.Form(\"2\") & \"\',\'\" & Request.Form(\"sogeord\") & \"\',\"   
strSQL = strSQL & \"\'\" & Request.Form(\"kategori\") & \"\',\'\" & Request.Form(\"Beskrivelse\") & \"\',\'\" & Request.Form(\"Email\") & \"\',\"   
strSQL = strSQL & \"\'\" & Request.Form(\"Rigtignavn\") & \"\'\"   

set RS = Conn.Execute strSQL   
 
if rs.state = 1 then rs.Close     
Set rs = Nothing     
if conn.state = 1 then Conn.Close     
set Conn = Nothing   


%>

Tilføjelsen af if rs.state = 1 then forhindrer fejlmeddelelser, hvis du lukker et objekt der ikke er åbent.
Avatar billede kalt Nybegynder
15. august 2001 - 23:46 #30
Expected end of statement

/form.asp, line 29

set RS = Conn.Execute strSQL

linie 29: set RS = Conn.Execute strSQL   
Avatar billede tmceu Praktikant
15. august 2001 - 23:49 #31
Prøv lige med Set RS = conn.Execute(strSQL)
Avatar billede kalt Nybegynder
15. august 2001 - 23:50 #32
prøver lige..
Avatar billede tmceu Praktikant
15. august 2001 - 23:50 #33
Åh, mand! Du laver jo en insert til sidst, så det skal kun være Conn.Execute strSQL

:-)
Avatar billede kalt Nybegynder
15. august 2001 - 23:52 #34
Syntax error in INSERT INTO statement.

/form.asp, line 29

Og linien er:
set RS = Conn.Execute(strSQL)
Avatar billede tmceu Praktikant
15. august 2001 - 23:54 #35
Du skal slet ikke bruge noget recordset, for eksekveringen af strSQL returnerer ikke noget recordset.
Avatar billede kalt Nybegynder
15. august 2001 - 23:54 #36
Den kommer med fejl alligevel :-(
Conn.Execute strSQL
Avatar billede tmceu Praktikant
15. august 2001 - 23:55 #37
prøv at udskrive din færdige strSQL linie og post den her
Avatar billede kalt Nybegynder
15. august 2001 - 23:56 #38
Du får hele skidtet igen.
<%Response.Buffer = True%>

<%

Const adOpenKeyset = 1
Const adLockOptimistic = 3

strConnect = \"Data Source=d:\\home\\istoriadk\\db\\database.mdb;Provider=Microsoft.Jet.OLEDB.4.0;\"

Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"

Conn.Open strConnect

Set rs = Server.CreateObject(\"ADODB.RecordSet\")
   
SQL = \"select * from Links where UCase(URL) = UCase(\'\"& request.form(\"2\") &\"\')\"
Set RS = conn.Execute(SQL)
if not RS.EOF then
    response.write \"Findes allerede\"
    response.end
end if

strSQL = \"INSERT INTO links ( LinkName, URL, sogeord, kategori, Beskrivelse, Email, Rigtignavn ) \"   
strSQL = strSQL & \" VALUES(\'\" & Request.Form(\"1\") & \"\',\'\" & Request.Form(\"2\") & \"\',\'\" & Request.Form(\"sogeord\") & \"\',\"   
strSQL = strSQL & \"\'\" & Request.Form(\"kategori\") & \"\',\'\" & Request.Form(\"Beskrivelse\") & \"\',\'\" & Request.Form(\"Email\") & \"\',\"   
strSQL = strSQL & \"\'\" & Request.Form(\"Rigtignavn\") & \"\'\"   

Conn.Execute strSQL 
 
if rs.state = 1 then rs.Close     
Set rs = Nothing     
if conn.state = 1 then Conn.Close     
set Conn = Nothing   


%>
Avatar billede tmceu Praktikant
15. august 2001 - 23:57 #39
Du mangler en parantes til sidst, til at afslutte values()
Avatar billede kalt Nybegynder
15. august 2001 - 23:58 #40
strSQL = strSQL & \" VALUES <--HER ?
(\'\" & Request.Form(\"1\") & \"\',\'\" & Request.Form(\"
Avatar billede tmceu Praktikant
16. august 2001 - 00:02 #41
Nej... strSQL = strSQL & \"\'\" & Request.Form(\"Rigtignavn\") & \"\')\"    <-- Her

Avatar billede kalt Nybegynder
16. august 2001 - 00:05 #42
Yes så er den der 10000000 tak
Avatar billede tmceu Praktikant
16. august 2001 - 00:06 #43
Det var så lidt. Godnat zzZZZZZ
Avatar billede kalt Nybegynder
16. august 2001 - 00:07 #44
sov godt
Avatar billede tomsommer Juniormester
16. august 2001 - 07:55 #45
WHAT.. du kan ikke mene at når du bruger min kode så skal jeg ikke have point... det er jo ikke fair...
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