Avatar billede nanna31 Praktikant
14. juli 2002 - 10:40 Der er 27 kommentarer og
2 løsninger

indsæt post i database

Hvorfor virker nedenstående SQL-INSERT ikke ?

<%

nam = request("nam")

set CONN = Server.CreateObject ("ADODB.Connection")
CONN.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("GOW.mdb")

      SQLvar = "INSERT INTO players (nam) VALUES ('" & nam & "')"
      CONN.Execute(SQLvar)
response.write ("output=player insertet")

CONN.Close
set CONN = Nothing

%>
Avatar billede Slettet bruger
14. juli 2002 - 10:42 #1
nam = request("nam") ????
Avatar billede nih Novice
14. juli 2002 - 10:47 #2
nam = 'nam'  ????
Avatar billede nanna31 Praktikant
14. juli 2002 - 10:50 #3
nam er en string som sendes fra Flash
Avatar billede nanna31 Praktikant
14. juli 2002 - 10:54 #4
vi kan bare for en ordens skylds sige : nam = "troels"
Avatar billede keysersoze Ekspert
14. juli 2002 - 11:12 #5
prøv engang at fortæl hvilken fejl du får eller hvad der sker...
Avatar billede nanna31 Praktikant
14. juli 2002 - 11:28 #6
Der bliver ikke indsat nogen post i databasen, og desuden bliver variablen output heller ikke skrevet ud. Hvis jeg fjerner SQL-sætningen og den efterfølgende execute, så bliver output skrevet ud.
Avatar billede keysersoze Ekspert
14. juli 2002 - 11:34 #7
prøv engang følgende og fortæl hvad der så sker/står

<%

nam = request("nam")

set CONN = Server.CreateObject ("ADODB.Connection")
CONN.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("GOW.mdb")

      SQLvar = "INSERT INTO players (nam) VALUES ('" & nam & "')"
      'CONN.Execute(SQLvar)
'response.write ("output=player insertet")
response.write SQLvar

CONN.Close
set CONN = Nothing

%>
Avatar billede nanna31 Praktikant
14. juli 2002 - 12:25 #8
Nu har jeg skrevet følgende :

<%
nam = "troels"

set CONN = Server.CreateObject ("ADODB.Connection")
CONN.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("GOW.mdb")

      SQLvar = "INSERT INTO players (nam) VALUES ('" & nam & "')"
      'CONN.Execute(SQLvar)
      'response.write ("output=player insertet")
      response.write ("output="+SQLvar)

CONN.Close
set CONN = Nothing
%>


Outputtet blev følgende:
INSERT INTO players (nam) VALUES ("troels")
Avatar billede eagleeye Praktikant
14. juli 2002 - 12:42 #9
Du sikker på det ikke er: INSERT INTO players (nam) VALUES ('troels')
Avatar billede keysersoze Ekspert
14. juli 2002 - 12:49 #10
og resultatet skulle gerne have været

INSERT INTO players (nam) VALUES ('troels')

prøv at kør den kode jeg gav og fortøl hvad der ske med den - og lad være med at ændre noget
Avatar billede nanna31 Praktikant
14. juli 2002 - 13:15 #11
Sorry jeg skrev forkert - resultatet var som I siger :

INSERT INTO players (nam) VALUES ('troels')

men ligeså snart jeg slår executen til, så sker der ingenting ?
Avatar billede eagleeye Praktikant
14. juli 2002 - 13:19 #12
Er de hele din kode du har vist?
Avatar billede nanna31 Praktikant
14. juli 2002 - 13:25 #13
Ja - det er det hele.
Asp'en aktiveres fra Flash, derfor hjælper det ikke noget at skrive (response.write SQLvar), ellers burde det vel ingen betydning have her ?
Avatar billede nanna31 Praktikant
14. juli 2002 - 13:33 #14
Siger denne fejlmelding jer noget evt ? - den får jeg.

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access-driver] Handlingen skal bruge en opdaterbar forespørgsel.

Handlingen referer vist til CONN.Execute(sql).
Avatar billede eagleeye Praktikant
14. juli 2002 - 13:36 #15
Ar ja det hælper faktisk meget :)

Det betyder enten database filen eller folderen er skrivebeskyttet eller for windows NT/2000 ISR_MASHINENAME ikke har skrive rettigheder til databasen eller folderen..
Kommentar fra MS:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q175168
Avatar billede keysersoze Ekspert
14. juli 2002 - 13:39 #16
ja - du har ikke skriverettigheder i den mappe databasen ligger i... hvis det er på et webhotel har du formentlig fået tildelt en speciel mappe med skriveadgang...

så derfor sker der ikke noget
Avatar billede nanna31 Praktikant
14. juli 2002 - 13:43 #17
Jeg kører det bare på min IIS local host - er det mon mappen eller databasen, der skal rettes i ? - eller hvad gør jeg ?
Avatar billede nanna31 Praktikant
14. juli 2002 - 13:44 #18
Har jeg åbnet databasen i den korrekte mode evt ?
Avatar billede eagleeye Praktikant
14. juli 2002 - 13:45 #19
Hvilken Windows har du??

For Windows 98/Me  så det nok fordi der er readonly rettigheder på filen.
For Windows NT/2000 så højre klik på folderen og vælg for Internet Guest Acccount skal havde skrive rettigheder.
Avatar billede eagleeye Praktikant
14. juli 2002 - 13:46 #20
NT hedder den så vist IUSER_xxxxxxxx
Avatar billede nanna31 Praktikant
14. juli 2002 - 13:48 #21
jeg har windows 2000
Avatar billede eagleeye Praktikant
14. juli 2002 - 13:51 #22
Så højre klik på folderen databasen ligger i.
Vælg Sharing
Vælg taben Security
Vælg Internet Guest Account i boksen
Og giv rettigheden: Write  og måske også modify
Avatar billede nanna31 Praktikant
14. juli 2002 - 13:52 #23
Jeg gik ind i databasefilen og ændrede rettighederne, så alle nu har alle rettigheder, og nu ser det ud til at virke ! - men jeg har jo sådan set ikke i mit asp defineret nogen åbneingsmode for databasen ?
Avatar billede eagleeye Praktikant
14. juli 2002 - 13:55 #24
Denne definere et connection object til databasen:
set CONN = Server.CreateObject ("ADODB.Connection")

Denne linie åbner en forbindelse til database GOW.mdb:
CONN.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("GOW.mdb")
Avatar billede nanna31 Praktikant
14. juli 2002 - 13:59 #25
men er der ikke noget med, at man kan skrive CONN, 2,3 eller sådan noget for at angive, om der kan skrives, læses eller begge dele fra basen ?
Avatar billede eagleeye Praktikant
14. juli 2002 - 14:03 #26
Nej det er hvis du vel hendte fra databasen og vil åbne et recordset sådan her:

recordset.Open SQL_Streng, Connection, X, Y

Hvor X, Y definere forskellige måder at åbne recordsetet.

For at ligge ind i databasen skal du bare skrive som du har skevet, altså bruger connection execute metode:
CONN.Execute(SQLvar)
Avatar billede nanna31 Praktikant
14. juli 2002 - 15:46 #27
ok - tak for hjælpen, hvordan sender jeg så points til jer begge ?
Avatar billede eagleeye Praktikant
14. juli 2002 - 15:48 #28
Du trykker på knappen avenceret så skulle du kune dele points mellem os.
Avatar billede nanna31 Praktikant
14. juli 2002 - 15:52 #29
Takker!
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