Avatar billede montago Praktikant
25. januar 2004 - 00:35 Der er 32 kommentarer og
1 løsning

SQL - Update eller Insert

Hvis Record findes læg 1 til Count
ellers tilføj ny record

kan ikke finde ud af det !! hjælp mig med at rette følgende:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("..\..\db\Seach.mdb")       
Set RS = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM KeyWords WHERE KeyWords = '" & Request.Form("SeachFor") & "'"
RS.Open SQL, Conn, 3, 3
   
If RS.EOF then
strSQL = "Insert into personer (KeyWords) " & "values( '" & Request.Form("SearchFor") & "')"
'RS.Execute(strSQL)
else
  RS.Update
  RS("Count") = RS("Count") + 1
  RS.Update
End if
           
    Conn.Close
    Set Conn = Nothing
Avatar billede eagleeye Praktikant
25. januar 2004 - 00:38 #1
Denne del:

If RS.EOF then
strSQL = "Insert into personer (KeyWords) " & "values( '" & Request.Form("SearchFor") & "')"
'RS.Execute(strSQL)
else
  RS.Update
  RS("Count") = RS("Count") + 1
  RS.Update
End if


Skal rette til dette:

If RS.EOF then
  strSQL = "Insert into personer (KeyWords) " & "values('" & Request.Form("SearchFor") & "')"
  Conn.Execute(strSQL)
else
  RS("Count") = RS("Count") + 1
  RS.Update
End if
Avatar billede montago Praktikant
25. januar 2004 - 00:40 #2
altid på pletten med EagleEye... ergo navnet !
Avatar billede montago Praktikant
25. januar 2004 - 00:41 #3
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x240 Thread 0x934 DBC 0x9a625ac Jet'.

/Upload/Search.asp, line 53

Linie 53:     Conn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("..\..\db\Seach.mdb")
Avatar billede montago Praktikant
25. januar 2004 - 00:41 #4
ahh... mangler et R
Avatar billede montago Praktikant
25. januar 2004 - 00:42 #5
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/Upload/Search.asp, line 56

Linie 56: RS.Open SQL, Conn, 3, 3
Avatar billede eagleeye Praktikant
25. januar 2004 - 00:42 #6
Ok det betyder den ikke kan finde database filen i den angivene folder.
Det er denne del:

Server.MapPath("..\..\db\Seach.mdb")
Avatar billede montago Praktikant
25. januar 2004 - 00:42 #7
hmm... dvs. der SKAL være mindst Een Record eller ?
Avatar billede eagleeye Praktikant
25. januar 2004 - 00:43 #8
nej det ikke nødvendigt
Avatar billede eagleeye Praktikant
25. januar 2004 - 00:43 #9
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

SQL = "SELECT * FROM KeyWords WHERE KeyWords = '" & Request.Form("SeachFor") & "'"

Er du sikker på kolonnen hedder KeyWords ??
Avatar billede montago Praktikant
25. januar 2004 - 00:47 #10
hehe.... der skal lige rettes nogle ting... fx "personer"

jeg havde kaldt tabellen keyword i stedet for keywords...

i stedet for personer skal der vel stå KeyWords ?
Avatar billede montago Praktikant
25. januar 2004 - 00:49 #11
det funker vidst nu... !

