Run-time error 91 VBA, když se snaží vyřešit napsat konfliktu chyba

0

Otázka

Já se na úvod s tím, že jsem nováček Access/VBA. Snažím se vytvořit sadu formulářů pro zadávání dat v MS Access pro propojený Server SQL Databáze pro záznam vegetace data. Mám formulář s třemi nevázané ovládací prvky, které poskytují hodnoty do polí pro několik záznamy v podformuláři. Konkrétně, tři ovládací prvky v hlavním formuláři jsou Transect_OID, Data_Recorder, a Data_Observer. V podformuláři, každý Transect_OID odpovídá 30 záznamy odpovídající každé z 30 lokalitách podél transektu, kde rostlinné druhy jsou zaznamenány. Přidal jsem nějaké procedury události v hlavním formuláři do autopopulate odpovídající pole v podformuláři, aby se zajistil soulad záznamů pro celý transektu. Nicméně, toto nastavení mělo za následek chybu konfliktu zápisu. Po praní interwebs pro opravy, sledoval jsem na radu v řešení #5 v tomto odkazu https://www.accessrepairnrecovery.com/blog/fix-ms-access-write-conflict-error. Když jsem se přidat navrhl při aktivaci události postup, jsem si Run-time Error 91 "objekt proměnná nebo proměnná bloku nebyla nastavena." Tady je můj kód pro proceduru události:

Private Sub Form_Activate()
Dim rs As ADODB.Recordset
Set rs = Me.Recordset.Clone
rs.Open
rs.Bookmark = Me.Bookmark
DoCmd.RunCommand acCmdRefresh
Me.Bookmark = rs.Bookmark
rs.Close
Set rs = Nothing
End Sub

Private Sub Form_Deactivate()
DoCmd.RunCommand acCmdSaveRecord
End Sub

Private Sub Observer_AfterUpdate()
Me.frmLPIDetail.Form.Data_observer = Me.Observer
Me.Dirty = False
End Sub

Private Sub Recorder_AfterUpdate()
Me.frmLPIDetail.Form.Data_recorder = Me.Recorder
Me.Dirty = False
End Sub


Od zkoumání jiných Run-time error 91 stížností, vypadá to, že tato chyba se vyvolá při:

  1. odpovídající knihovna není vybrán jako referenční. V tomto případě, že by Microsoft ActiveX Data Objects 2.5 Knihovna. Ujistil jsem se, že je vybrána tato možnost.

  2. Objekt, proměnná je deklarována, ale není nastaven. Linka 3 kód by měl být tam, kde je nastavena. Nicméně, tento řádek ladicího programu stěžuje.

  3. Objekt je proměnná nastavena na hodnotu nothing. To je případ druhý-k-poslední řádek, ale moje pochopení je, že řádek vynuluje proměnná objekt

  4. Jít prohlášení v bloku. Tyto příkazy jsou nikdy volal v tomto podprogramu, takže tato příčina může být snadno vyloučit.

Jsem na rozpacích, proč se to děje. Nějakou radu by bylo velmi ocenil.

ado ms-access runtime-error
2021-11-22 17:02:23
2
1

To je chyba je to velmi jednoduché: zkuste dvakrát upravovat tentýž záznam.

Přidal jsem nějaké procedury události v hlavním formuláři do autopopulate odpovídající pole v podformuláři, k zajištění konzistence záznamy celého transektu.

Že je kód správný. Udělat a odstranit OnActive kód.

Jak jste zaslali problematický kód, nemůžeme pomoci dále.

Také použití novější ADO 6.1 knihovna.


Zkuste tuto jednodušší způsob:

Private Sub Form_Activate()

    Dim rs As ADODB.Recordset
    Dim Id As Long

    Id = Me!Id.Value
    Me.Requery

    ' Restore previous current record.
    Set rs = Me.Recordset.Clone
    rs.Find "Id = " & Id & ""
    Me.Bookmark = rs.Bookmark
    rs.Close

End Sub


Private Sub Form_Deactivate()

    DoCmd.RunCommand acCmdSaveRecord

End Sub


Private Sub Observer_AfterUpdate()

    Me!frmLPIDetail.Form!Data_observer.Value = Me!Observer.Value
    Me.Dirty = False

End Sub


Private Sub Recorder_AfterUpdate()

    Me!frmLPIDetail.Form!Data_recorder.Value = Me!Recorder.Value
    Me.Dirty = False

End Sub
2021-11-22 21:30:27

Ahoj Gustave, Díky za odpověď. Jsem upravil moje otázky se celý kód pro formulář. Nejsem si jistý, co chcete odstranit, tak, že kód je můj při aktivaci kódu.
Sean McKenzie

Díky za aktualizované verze. Zkoušel jsem to, a když to přestane Runtime Error 91 zprávy, I nyní získat Runtime 94 chyba "Neplatné použití NULL." Myslím, že to vyhodí, protože "na kliknutí" událostní proceduru pro tlačítko příkazu na jinou formu naplnit pole id. Zkoušel jsem všechno zabalila pod dva příkazy dim v, POKUD Není IsNULL / End if, který potlačil Runtime error 94, ale pak si stěžuje zápisu konfliktu znovu.
Sean McKenzie

Nejlepší odpověď

1

První zápis konfliktu:

Ukázalo se, že můj problém pramení ze skutečnosti, že jsem měl trochu datový typ pole zdroj ovládacího stolu pro tuto formu. Zdá se, že pokud trochu oblastech, které přicházejí z propojeného serveru SQL Server databáze jsou ponechány null Přístup nějak převádí je na 0s, která dělá, že psát konfliktu. V SQL jsem změnit hodnotu všechny záznamy na 0. To vyřešil napsat, konflikt problém.

Druhý Runtime Error code 91: To vyplývá ze skutečnosti, že jsem se snažil využít na práci kolem navrhl odkaz na moji původní otázku na hlavní formulář, který není zdrojem konfliktu zápisu. Když jsem přidal původní kód na podformulář a odstranil z hlavního formuláře modulu runtime error 91 šel pryč.

2021-11-22 18:28:57

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................