Frage

So habe ich ein Eingabeformular, dass ich eine Tabelle zu aktualisieren, mit bestimmten Bereichen Information verwenden möchten. Ich habe die ID des Datensatzes kommen automatisch in einem Textfeld. Ich habe drei Textfelder, die ich (mit Ausnahme der ID) auf einer Schaltfläche klicken, um die Tabelle hinzufügen.

Name
Date
Method

sind die Feldnamen.

As_Name
As_Date
As_Method

sind die Textbox Namen

Der Tabellenname ist POC, und die Identifikation ist POC_ID (sein ein Autowert).

So will ich nicht diese Objekte (Textfelder) auf den Tisch gebunden zu sein, denn dies ist ein wenig getrennt ist „Pop-up“ Form, die, dass die Tabelle aus einer Form kommt, und ich möchte nur die Eingabe relativ sein zum POC_ID, die bereits über die ursprüngliche Form ausgewählt ist.

Wie schreibe ich den vba dafür zu 1) überprüfen, um sicherzustellen, dass die Datensätze nicht bereits vorhanden ist .... 2) Aktualisieren Sie die Felder (siehe oben) mit Dateneingabe von den Textfeldern (siehe oben). Das möchte ich in der Lage sein zu verwenden, mit einem Button-Klick ....


EDIT:

eigentlich ist es eine Tabelle nicht zwei; Ich habe zwei Formen, die ich in der Lage sein wollen (obwohl verschiedene Informationen) Informationen an den gleichen Tisch zu senden. diese db bereits von jemandem gebaut wurden anders und weiß, ich habe deamed wurde es zu übernehmen.

Ich brauche ein zweites kleines Pop-up-Formular hinzufügen zusätzliche Informationen hinzugefügt auf neue Anforderungen zu beruhen (es gibt buchstäblich nicht, wo für mich auf dem anderen zu platzieren). Ich habe bereits getan, und verwenden einen vorgeschlagenes Objekt Ansatz, um die ersten Formen zu verweisen (von dem diese zweiten „Pop-up“ Formfedern aus) die relativen id Felder hinzuzufügen. Jetzt habe ich diese zweite kleine Pop-up-Form, die gerade gefragt drei Werte eingegeben werden (die die oben genannten).

Ich habe einfach nicht wissen, wie das Textfeld zu verknüpfen, mit einem Feld, so dass, sobald ein Benutzer in den Informationen eingibt, klickt „Speicher“ speichert es die Informationen auf den Tisch relativ zu dem tripID, die es gibt (ein erwähnt über). der einzige Weg, ich weiß, wie die Textfelder erhalten Daten in die Tabelle zu speichern ist den Builder / Assistenten zu verwenden, wenn ich einen neuen erstellen.

Ich mag lernen, wie ein Objekt zu verknüpfen (Textfeld, cmb, Liste) usw. auf einem Formular, auf eine Tabelle mit einem „On Click“ -Methode, so dass ich eine Taste speichern kann. Im Grunde genommen das ist es!

War es hilfreich?

Lösung

Immer noch nicht sicher, ob ich verstehe Ihre Situation, aber lassen Sie mich die Umrisse einer Antwort bieten. Wenn meine Umrisse nicht nahe genug ist, bitte erklären, wo ich die Irre ging.

Ihre Eltern Form, frmParent, verfügt über eine Befehlstaste (cmdMoreFields), die das Kind Form öffnet (frmChild), in dem Sie die Werte für 3 zusätzliche Felder im Datensatz aktuell angezeigten in frmParent treten wird. Nachdem der Benutzer diese Werte in frmChild (in Textfeld-Steuerelemente genannt As_Name, As_Date und As_Method) betritt, wird sie eine Befehlsschaltfläche (CmdSave) klicken, um diese Werte zu den Feldern (Name, Datum und Methode) in der Tabelle POC zu speichern und schließen frmChild. Auch frmParent enthält ein Textfeld (txtPk_field), die den Wert für den Primärschlüssel (Feld pk_field in Tabelle POC) des aktuellen Datensatz hält.

Allerdings bin ich nicht sicher, welches Feld / Kontrolle, die Sie für txtPk_field verwenden, und bezweifle, dass Wert zur Verfügung steht, wenn der die aktuelle Datensatz noch nicht gespeichert wurde. Also, ich werde diesen Code vorschlagen für die cmdMoreFields „auf Klick“ event:

If Me.Dirty Then Me.Dirty = False
DoCmd.OpenForm "frmChild"

In der "auf Klick" -Ereignis von CmdSave (auf frmChild), versuchen Sie Code ähnlich:

Dim strSql As String
strSQL = "UPDATE POC SET [Name] = """ & Me.As_Name & """, [Date] =#" _
    & Me.As_Date & "#, Method = """ & Me.As_Method & """ WHERE pk_field = " _
    & Forms!frmParent.txtPk_field & ";"
Debug.Print strSql
CurrentDb.Execute strSql, dbFailOnError
DoCmd.Close

Wenn dieser Ansatz funktioniert, sollten Sie die pk_field Wert vorbei mit OpenArgs frmChild, wie Remou vorgeschlagen.

Hinweis: Ich habe den Datentyp angenommen für Namen Text, Datum ist Datum / Uhrzeit, und Methode ist Text. Sie werden die UPDATE-Anweisung Trennzeichen für alle Felder, deren Datentypen unterscheiden sich von meiner Vermutungen ändern.

Andere Tipps

Die ÖffnenFormular- Methode DoCmd ermöglicht mehrere Argumente, einschließlich Wo und OpenArgs. Sie können die Vorteile von diesen nehmen.

Doch etwas scheint mit Ihrem Tisch Design ganz falsch zu sein, dass Sie die gleichen Informationen in zwei Tabellen und ohne angegebenen Grund halten scheinen. Haben Sie lesen http://www.r937.com/relational.html ?

Ich würde vorschlagen, dass der Entwurf, den Sie wahrscheinlich nur noch ein numerisches Feld POC_ID enthält, die ein Fremdschlüssel für die Haupttabelle ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top