Avatar billede kagge Nybegynder
10. september 2003 - 13:37 Der er 4 kommentarer og
1 løsning

fra formular til accessdb.

Hejsa eksperter.

Hvad er den bedste måde at lægge data fra en formular og ned i en accessdatabase, når dataene skal placeres i forskellige tabeller.

Jeg har været vant til kun at placere dataene i én tabel på denne måde:

<% option explicit %>
<!-- #include file ="adovbs.inc" -->
<%

' Forbindelse til database via ODBC, uden DSN '
Dim connectionString
connectionString ="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("xxx.mdb")
Dim forbindelse
set forbindelse = Server.CreateObject("ADODB.Connection")
forbindelse.Open(connectionString)
Dim kilde
kilde ="Logbog"

Dim recordSet
set recordSet = Server.CreateObject("ADODB.RecordSet")
recordSet.open kilde, forbindelse, adOpenDynamic, adLockOptimistic, adCmdTable

recordSet.addNew
recordSet("Dato") = Request.Form("dat")
recordSet("Initialer") = Request.Form("ini")
recordSet("Problemomr") = Request.Form("problem")
recordSet("Overskrift") = Request.Form("ove")
recordSet("Bemærkning") = Request.Form("bem")
recordSet.update

recordSet.close
forbindelse.close

set recordSet = Nothing
set forbindelse = Nothing

%>

Her åbner jeg altså den pågældende tabel og lægger dataene ind.

Nu er jeg i gang med et lidt større system hvor jeg har opbygget en database med flere tabeller med relationer til hinanden.

Jeg kunne godt tænke mig et eksempel på hvordan man bedst muligt lægger data ind i flere tabeller på en gang...

Håber i kan hjælpe
Avatar billede the_bma_man Nybegynder
10. september 2003 - 14:55 #1
Det nemmeste, når du nu er vant til at bruge recordset, er så bare at lave et recordset for hver tabel, du skal have puttet data i.

En anden løsning er at opbygge dit sql-statement "INSERT INTO ..." i en streng, og så lave en con.execute(dinstreng) direkte på databasen.
Avatar billede kagge Nybegynder
10. september 2003 - 15:32 #2
=> bma_man

Hvis jeg har følgende:

Tabel 1 (medarbejder)
navn
tlf

Tabel 2 (stilling)
navn
startdato

<INPUT TYPE="text" SIZE="5" NAME="medarbejdernavn">
<INPUT TYPE="text" SIZE="5" NAME="tlf">
<INPUT TYPE="text" SIZE="5" NAME="stillingsnavn">
<INPUT TYPE="text" SIZE="5" NAME="dato">

Hvordan vil et sql-statement se ud hvis man skulle indsætte disse 4 formularfelter i de 2 tabeller?

Hvornår bør man bruge sql-statement frem for recordset?

Håber lige du kan uddybe dit svar med ovenstående eksempel :)
Avatar billede the_bma_man Nybegynder
10. september 2003 - 15:54 #3
Hmm, hvornår man skal og ikke skal er vist en temperaments-sag. Det er hurtigst at knalde noget sql af - men er man vant til den anden måde, øger det nok overskueligheden at fortsætte med det. Bare min mening. :-)

strsql = "insert into medarbejder(navn, tlf) values('" & request.Form("medarbejdernavn") & "', '" & request.Form("tlf") & "'"
con.execute(strsql)
strsql = "insert into stilling(navn, startdato) values('" & request.Form("stillingsnavn") & "', '" & request.Form("dato") & "'"
con.execute(strsql)

Her er forudsat, at alle felterne i databasen er strenge - ellers skal der fjernes et per 'er
Avatar billede kagge Nybegynder
10. september 2003 - 16:00 #4
Tusind tak for dit svar :)
Avatar billede the_bma_man Nybegynder
10. september 2003 - 16:02 #5
Derfor ikke.
Takker 4 points
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