Avatar billede hehlers Nybegynder
18. oktober 2004 - 14:35 Der er 8 kommentarer

Indsættelse i database

Hejsa

Jeg har en Access DB med en lang række felter, som skal holdes vedlige fra en webside.

Alle input felterne i min form hedder det samme som felterne i databasen.

Er der ikke en smart måde hvorpå jeg kan indsætte data i databasen uden at jeg skal til at skrive hver eneste input felt ind i databasen?

Tror jeg kan bruge noget (request all items in form) eller noget, men ved ikke lige hvordan det skal sættes op...
Avatar billede keysersoze Ekspert
18. oktober 2004 - 14:38 #1
det kan du godt - dog på den betingelse at alle felter er af samme type. Fx hvis alt er tekst/notet eller alt er tal - bruger du en sammenblanding kan du ikke da datoer kræver brug af #, tekst/notet kræver ' og tal ikke skal have noget.

Hvis du endelig vil så skal du måske kalde dine formfelter for fx tal_dbnavn1, tekst_dbnavn2 og dato_dbnavn3 hvor du så lader det der står foran _ bestemmer typen og det efterfølgende bestemmer navnet på din kolonne... der er så bare en masse ting du ikke kan tage højde for alligevel - fx hvis du skal validere eller tjecke dine felter på nogen måde
Avatar billede hehlers Nybegynder
18. oktober 2004 - 14:47 #2
Aaahh okey...

Det skal siges at der både er mange talfelter, et datofelt også nogle tekstfelter...

Men tror så jeg skal gøre det "the hard way" ellers skal jeg også til at rette alle de felter jeg har lavet i databasen?
Avatar billede keysersoze Ekspert
18. oktober 2004 - 14:52 #3
ikke hvis du lavede mit sidste forslag - altså kaldte formfelter fx dato_kolonnenavn hvor du så gik ind og lavede en case/sætning der fortalte hvordan de forskellige felter skulle behandles;

test = dato_navn
splittest = split(test)

if splittest(0) = "dato" Then
  'behandl som dato
elseif splittest(0) = "tal" Then
  'behandl som tal
'etc
end if
Avatar billede hehlers Nybegynder
19. oktober 2004 - 10:43 #4
Soze, du må regne med at du her har med en noob at gøre. sry :)

Nu kalder jeg så alle mine formfelter med dato med dato_navn og tekst med tekst_navn. Resten er så talfelter.

Hvis jeg så eks. vil have alle datofelterne fra formen ned i dato felterne i databasen og alle tekstformfelterne ned i tekstfelterne i databasen og resten er så talformfelterne, som så skal ned i talfelterne i DB'en. Hvordan pokker kan jeg gøre det?
Avatar billede sho Nybegynder
20. oktober 2004 - 23:13 #5
Her er lidt kode, der ikke er testet, men som jeg har brugt før, så der burde virke. Det skulle kunne hjælpe dig lidt videre...


Dim item, splitform, strInsert, strValues, strSQL

strInsert = "INSERT INTO tabelnavn ("
strValues = "VALUES ("

for each item in request.form
  splitform = split(item)
  if splitform(0) = "tekst" Then
    strInsert = strInsert & splitform(1) & ", " ' Kolonnenavn
    strValues = strValues & "'" & request.form(item) & "', " ' Værdi
  elseif splitform(0) = "tal" Then
    strInsert = strInsert & splitform(1) & ", "
    strValues = strValues & request.form(item) & ", " ' Værdi
  end if
next

strInsert = strInsert & ") "
strValues = strValues & ")"
   
strSQL = strInsert & strValues


-Søren
Avatar billede hehlers Nybegynder
20. marts 2006 - 08:14 #6
Ups, beklager havde helt glemt denne.. :)

Vil i give et svar, så får i points?
Avatar billede keysersoze Ekspert
20. marts 2006 - 09:41 #7
svar.
Avatar billede sho Nybegynder
21. marts 2006 - 18:44 #8
Den har da ligget et par dage... :-)
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