Avatar billede karsten_larsen Praktikant
11. marts 2003 - 18:40 Der er 6 kommentarer og
1 løsning

antal tabeller i database

Jeg fik svar på i ( http://www.eksperten.dk/spm/327343) at det var en fordel med flere tabeller i en accessdatabase.

  Så når jeg har lidt over 100 data input pr. bruger,  og deler det op i flere tabeller.

Er følgende fremgangsmåde så den bedste/rigtige??

:-) Karsten

Se eksempel på database forbindelse til 2 tabeller:


strConnect = "*.mdb;Provider=Microsoft.Jet.OLEDB.4.0;"
  Set objConn = Server.CreateObject ("ADODB.Connection")
  objConn.Open strConnect

    Set objRecInd = Server.CreateObject("ADODB.RecordSet")
    objRecInd.Open "Tabel 1", objConn, 1, 3

    objRecInd.AddNew
    objRecInd("u11") = u11
      objRecInd("u12") = u12
    objRecInd("u13") = u13
    objRecInd.Update

    Set objRecInd = Server.CreateObject("ADODB.RecordSet")
    objRecInd.Open "Tabel2", objConn, 1, 3

    objRecInd.AddNew
    objRecInd("u21") = u21
      objRecInd("u22") = u22
    objRecInd("u23") = u23
    objRecInd.Update

objRecInd.close
set objRecInd = nothing
objConn.close
set objConn = nothing
Avatar billede burningice Nybegynder
11. marts 2003 - 19:05 #1
erm... der er vist noget galt... prøv at smut en tur på http://www.w3schools.com/sql/default.asp, der finder du det mest grundlæggende for sql-querys :)

    objRecInd.Open "SELECT * FROM [Tabel 1]", objConn, 1, 3
    objRecInd.Open "SELECT * FROM [Tabel 2]", objConn, 1, 3

Det er forresten bedst at holde navnene på sine tabeller og kulonner nede på et enkelt ord, altså Tabel1 istedet for Tabel 1
Avatar billede karsten_larsen Praktikant
11. marts 2003 - 19:15 #2
-> cyberfessor
Du har ret med det der Select etc., koden jeg satte ind var en tilfældig jeg har brugt engang. ( mere som illustration)

Det som jeg gerne vil vide, skal jeg f.eks. åbne og lukke forbindelsen to gange - er det bedst? eller kan jeg skrive til begge tabeller på engang inden jeg lukker forbindelsen.

:-) Karsten
Avatar billede burningice Nybegynder
11. marts 2003 - 19:32 #3
tja... for det første ville jeg nok ikke bruge et RecordSet men bare Execute commandoen på Connection-objectet.
For det andet åbner og lukker du ikke din forbindelse to gange. Der er kun een objConn.Open og een objConn.close.
Men mon ikke det ville være hurtigere at genbruge din objRecInd, hvis du alligevel ikke har brug for at have dem begge åbne på samme tid.

strConnect = "*.mdb;Provider=Microsoft.Jet.OLEDB.4.0;"
  Set objConn = Server.CreateObject ("ADODB.Connection")
  objConn.Open strConnect

    Set objRecInd = Server.CreateObject("ADODB.RecordSet")

    objRecInd.Open "Tabel 1", objConn, 1, 3
    objRecInd.AddNew
    objRecInd("u11") = u11
      objRecInd("u12") = u12
    objRecInd("u13") = u13
    objRecInd.Update
    objRec.Close

    objRecInd.Open "Tabel2", objConn, 1, 3
    objRecInd.AddNew
    objRecInd("u21") = u21
      objRecInd("u22") = u22
    objRecInd("u23") = u23
    objRecInd.Update

objRecInd.close
set objRecInd = nothing
objConn.close
set objConn = nothing
Avatar billede karsten_larsen Praktikant
12. marts 2003 - 08:59 #4
-> cyberfessor
"Men mon ikke det ville være hurtigere at genbruge din objRecInd, hvis du alligevel ikke har brug for at have dem begge åbne på samme tid."

Hvis jeg forstår dig ret og til det som jeg skal bruges det til

1 tabel med stamoplysninger
1 tabel med indtastede dateer ca. 100
1 tabe lmed resultat

vil det se sådan ud:

Set objRecInd = Server.CreateObject("ADODB.RecordSet")

    objRecInd.Open "stamoplysninger", objConn, 1, 3
    objRecInd.AddNew
    objRecInd("stamoplysninger_kolloneX") = u11
    "og noget mere...."
    objRecInd.Update
    objRec.Close ' det er denne sætning du mener som kan udelades?

    objRecInd.Open "dataer", objConn, 1, 3
    objRecInd.AddNew
    objRecInd("dataer_kolonneX") = u21
    "og noget mere...."
    objRecInd.Update

objRecInd.Open "resultater", objConn, 1, 3
    objRecInd.AddNew
    objRecInd("resultater_kolonneX") = u21
    "og noget mere...."
    objRecInd.Update


Vil du smide et svar bagefter?

:-) Karsten
Avatar billede burningice Nybegynder
12. marts 2003 - 09:04 #5
karsten_larsen>> nej, du skal huske at lukke recordsettet hver gang du er færdig med at bruge det... dog behøver du ikke denne linje

Set objRecInd = Server.CreateObject("ADODB.RecordSet")

tre gange, men kun en enkelt.

Ellers ser det fint nok ud, dog kan jeg ikke forstå at du ikke bruger Execute på din connection object:

objConn.Execute("INSERT INTO stamoplysninger (stamoplysninger_kolloneX) VALUES (u11)")

det er noget hurtigere
Avatar billede burningice Nybegynder
12. marts 2003 - 09:04 #6
det var det svar :)
Avatar billede karsten_larsen Praktikant
12. marts 2003 - 09:30 #7
aaarh - nu forstod jeg hvad du mente.

Mange tak for hjælpen

:-)) Karsten
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