13. maj 2001 - 14:57
Der er
26 kommentarer og 1 løsning
Hurtig databaseløsning
Hej! Hvem vil lave dette hurtigt? En database + asp-kode. Ved hjælp af denne connection skal 20 variabler lægges ned i min database: Set dbConn = Server.CreateObject(\"ADODB.Connection\") dbConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"/_private/Orders.mdb\") Der er ingen kontrol på, om noget eksisterer i forvejen. Data skal bare lægges ned i en ny record. Databasen må dog maksimalt indeholde 1000 records. Hvis den nyoprettede er nummer 1001 skal den ældste slettes. Kontinuerligt. Variablerne (og felterne i databasen) hedder: (OrderID=Unik nøgle) TimeNow (Hentes fra serveren) ArticleId LevId CookieFirma CokkieAtt CookieAdresse1 CookieAdresse2 CookiePostnr CookieBynavn CookieTelefon CookiEmail Antal1 Antal2 Antal3 Antal4 Kupon1 Kupon2 Kupon3 Kupon4 Jeg skal bruge orders.mdb i access 2000 format og asp-koden, der skriver det hele ned i databasen.
Annonceindlæg fra Kingston Technology
125 er i orden - starter du? :0)
Jeg gider ikke lige nu for kun 125. Det må vente til i aften/nat.
Hvad er forskellen på OrderID (din nøgle) og ArticleID????? Bruger du autonummerering til begge to?
OrderId tages fra databasens eget felt for unik nøgle (Genereres af Access ved indsættelse af ny record). ArticleId er bare en variabel, som der gerne må være mange af. (Som de andre variabler) Jeg håber, du forstår hvad jeg mener :0)
Nej - egentlig ikke!!! Hvis ikke du bruger ArticleId til noget er der vel ikke nogen grund til at have den med!? Hvilken type variabel skal det være?
Jamen ArticleId er bare en variabel fra mine øvrige asp-data, som skal indsættes i et tilhørende felt i databasen, fuldstændigt ligesom f.eks. Antal1 eller Antal2. Alle variablernes værdier skal lægges ned i tilhørende felter i databasen. Den eneste, der genereres af databasen er OrderId - som unik numerisk nøgle. Alle de andre felter skal være alfanumeriske memo-felter (med \"ubegrænset\" længde).
Nå okay - så ArticleId er altså noget som brugeren angiver!!!???
Yes - alle data, som ligger i variablerne kommer fra \"samme side\" som den du skriver kode til. Du skal kun skrive koden, der \"sætter data ind\" i databasen. Resten har jeg selv lavet :0)
Okay - here goes: sql = \"INSERT INTO tablename (TimeNow, ArticleId, LevId, CookieFirma, CokkieAtt, CookieAdresse1, CookieAdresse2, CookiePostnr, CookieBynavn, CookieTelefon, CookiEmail, Antal1, Antal2, Antal3, Antal4, Kupon1, Kupon2, Kupon3, Kupon4) VALUES (\"&\"\'\"&request.form(\"time\")&\"\', \'\"&request.form(\"ArticleId\")&\"\', \'\"&request.form(\"LevId\")&\"\', \'\"&request.form(\"CookieFirma\")&\"\', \'\"&request.form(\"CookieAtt\")&\"\', \'\"&request.form(\"CookieAdresse1\")&\"\', \'\"&request.form(\"CookieAdresse2\")&\"\', \'\"&request.form(\"CookiePostnr\")&\"\', \'\"&request.form(\"CookieBynavn\")&\"\', \'\"&request.form(\"CookieTelefon\")&\"\', \'\"&request.form(\"CookiEmail\")&\"\', \'\"&request.form(\"Antal1\")&\"\', \'\"&request.form(\"Antal2\")&\"\', \'\"&request.form(\"Antal3\")&\"\', \'\"&request.form(\"Antal4\")&\"\', \'\"&request.form(\"kupon1\")&\"\', \'\"&request.form(\"kupon2\")&\"\', \'\"&request.form(\"kupon3\")&\"\', \'\"&request.form(\"kupon4\")&\"\')\" dbConn.Execute(sql) dbConn.Close Set dbConn = Nothing Response.redirect(\"minfil.asp\")
Jeg går ud fra at det kun er selve din insert-statement du ville have lavet!
Hovsa - overså lige det med de 1000! Hvis det skal med så skal du lige lave et tjek på dit ID-felt først: <% Dim rs, sql, sql1 Set dbConn = Server.CreateObject(\"ADODB.Connection\") dbConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"/_private/Orders.mdb\") Set rs = Server.createobject(\"ADODB.Recordset\") rs.open \"SELECT * FROM tablename ORDER BY OrderId ASC\", dbConn, 1, 3 If rs(\"OrderId\") = \"1000\" Then sql = \"DELETE * FROM tablename WHERE OrderId = 1 ORDER BY OrderId ASC\" dbConn.Execute(sql) sql1 = \"INSERT INTO.......\" dbConn.Execute(sql1) response.redirect(\"minfil.asp\") Else sql1 = \"INSERT INTO.......\" dbConn.Execute(sql1) response.redirect(\"minfil.asp\") End if %>
Med hensyn til datoen kan du bare sige: INSERT INTO tablename () VALUES (\"&\"\'\"&date&\"\', \'\"&...)\" isetdet for request.form(\"TimeNow\")
Så uanset havd bliver din INSERT-statement følgende: sql = \"INSERT INTO tablename (TimeNow, ArticleId, LevId, CookieFirma, CokkieAtt, CookieAdresse1, CookieAdresse2, CookiePostnr, CookieBynavn, CookieTelefon, CookiEmail, Antal1, Antal2, Antal3, Antal4, Kupon1, Kupon2, Kupon3, Kupon4) VALUES (\"&\"\'\"&date&\"\', \'\"&request.form(\"ArticleId\")&\"\', \'\"&request.form(\"LevId\")&\"\', \'\"&request.form(\"CookieFirma\")&\"\', \'\"&request.form(\"CookieAtt\")&\"\', \'\"&request.form(\"CookieAdresse1\")&\"\', \'\"&request.form(\"CookieAdresse2\")&\"\', \'\"&request.form(\"CookiePostnr\")&\"\', \'\"&request.form(\"CookieBynavn\")&\"\', \'\"&request.form(\"CookieTelefon\")&\"\', \'\"&request.form(\"CookiEmail\")&\"\', \'\"&request.form(\"Antal1\")&\"\', \'\"&request.form(\"Antal2\")&\"\', \'\"&request.form(\"Antal3\")&\"\', \'\"&request.form(\"Antal4\")&\"\', \'\"&request.form(\"kupon1\")&\"\', \'\"&request.form(\"kupon2\")&\"\', \'\"&request.form(\"kupon3\")&\"\', \'\"&request.form(\"kupon4\")&\"\')\" dbConn.Execute(sql)
Kan du ikke stykke det sammen til et helt stykke kode? - Jeg forstår det ikke selv :0)
<% Dim rs, sql, sql1 Set dbConn = Server.CreateObject(\"ADODB.Connection\") dbConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"/_private/Orders.mdb\") Set rs = Server.createobject(\"ADODB.Recordset\") rs.open \"SELECT * FROM tablename ORDER BY OrderId ASC\", dbConn, 1, 3 If rs(\"OrderId\") = \"1000\" Then sql = \"DELETE * FROM tablename WHERE OrderId = 1 ORDER BY OrderId ASC\" dbConn.Execute(sql) sql1 = \"INSERT INTO tablename (TimeNow, ArticleId, LevId, CookieFirma, CokkieAtt, CookieAdresse1, CookieAdresse2, CookiePostnr, CookieBynavn, CookieTelefon, CookiEmail, Antal1, Antal2, Antal3, Antal4, Kupon1, Kupon2, Kupon3, Kupon4) VALUES (\"&\"\'\"&date&\"\', \'\"&request.form(\"ArticleId\")&\"\', \'\"&request.form(\"LevId\")&\"\', \'\"&request.form(\"CookieFirma\")&\"\', \'\"&request.form(\"CookieAtt\")&\"\', \'\"&request.form(\"CookieAdresse1\")&\"\', \'\"&request.form(\"CookieAdresse2\")&\"\', \'\"&request.form(\"CookiePostnr\")&\"\', \'\"&request.form(\"CookieBynavn\")&\"\', \'\"&request.form(\"CookieTelefon\")&\"\', \'\"&request.form(\"CookiEmail\")&\"\', \'\"&request.form(\"Antal1\")&\"\', \'\"&request.form(\"Antal2\")&\"\', \'\"&request.form(\"Antal3\")&\"\', \'\"&request.form(\"Antal4\")&\"\', \'\"&request.form(\"kupon1\")&\"\', \'\"&request.form(\"kupon2\")&\"\', \'\"&request.form(\"kupon3\")&\"\', \'\"&request.form(\"kupon4\")&\"\')\" dbConn.Execute(sql1) response.redirect(\"minfil.asp\") Else sql1 = \"INSERT INTO tablename (TimeNow, ArticleId, LevId, CookieFirma, CokkieAtt, CookieAdresse1, CookieAdresse2, CookiePostnr, CookieBynavn, CookieTelefon, CookiEmail, Antal1, Antal2, Antal3, Antal4, Kupon1, Kupon2, Kupon3, Kupon4) VALUES (\"&\"\'\"&date&\"\', \'\"&request.form(\"ArticleId\")&\"\', \'\"&request.form(\"LevId\")&\"\', \'\"&request.form(\"CookieFirma\")&\"\', \'\"&request.form(\"CookieAtt\")&\"\', \'\"&request.form(\"CookieAdresse1\")&\"\', \'\"&request.form(\"CookieAdresse2\")&\"\', \'\"&request.form(\"CookiePostnr\")&\"\', \'\"&request.form(\"CookieBynavn\")&\"\', \'\"&request.form(\"CookieTelefon\")&\"\', \'\"&request.form(\"CookiEmail\")&\"\', \'\"&request.form(\"Antal1\")&\"\', \'\"&request.form(\"Antal2\")&\"\', \'\"&request.form(\"Antal3\")&\"\', \'\"&request.form(\"Antal4\")&\"\', \'\"&request.form(\"kupon1\")&\"\', \'\"&request.form(\"kupon2\")&\"\', \'\"&request.form(\"kupon3\")&\"\', \'\"&request.form(\"kupon4\")&\"\')\" dbConn.Execute(sql1) response.redirect(\"minfil.asp\") response.redirect(\"minfil.asp\") End if %> Sådan du! ;o)
Okay - tester det lige. Iøvrigt - lad os nu sige, at der er 1000 poster i databasen, slettes den ældste så altid først? Altså hver gang, der skrives en ny?
Ja - det skulle den gerne gøre....i hvert fald set ud fra at den post med id=1 er den der er lagt først i tabellen og dermed er den ældste! Du skal lige være opmærksom på at der hvor der står \"tablename\" i sql-sætningen skal det erstattes med navnet på din tabel og IKKE navnet på din database!
Det ser ud til at virke, med jeg har problemer. Hvis der er æøå i data kommer der en fejl: Invalid character Hvordan retter man det? Jeg har også problemer, hvis jeg sætter \" tegn i formularens felter. Hvordan sikres det, at ALT bliver smidt ned i felterne - ligegyldigt hvordan det ser ud?
Hmmm - det undrer mig sq! Har du defineret dine felter som notat-felter???
Undskyld - jeg har nu løst problemerne, lavet databasen, og alt fungerer efter hensigten. Det var kun et spørgsmål om at sætte de rigtige valideringsregler på formens felter. Du har løst opgaven som forventet. Tusind tak for hjælpen :0)
Og så kun til de 60 point???? ;o) Synes jeg kunne se du lovede wof op til 200!! *GG* Ej - det er okay....mener ikke det var så stort et problem at løse, så det retfærdiggjorde hele 200 point! ;o) Er glad for du kunne bruge løsningen!
Kurser inden for grundlæggende programmering