takker... du skal lige lave et svar...
Avatar billede eagleeye Praktikant
25. januar 2004 - 00:50 #12
Ok her et svar ;)
Avatar billede montago Praktikant
25. januar 2004 - 00:50 #13
nææ den updater ikke ! :-(

hvis jeg lavet en søgning med samme ord som sidst, går den ikke i ELSE
Avatar billede eagleeye Praktikant
25. januar 2004 - 00:55 #14
Hvornår udskriver to antalet??
Der er noget med recordset og connecion skal lukke før man kan se det på siden??
Avatar billede eagleeye Praktikant
25. januar 2004 - 00:56 #15
nej....
Prøv lige at rette:

RS.Open SQL, Conn, 3, 3

Til:

RS.Open SQL, Conn, 1, 3
Avatar billede montago Praktikant
25. januar 2004 - 00:57 #16
i know...

pt. åbner og lukker jeg databasen blot for at skrive til den ELLER update...

jeg åbner databasen efter jeg har lavet nogle søgninger... disse søgninger skulle så endten gemmes eller opdatere Count
Avatar billede montago Praktikant
25. januar 2004 - 00:59 #17
virkede ikke... der tilføjes bare en record mere i rækken... dog af samme navn...

som sagt... den hopper slet ikke ind i ELSE
Avatar billede eagleeye Praktikant
25. januar 2004 - 01:01 #18
hvordan ser SQLen ud som tjekke om den findes?
Avatar billede montago Praktikant
25. januar 2004 - 01:03 #19
der er ingen pt...

jeg åbner databasen i Access
Avatar billede eagleeye Praktikant
25. januar 2004 - 01:04 #20
Nu tænker jeg på i koden lige før rs.Open linjen :)
der må være noget som gør den ikke kan finde posterne
Avatar billede montago Praktikant
25. januar 2004 - 01:05 #21
Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("..\..\db\Search.mdb")       
    Set RS = Server.CreateObject("ADODB.Recordset")
    SQL = "SELECT * FROM KeyWords WHERE KeyWords = '" & Request.Form("SeachFor") & "'"
    RS.Open SQL, Conn, 1, 3
Avatar billede montago Praktikant
25. januar 2004 - 01:10 #22
skulle jeg lave en
If RS.EOF then OR RS.BOF then
  ...
else
  ...
end if
Avatar billede eagleeye Praktikant
25. januar 2004 - 01:10 #23
der er også noget "helt" galt..

Du hendter fra en tabel KeyWords
SQL = "SELECT * FROM KeyWords WHERE KeyWords = '" & Request.Form("SeachFor") & "'"


men gemmer ordet i tabelle personer:
strSQL = "Insert into personer (KeyWords) " & "values( '" & Request.Form("SearchFor") & "')"
Avatar billede montago Praktikant
25. januar 2004 - 01:11 #24
uden den ene then *
Avatar billede eagleeye Praktikant
25. januar 2004 - 01:11 #25
Nej det er nok med rs.EOF hvis der er en eller flere poster vil rs.EOF være false.
Avatar billede montago Praktikant
25. januar 2004 - 01:12 #26
jeg fant ud af det... har rettet Personer til Keywords :-) !!!
Avatar billede montago Praktikant
25. januar 2004 - 01:12 #27
dvs... jeg fant ud af det for et stykke tid siden...
Avatar billede montago Praktikant
25. januar 2004 - 01:13 #28
Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("..\..\db\Search.mdb")       
    Set RS = Server.CreateObject("ADODB.Recordset")
    SQL = "SELECT * FROM KeyWords WHERE KeyWords = '" & Request.Form("SeachFor") & "'"
    RS.Open SQL, Conn, 1, 3
   
    If RS.EOF then
      strSQL = "Insert into KeyWords (KeyWords) " & "values('" & Request.Form("SearchFor") & "')"
      Conn.Execute(strSQL)
    else
      RS("Count") = RS("Count") + 1
      RS.Update
    End if
           
    Conn.Close
    Set Conn = Nothing
Avatar billede eagleeye Praktikant
25. januar 2004 - 01:19 #29
:) det ser jeg før nu, der manger et r i den føste SQL sætning i SearchFor
Request.Form("SeachFor")
Request.Form("SearchFor")
Avatar billede montago Praktikant
25. januar 2004 - 01:21 #30
JAAAA
Avatar billede montago Praktikant
25. januar 2004 - 01:22 #31
det funkter nu... Count bliver opskrevet hvis der findes en record !
Avatar billede eagleeye Praktikant
25. januar 2004 - 01:24 #32
Ok, godt.. Tænk et lille bogstav kan drille så meget ;)
Avatar billede montago Praktikant
25. januar 2004 - 01:42 #33
yup... det noget være noget...

nogle ting burde fungere som XHTML... (selv-rettende)
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