Avatar billede orca Nybegynder
06. september 2001 - 20:33 Der er 18 kommentarer og
1 løsning

database problem

Hej alle. Jeg har nogen problemer med mit notat felt (MS SQL db). Jeg bruger følgende kode til at give den en værdi:
<%
Set rs = Server.CreateObject(\"ADODB.RecordSet\")
rs.Open \"SELECT * FROM tblProfiler\", Conn, 1, 3

rs.AddNew
rs(\"freetext\") = nFreeText
rs.Update

Set rs = Nothing
%>

nFreeText er en variabel som laves vha en request.form. (den er blevet renset for \' ).

Hvad kan være galt? Det samme sker også når jeg opdaterer en record.

Mvh Mark
www.profiled.org/?orca
Avatar billede eagleeye Praktikant
06. september 2001 - 20:46 #1
Hvilken fejl får du?
Avatar billede stig3 Mester
06. september 2001 - 20:50 #2
Jeg kender ikke den metode du opdaterer på, men skal der ikke være pinger \'\' om en tekststreng ?

rs(\"freetext\") = \"\'\" & nFreeText & \"\'\"

skud i tågen.

Er du sikker på at det er et notat-felt i sql server ????
Det findes da vist ikke
Avatar billede cuddles Nybegynder
06. september 2001 - 21:18 #3
Hvor er din pointer placeret?
Jeg er ikke så stærk i tallene, når man laver en rs.Open, da jeg plejer at bruge  adOpen*
Avatar billede orca Nybegynder
06. september 2001 - 22:19 #4
eagleeye -> Ups, det glemte jeg at sige \"Syntax error\" - og så linienummeret med rs(\"freetext\") = nFreeText

stig3 -> Der behøver ikke at være citationstegn rundt om variabelnavnene så længe de inderholder strenge her. Du kan kalde det Notat felt eller Tekst felt.

cuddles -> Jeg er faktisk ikke klar over hvad de betyder men disse virker ved alle andre operationer jeg bruger. Også ved alle andre felter i min database, bare ikke ved notat/tekst felter.

Mvh Mark
www.profiled.org/?orca
Avatar billede eagleeye Praktikant
06. september 2001 - 22:34 #5
Jeg er ikke så meget inde i msSQL men jeg ahr fundet dette link som viser noget med rs.addnew:
http://www.maherassociates.com/mssql.cfm
De benytter:
Set rs = db.OpenRecordset(cSQL, dbOpenDynamic, dbExecDirect, dbOptimistic)
til at åbne med.
Måske det er noget du kan bruge.

Hvis det er syntax fejl er vil jeg nok også tro der skulle \'\' omkring.
Avatar billede orca Nybegynder
06. september 2001 - 22:50 #6
eagleeye -> Jeg prøvede nogen af mulighederne de talte om i linket men de virkede ikke, jeg bruger heller ikke en ODBC forbindelse men en DSN-Less. Jeg prøvede også for god ordens skyld at omringe min variable med \"... men ligelidt hjalp det.
Avatar billede eagleeye Praktikant
06. september 2001 - 22:53 #7
Det skal være \'nFreeText\'.
Avatar billede orca Nybegynder
06. september 2001 - 22:59 #8
Det kan man ikke sige, så kommer der nemlig en syntax fejl. I SQL querys skal strenge være omringer af \'\' men ikke i normale variable osv.
Avatar billede eagleeye Praktikant
06. september 2001 - 23:01 #9
hmm har lige fundet det her, så skal det nok være \" som du skriver:

set xConn = Server.CreateObject(\"ADODB.Connection\")
xConn.Open \"myDSNname\"          ` Open connection using correct DSN
Set res =  Server.CreateObject(\"ADODB.Recordset\")
` 2 for Open Dynamic, 3 for Optimistic Locking, 2 for Table
res.Open \"MysqlTable\", xConn, 2, 3, 2  ` Opens the table \"MysqlTAble\" into a recordset
res.AddNew                      ` Add a new row
res.Fields(0) = 100            ` Set first field (integer) to 100
res.Fields(1) = \"Line Number 1\" ` Set second field (text) to some text value
res.Fields(2) = date()          ` Set third field (datetime) named \"EndDate\" to current date
res.Update                      ` Call update to commit the data
res.Close                      ` Close the recordset
set rec = nothing
xConn.close
Avatar billede orca Nybegynder
06. september 2001 - 23:30 #10
Såvidt jeg kan se virker dette med en MySQL database? Jeg har ikke kun brug for at få det til at virke ved .AddNew men også når jeg vil opdatere min database.
Avatar billede eagleeye Praktikant
06. september 2001 - 23:38 #11
Ja ok, men jeg ville gætte på at open ville være noget af det samme.

Men de skriver rs.Open \"SQL-ting\",Conn,2, 3 hvor du har 1,3.?


Jeg har haft .addnew til at virke med disse(godt nok access database):
Rs.Open \"SQL-ting\",Conn
...eller
Rs.Open \"SQL-ting\",Conn,adopenstatic,adlockoptimistic

Jeg har bare set med access at hvis man skriver de forkerte så virker opdateringen ikke.
Avatar billede orca Nybegynder
06. september 2001 - 23:45 #12
> Rs.Open \"SQL-ting\",Conn,adopenstatic,adlockoptimistic

adopenstatic og adlockoptimistic er to konstanter som har hhv. værdien 1 og 3... altså giver det det samme som jeg skriver. Men som sagt virker alting perfekt med alle andrer felte i min database, bare ikke dette notat felt. :(...

ps, point er forhøjet til 45
Avatar billede stig3 Mester
07. september 2001 - 16:56 #13
Har du prøvet at udskrive variablen så du er sikker på at der er noget i ?

Avatar billede orca Nybegynder
07. september 2001 - 18:06 #14
yep, det har jeg prøvet... (og den indeholder precist hvad den skal)
Avatar billede cuddles Nybegynder
20. september 2001 - 13:37 #15
Indeholder variablen nogle enkelt plinger? (\')

Hvis den gør, så prøv om du kan erstatte den med et andet tegn inden su smider den ind i databasen ( evt. med et `).
Avatar billede orca Nybegynder
20. september 2001 - 17:30 #16
det har jeg også tjekket for... og det gør den ikke. :(
Avatar billede rasmusibsen Nybegynder
20. september 2001 - 17:38 #17
Det burde ikke være nødvendigt men jeg ville nok forsøge med en konvertering: (nu når alt andet ikke virker)

rs(\"freetext\") = Cstr(nFreeText)
Avatar billede orca Nybegynder
07. oktober 2001 - 01:12 #18
Jeg har desværre ikke fået det til at virke... :(
Avatar billede eagleeye Praktikant
10. oktober 2001 - 13:12 #19
Hej
jeg har set nogle steder skrive de denne rs.open:

rs.open \"table\", conn, 1, 2

din cil så være:
rs.Open \"tblProfiler\", Conn, 1, 3

rs.AddNew
rs(\"freetext\") = nFreeText
rs.Update

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