03. november 2006 - 22:26Der er
40 kommentarer og 2 løsninger
Gem flere records i db (loop)
Jeg er lidt lost i, hvordan man tilføjer 20 forskellige records på samme tid til en Access database.
Der er 20 <input> felter der hver især har en dato som name, eks. 22-12-2006. Problemet er at disse datoer er blevet genereret dynamisk. Der er dog et mønster, da datoerne er lig med alle hverdage-datoer i en 4 ugers periode.
for each navn in request.form if isdate(request.form(navn)) then sql = "insert into tabel (kolonnenavn1) Values('"&request.form(navn)&"') conn.execute(sql) end if next
Disse navne-datoer kører så over en 4 ugers periode hvor jeg har både start- og slutugenummeret i variabler...det er bare det med at springe weekend-dage over der er det egentlige problem.
Formen indeholder iøvrigt flere input-elementer (4-5 stk), dog er de hidden og kommer efter de 20 input-datofelter.
kan godt se pkt. 2, men så har jeg jo 2 <input> felter til hver af de 20 linjer..hvordan kan jeg adskile dem så jeg både kan hive datoen ud samt det tekst man egentlig skal skrive i feltet?
Jeg forstår godt hvordan den submitter osv. Men i og med, at jeg skal gemme både dato+værdien af indtastningen i en database, så kan jeg ikke indsætte eks. d22-12-2006 i et datofelt i databasen. Ergo må "d" tegnet fjernes inden insert. Kan man så bare skrive:
for each navn in request.form if isdate(request.form(navn)) then
nytnavn = Replace(navn, "d", "") sql = "insert into tabel (dato, beskrivelse) Values('" & nytnavn & "', '" & request.form(navn) & "') conn.execute(sql) end if next
for each navn in request.form dato = replace(request.form(navn)) if IsDate(dato) then sql = "insert into tabel (dato, beskrivelse) Values('" & dato & "', '" & request.form(navn) & "') conn.execute(sql) end if next
Men er feltet "dato" i din database, ikke af typen dato? Som det er nu i din SQL streng, er det af typen "tekst"..
for each navn in request.form dato = replace(request.form(navn), "d", "") if IsDate(dato) then sql = "insert into tabel (dato, beskrivelse) Values('" & dato & "', '" & request.form(navn) & "') conn.execute(sql) end if next
Men er feltet "dato" i din database, ikke af typen dato? Som det er nu i din SQL streng, er det af typen "tekst"..
Rettelse igen! :-) Det er jo name-attributten der indeholder "d22-10-2006".. Derfor er det "navn" der skal replaces, og ikke request.form(navn)
Så skal du fjerne "d", inden du sammenligner:
for each navn in request.form dato = replace(navn, "d", "") if IsDate(dato) then sql = "insert into tabel (dato, beskrivelse) Values('" & dato & "', '" & request.form(navn) & "') conn.execute(sql) end if next
Men er feltet "dato" i din database, ikke af typen dato? Som det er nu i din SQL streng, er det af typen "tekst"..
Når man laver en "for each element in samling", bliver de ikke sorteret.. De bliver aflæst i den rækkefølge de bliver sendt..
Dvs, oppe fra og ned (går jeg ud fra)..
Hvis de skal sorteres, skal du - lave en for-each der henter alle felterne - sorterer den nye samling - lave en loop (for-next eller for-each) der gemme værdierne i databasen
hm...jeg kan godt nok ikke få udskrevet noget som helst efgter isdato-funktionen bliver kaldt.....kan fint udskrive alle inputfelterne før den linje...men den genkender tilsyneladende ikke feltnavnene som datoer??
ok så mangler jeg bare den skide dato. har lavet access databasen i en dansk access-version og databasen ligger på concor.dk's server...er det noget med en session lcid?
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.