Toon posts:

[access 97] Schrijfconflict

Pagina: 1
Acties:
  • 30 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb een tabel. Die bestaat uit twee velden: procedure en test.

Een procedure kan uit meerdere testen bestaan.

Dus de tabel kan er zo uitzien:
code:
1
2
3
4
Procedure Test

S11  ph
S11  ecoli

Die procedurecode moet later aanpasbaar zijn.

De procedurecode wordt maar 1 keer laten zien, in de kopgedeelte van het formulier. Zodat de procedure niet steeds herhaald wordt voor bijv 3 testen.

De test wordt in de detail gedeelte net zo vaak herhaald als er testen zijn, het formulier staat op doorlopend.

Het probleem is:

Als ik dan de procedurenaam verander, dan wordt die procedurenaam alleen verandert in de test die bovenaan staat. Op zichzelf wel logisch, maar die verandering moet dus bij alle regels worden aangepast waar de oude naam van die procedure stond.

Dus dat doe ik nu handmatig via een sql query, in VB. Deze sql query wordt uitgevoerd bij de actie 'voor bijwerken' van het tekstvak tekstvakprocedure.
code:
1
2
DoCmd.RunSQL "UPDATE PROCEDURES SET LABORATORIUMPROCEDURE = tekstvakprocedure
WHERE LABORATORIUMPROCEDURE = lijstprocedures;"

In tekstvakprocedure verander je de naam van de procedure.

In lijstprocedures staat nog de oude naam van de procedure.

Dit wordt goed uitgevoerd.

Als ik dan de focus verplaats naar de bovenste test, dan is er niks aan de hand. Maar als ik naar een andere rijtest de focus verplaats krijg ik zo'n melding van access dat er een schrijfconflict is opgetreden, dat een andere gebruiker (ik dus :) ) de record al heeft verandert. Dan kan ik nog de wijziging zo laten, ongedaan maken, enz.

Hoe voorkom ik dat access niet denkt dat iemand anders die sql query heeft uitgevoerd.

Ik heb al geprobeerd meteen na die sql query de record te saven, de queys/filters opnieuw uit te voeren.

De oude en nieuwe procedurewaardes tijdelijk in een andere tekstvak plaatsen en daarvan de veranderingen proberen door te voeren, enz. Maar het werkt toch nog niet helemaal.

Woops, is een beetje uitgebreid geworden, maar is nu tenminste duidelijk lijkt me. :)

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 09:33

Dido

heforshe

En wat is de primary key van je tabel? Je weet wel, die unieke? Voeg die eens toe, en gooi je procedure in een andere tabel... dan hoef je 'm alleen maar daar te veranderen als je de naam veranderd.

dus:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
TABEL1: test_id                  TABEL2:
    test            /-----1----procedure_id
    procedure_id--oo---/         procedure

of, als je tests ook vaker voorkomen:

      TEST                      PROCEDURE
      test_id 1\                /--1  procedure_id
      test     |                |     procedure
             |              | 
             |    TESTPROCEDURE     |
             |    tp_id    |
             |    procedure_id  oo--/
             \--oo--  test_id

In die laatste is test_id alleen nodig als je de testomschrijvingen later ook wilt kunnen aanpassen

Wat betekent mijn avatar?


  • ATS
  • Registratie: September 2001
  • Laatst online: 12-02 13:46

ATS

Idd: database normalisatie is je vriend!

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op maandag 03 juni 2002 14:57 schreef Dido het volgende:
En wat is de primary key van je tabel? Je weet wel, die unieke? Voeg die eens toe, en gooi je procedure in een andere tabel... dan hoef je 'm alleen maar daar te veranderen als je de naam veranderd.
Het lijkt me niet meer dan logisch dat de key op beide kollomen ligt :)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Tijd om iets over unieke sleutels te leren.

Database Normalisatie is de oplossing.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Dit topic is gesloten.