Avatar billede tdaugaard Nybegynder
13. juni 2000 - 04:30 Der er 21 kommentarer og
3 løsninger

INSERT INTO problem!!!

Jeg har et *lille* problem med et INSERT INTO query.

Min SQL sætning ser således ud:

strSQL = "INSERT INTO mails (to,from,subject,message,timesent,datesent,read,folder,crypt) VALUES('" & strTo & "','" & Session("username") & "','" & strSubject & "','" & strMessage & "'," & Time & "," & Date & ",0,'inbox'," & intEnc & ")"

Og udskrevet KAN den se således ud:

INSERT INTO mails (to,from,subject,message,timesent,datesent,read,folder,crypt) VALUES('tdaugaard','tdaugaard','Re: Your Message','This is the message!',4:07:35 AM,6/13/2000,0,'inbox',0)

Det er på linie 322 jeg får en fejl:

318 ConnectDB.Open strSQLQuery
319
320 (strSQL streng)
321               
322 CmdRecord.Open strSQL, ConnectDB
223
224 CmdRecord.Close
225 ConnectDB.Close

hvorfor det fatter jeg ikke!
Avatar billede tdaugaard Nybegynder
13. juni 2000 - 04:31 #1
Det hjælpe sikkert ikke noget, men her er hvad IE siger:

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)<br><b>/mail/message.asp, line 322
Avatar billede sjensen Nybegynder
13. juni 2000 - 07:53 #2
Jeg mener det er hhv. tidspunkt og dato der ikke kan accepteres som de er. Du skal så vidt jeg husker sætte dato og tid ins i en parameter (create param) og så angive disse navne i sqlstrengen.

Jeg håber du forstår hvad jeg mener.
Avatar billede sjensen Nybegynder
13. juni 2000 - 07:54 #3
ups: ins -> ind
Avatar billede fumes Nybegynder
13. juni 2000 - 07:55 #4
Prøv at smide din dato og tid ind i ''
Avatar billede steffen Nybegynder
13. juni 2000 - 08:19 #5
Hvad er formatet på felterne i databasen, hvor timesent og datesent skal sættes ind?

Det er garanteret en god idé at tilføje ' omkring disse.

Yderligere kan der være problemer, hvis der er ' eller " i mailen - dem kan du fjerne ved at bruge addslashes.
Avatar billede sv Nybegynder
13. juni 2000 - 10:34 #6
jeg plejer også tit at være på sammenbrudets rand når jeg arbejder med alm. sql insert, jeg har altid ment at det er nemmere med et recordset:
rs.addnew
rs("post") = værdi
rs.update
osv....
Avatar billede tdaugaard Nybegynder
13. juni 2000 - 14:36 #7
<< sv >>
Jeg brugte også .AddNew og .Update før, men min rutine var meget "klodset" så jeg ville bruge INSERT istedet.
Avatar billede tdaugaard Nybegynder
13. juni 2000 - 14:42 #8
<< sjensen >>
Nej, jeg forstår ikke helt hvad du mener med Create Param. Kan du komme med et eksempel ??

<< fumes >>
Det har jeg prøvet. Det virkede ikke.

<< steffen >>
Formatet er på begge "Date/Time".
Der var lige en anden ting nu du nævner det omkring " og ' i en mail. Jeg har prøvet at "sende" en uden nogle af dem i, men det hjalp ikke.
Avatar billede sv Nybegynder
13. juni 2000 - 16:29 #9
Syntes du det var klodset ??
Hm...Hver sin smag :-)
Avatar billede tdaugaard Nybegynder
13. juni 2000 - 17:55 #10
<< sv >>
Nej, jeg synes at MIN rutine var klodset.
Prøv at se her hvordan min rutine så ud for at indsætte en "mail" i DB'en:

Set ConnectDB     = Server.CreateObject("ADODB.Connection")
Set CmdRecord     = Server.CreateObject("ADODB.Recordset")

strSQLQuery     = "DBQ=" & strDBPath & ";Driver={Microsoft Access Driver (*.mdb)}"
ConnectDB.Open strSQLQuery

strSQL = "SELECT * FROM mails"
CmdRecord.Open strSQL, ConnectDB, 1, 3
    CmdRecord.AddNew
    CmdRecord.Update

    lngID = CLng(CmdRecord("id"))
CmdRecord.Close: Set CmdRecord = Nothing
ConnectDB.Close: Set ConnectDB = Nothing

Set ConnectDB     = Server.CreateObject("ADODB.Connection")
Set CmdRecord     = Server.CreateObject("ADODB.Recordset")

strSQLQuery     = "DBQ=" & strDBPath & ";Driver={Microsoft Access Driver (*.mdb)}"
ConnectDB.Open strSQLQuery
strSQL = "SELECT * FROM mails WHERE (id = " & lngID & ")"
CmdRecord.Open strSQL, ConnectDB, 1, 3
    CmdRecord.Fields("to") = strTo
    CmdRecord.Fields("from") = Session("username")
    CmdRecord.Fields("subject") = strSubject
    CmdRecord.Fields("message") = strMessage
    CmdRecord.Fields("read") = "0"
    CmdRecord.Fields("folder") = "draft"

    CmdRecord.Update
CmdRecord.Close: Set CmdRecord = Nothing
ConnectDB.Close: Set ConnectDB = Nothing
Avatar billede stingbat Nybegynder
13. juni 2000 - 23:31 #11
Hvad med lige at prøve ".... ,#" & Date & "#, ...."
Altså at sætte # mellem datoen...! Dette er for at fortælle SQL'en at det er en dato, ligesom at ' betyder at det er tekst...! *S*


