update twee velden mbv VBA

  • Onderwerp starter Onderwerp starter Orcaa
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Orcaa

Gebruiker
Lid geworden
1 nov 2010
Berichten
125
Heb access 2007 database met tabel "T_Plate" en met velden "Checkout_date" "Plate_Naam" en "Checkout" (is ja/nee veld ).
Verder een formulier "F_update_checkout__Plates" met textbox "Text17" en knop "Command19"

Nu wil ik in textbox naam van een plaat ingeven (bv "Plate_05" ) en dan op knop drukken en dan moet de "Checkout_date" de huidige datum worden en het vakje in veld "Checkout" aangevinkt worden

Heb nu onderstaande code, maar krijg foutmelding

Graag hulp, alvast bedankt


Code:
Private Sub Command19_Click()
If IsNull(Me!Text17) Then
MsgBox "You must input a value to PlateName"
Else
CurrentDb.Execute "UPDATE T_Plate " & _
"SET T_plate.[Checkout] = False " & _
"WHERE T_Plate.[Plate_Name] = " & Forms![F_update_checkout__Plates]![Text17] & ";"
End If
End Sub
 
Laatst bewerkt door een moderator:
Ik snap je vraag niet helemaal; een tekstveld voor Plate_Naam? Waarom niet een keuzelijst met de namen? Nu kun je een typefout maken, en dan gaat je code niet werken. En welke foutmelding krijg je? Of moeten we gaan gokken :)
 
De suggestie om een keuzelijst te gebruiken is een goede, maar ik probbeerde het eerst uit met een textveld. Ok, ik probeer het beter uit te leggen.

Dit heb ik nu en werkt voor 1 veld.

Code:
Private Sub Command19_Click()
Dim mySQL As String
mySQL = "UPDATE T_Plate SET T_Plate.Checkout = True"
mySQL = mySQL & " Where T_Plate.Plate_Name ='" & Forms![F_update_checkout__Plates]![Text17] & "'"

If IsNull(Me!Text17) Then
    MsgBox "You have to put in a PlateName"
    Else
        CurrentDb.Execute mySQL, dbFailOnError
    End If
End Sub
Deze code werkt voor 1 veld, maar nu is de bedoeling dat tegelijkertijd ook het veld "Checkout_Date" ook uit tabel "T_Plate" de datum van vandaag krijgt. En verder nog twee velden uit andere tabellen moeten tegelijk aangepast worden, maar dat is pas de volgende stap.
Is het dus mogelijk om in 1 update twee velden aan te passen en hoe krijg ik ook de datum van vandaag in veld "Checkout_Date

Alvast bedankt
 
Laatst bewerkt door een moderator:
Kwestie van er meer veldjes bij zetten:

Code:
mySQL = "UPDATE T_Plate SET Datum_Checkout = Date(), Checkout = -1 WHERE Plate_Name ='" & Me.Text17 & "'"
En zou je code willen opmaken met de CODE knop?
 
Excuses, zal er op letten.
De update werkt goed en regel is veel compacter.
Maar nu het volgende . Wil dus ook twee velden tegelijk in andere tabellen updaten. Relations_vriezer_e.JPG

Het gaat erom als je een plaat uitchecked, dan wordt ie uit een Rack gehaald en uit een vriezer. Dus bv een plaat met naam "Plate_01" wordtuit rek "Rack_01" gehaald en staat dus ook niet meer in vriezer "Freezer_01". Denk dus dat in tabel "T_Rack_Plate" , de "Plate_ID" verwijderd moet worden. Maar hoe kan ik in dezelfde Update ook in een andere tabel een veld updaten.
 
Je kunt wel een update query maken op meerdere tabellen, mits je maar een overeenkomend veld hebt. Dat heeft dan deze structuur:
Code:
UPDATE table1,table2 SET table1.col=a,table2.col2=b WHERE table1.id=table2.id;
 
Bedankt, ik ga dit proberen.
Alleen het veld dat ik wil updaten niet hetzelfde veld als in eerdere update. Toen moest veld checkout geupdate worden en nu veld PlateID, maar dit veld komt wel voor in tabel T_Plate en ook in tabel T_Rack_Plate.
 
Heb eerst geprobeerd om het veld "Plate_ID" in tabel "T_Rack_Plate" leeg te maken dmv updatequery in vb.
dit is de code:
Code:
mySQL = "UPDATE T_Rack_Plate SET Plate_ID = 0 WHERE Rack_Plate_ID =1"

If IsNull(Me!Text17) Then
    MsgBox "You have to put in a PlateName"
    Else
        CurrentDb.Execute mySQL, dbFailOnError
        
    End If
maar krijg deze foutmelding:error vb 1.JPG

Zoals ik het begrijp kan ik in de tussentabel T_Rack_Plate" het veld "Plate_ID" niet leegmaken of op 0 zetten omdat dit veld ook in tabel "T_Plate" voorkomt.
Klopt dit en kan je dus in tussentabel geen veld leegmaken.

alvast bedankt
 
Of het klopt hangt van je afhankelijkheden af. Als je <Trapsgewijs verwijderen> in de opties hebt aangezet, kan het wel.
 
Ja, maar het veld moet niet in beide tabellen leeggemaakt worden. Ik heb het niet zo goed uitgelegd. Probeer het wat te verduidelijken.
Heb een paar tabellen, hieronder tabellen met velden
Tabel: T_Plate T_Rack_Plate T_Rack
Plate_ID Rack_ID Rack_ID
Plate_Name Plate_ID Rack_Name
Checkout
Checkout_Date

Dan heb ik een query waarbij de volgende velden getoond worden.
Plate_ID Plate_Name Checkout Checkout_Date Rack_Name

Wat nu eigenlijk moet gebeuren is als er een Plaat uit een rack gehaald wordt, met bv Plate_Name "plate_01" de Checkout op Ja en de Checkout_date op vandaag wordt gezet en dat er ook deze "plate_01" niet meer in rack staat . Dus als je dan deze query runt het veld Rack_Name voor deze "plate_01' ook leeg is.

En als de plate weer in een rack gezet wordt de Checkbox van een "plate_01" weer op nee gezet wordt dan moet er ook weer een "Rack_Name" ingevuld worden.

Hoop dat ik het duidelijk genoeg verteld heb.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan