2010-11-10 4 views
0

Je me bats avec la création de plusieurs formes dans MS Access 2007. J'ai accompli ce qui suit: J'ai patients patients, où je peux créer/éditer les dossiers des patients. Lorsque le bouton enregistrer est pressé, j'ouvre un autre formulaire, qui a pour tâche d'entrer les informations qui appartiennent à 2 tables. Les tables de cette forme sont en relation 1-1 et toutes deux utilisent une clé étrangère (patiendID de la table des patients).MS Access 2007: impossible de changer de champs après "ouverture de code" un formulaire

J'ai réussi à faire en sorte que tout fonctionne correctement - lorsque je mets à jour/enregistrer un nouveau patient, j'ai un nouveau formulaire ouvert avec un tas de résultats de laboratoire à saisir. Certains résultats appartiennent à une table et d'autres à une autre table. Le champ patientID, également visible sur ce deuxième formulaire, est défini comme il se doit. Cependant, lorsque j'essaye d'entrer n'importe quelle valeur dans n'importe quel champ sur ce formulaire - j'obtiens l'avertissement suivant sur la barre d'état: "Ce Recordset n'est pas updateable". Je pense que cela a quelque chose à voir avec le fait que j'ai effectivement ouvert 2 tables sur un seul formulaire, mais je peux me tromper.

Voici le code que j'utilise pour ouvrir 2ème forme:

Private Sub save_Click() 
    Dim m_query As String 
    m_query = "INSERT INTO labresults (patientID) VALUES (" & Me.ID & ")" 
    If Me.Dirty = True Then 
    Me.Dirty = False 
    End If 
    If DCount("patientID", "labresults", "patientID = " & Me.ID) = 0 Then 
     CurrentDb.Execute m_query, dbFailOnError 
    End If 
    m_query = "INSERT INTO par14MO (patientID) VALUES (" & Me.ID & ")" 
    If DCount("patientID", "par14MO", "patientID = " & Me.ID) = 0 Then 
     CurrentDb.Execute m_query, dbFailOnError 
    End If 

    If CurrentProject.AllForms("labresults").IsLoaded = True Then 
     Forms![labresults]![patientID] = Me.ID 
     Forms![par14MO]![patientID] = Me.ID 
    Else 
     DoCmd.OpenForm "labresults", acNormal, , "idPAcijenta = " & Me.ID, acFormEdit, acWindowNormal, Me.ID 
    End If 

End Sub 

Toutes les idées ce qui se passe ???

Thx un bouquet! Je suis encore en train de googler et d'essayer ... Je posterai mes conclusions si je parviens à arranger les choses!

+1

Ce n'est pas la manière habituelle de faire les choses dans Access. Avez-vous trouvé http://stackoverflow.com/questions/4135030/insert-a-record-into-table-in-ms-access de quelque manière utile? – Fionnuala

+0

Euh ... Je pensais que SO m'informerait quand la réponse est modifiée. Je le lis maintenant, et commenterai là. Merci beaucoup pour votre réponse. – hummingBird

Répondre

0

Il s'avère que cela ne peut vraiment pas être fait :). Fermeture de celui-ci, et en supposant que c'est une réponse. Edit: Il m'a été suggéré que ma dernière déclaration n'est pas vraie. Cependant, j'ai résolu les choses "manuellement", et tout va bien maintenant. Je vais continuer et accepter cette réponse afin de garder ma réponse à un bon niveau.

+1

Si ce que vous essayez de faire ne peut pas être fait, alors vous ne l'avez pas vraiment bien expliqué, car ce que vos questions décrivent est l'accès bog-standard. –

+0

Eh bien, je l'ai trouvé sur le site MS: si vous créez un formulaire avec des champs de plus d'une table, il est ouvert en lecture seule, car il ne peut pas être enregistré en tant qu'enregistrement. – hummingBird

+0

Il est manifestement faux qu'un formulaire avec une source de données que SELECTs de plus d'une table est automatiquement en lecture seule. Quoi que vous lisiez sur le site Web MS, vous l'avez reformulé de manière incorrecte. Le fait qu'un SELECT multi-tables soit éditable dépend entièrement de la nature de l'instruction SELECT particulière. En outre, le DISTINCTROW Jet/ACE uniquement peut souvent forcer des SELECT non modifiables dans un état modifiable. –

Questions connexes