Ellers kan du evt. kontakte mig via ICQ

// Stingbat
ICQ # 432209
Avatar billede tdaugaard Nybegynder
14. juni 2000 - 01:03 #12
<< stingbat >>
Det hjalp desværre ikke...
Avatar billede tdaugaard Nybegynder
14. juni 2000 - 01:08 #13
Nu kan det godt være det er mig der er dum, men SKAL felterne i UPDATE query'et være i samme orden som de er i DB'en ??

Avatar billede tdaugaard Nybegynder
14. juni 2000 - 01:24 #14
^-- Åbenbart ikke --^

Det er lidt underligt.

INSERT INTO mails (to) VALUES('tdaugaard')

virker men

INSERT INTO mails (to,from) VALUES('tdaugaard','someoneelse')

gør ikke!

begge felter er af typen Streng (kunne i jo næsten selv ha' regnet ud *s*)
Avatar billede jonasmr Nybegynder
14. juni 2000 - 02:12 #15
Hejsa.

Du bliver nødt til at markere på en eller anden måde at det er en dato du har med at gøre overfor sql-serveren..

husk at du laver det hele om til en streng.. det vil sige at du sætter dine dato objekter ind som datoobjekter, men da du sætter dem ind i en streng, kommer de også som en streng til sql-serveren... Derfor _SKAL_ det markeres..
med f.eksk:

  aaa,'25 jan',bbb

Jeg ved ikke om andre ting en plinger duer brug plinger, jeg lover dig 100% at de virker


i linien:
322 CmdRecord.Open strSQL, ConnectDB

mangler der desuden 3 parametre.. disse er ikke krævet hvis du har åbnet recordsættet før, men du taber ihvertfald ikke noget ved at skrive dem der vel?
Avatar billede tdaugaard Nybegynder
14. juni 2000 - 03:40 #16
<< jonasmr >>

Jeg har prøvet at udskrive mit SQL query statement og der står datoen sådan her:

,#6/14/2000#,

da stingbat sagde jeg skulle prøve det (dog uden held :()

Mangler der 3 parametre ?? Da jeg brugte .AddNew og .Update brugte jeg

CmdRecord.Open strSQL, ConnectDB, 1, 3

men jeg aner IKKE EN SKID om hvad 1 og 3 står for/betyder eller hvad de gør.

Så meget ASP database handling har jeg ikke lært endnu.

Jeg vender lige tilbage senere i dag omkring kl. 20 eller sådan noget og skriver hvordan mit SQL Query ser ud i kode form og udskrevet.
Avatar billede tdaugaard Nybegynder
17. juni 2000 - 14:42 #17
Jeg går tilbage til .AddNew og .Update. Det her gider jeg sku ikke sidde og fedte med.

I får point alligevel for jeres hjælp!

Hvis STEFFEN og STINGBAT gider svare så deler jeg pointsne mellem jer og JONASMR.
Avatar billede sv Nybegynder
17. juni 2000 - 15:34 #18
Ok, men hvis du går tilbage til addnew osv. kommer her lige lidt forslag:


Set CmdRecord    = Server.CreateObject("ADODB.Recordset")

strSQLQuery    = "DBQ=" & strDBPath & ";Driver={Microsoft Access Driver (*.mdb)}"
<!-- #Include file="adovbs.inc"-->
strSQL = "SELECT * FROM mails"
CmdRecord.Open strSQL, strSqlQuery, adOpenDynamic, adLockOptimistic
    CmdRecord.AddNew
    CmdRecord.Fields("to") = strTo
    CmdRecord.Fields("from") = Session("username")
    CmdRecord.Fields("subject") = strSubject
    CmdRecord.Fields("message") = strMessage
    CmdRecord.Fields("read") = "0"
    CmdRecord.Fields("folder") = "draft"
    CmdRecord.Update
CmdRecord.Close: Set CmdRecord = Nothing
¨

Sådan skulle det være lidt nemmere...
Forklaring....Du behøver ikke at oprette en ny post, og så senere opdatere indholdet i den.
Du behøver heller ikke at lave en alm connection, for at bruge recordsettet...

søren
Avatar billede sv Nybegynder
17. juni 2000 - 15:35 #19
Forresten, det er god programmerings skik at bruge adovbs.inc filen, når man skal åbne sit recordset..... :-)
Avatar billede tdaugaard Nybegynder
17. juni 2000 - 15:45 #20
<< sv >>

A'hva for en ?? adovbs.inc ?? Øhhh ... haven't got it ..
Har du den ? Gider du så ikke lige smide den hen i binaries@tdaugaard.dk ??

Så kan du være med i point fordelingen.

Angående point bedes STEFFEN og STINGBAT give et svar inden i aften kl. 00:00. Ellers går point til SV og JONASMR.
Avatar billede sv Nybegynder
17. juni 2000 - 16:10 #21
Så er den mail afsted
Avatar billede steffen Nybegynder
17. juni 2000 - 22:37 #22
okidoki
Avatar billede tdaugaard Nybegynder
17. juni 2000 - 23:44 #23
<< sv >>
Takker for .inc filen :)
Avatar billede tdaugaard Nybegynder
18. juni 2000 - 01:08 #24
Point fordelingen er sket således:

steffen: 25
jonasmr: 25
sv    : 50

grunden til dette er, at SV gav mig et svar jeg kunne bruge efter jeg valgte at gå tilbage til .AddNew ..
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