» Poradna » Programy

MS Access - aktualizace combo boxu

 | 

Zdravím,
potřebuju poradi jak zaktualizovat záznamy v combo boxu.
Zapisuju do formuláře nový záznam a jedno pole vybírám ze vztažené tbl v combo boxu. Vlastnost omezit na seznam je ano. Když vložím záznam, který v seznamu není, spouští se procedura (NotInList) pomocí které přidám nový záznam do vztažené tbl. To vše mi zatím funguje.
Nevím ale jak dosáhnout toho, aby se mi po ukončení procedury NotInList seznam v combo boxu zaktualizoval a já ten nový záznam ve vztažené tabulce mohl použít.
Myslím že tam někam budu muset strčit příkaz "Requery". Nevím ale vůbec kam a jak.
Když bude potřeba, tak tu databázi někam vystavím.
Díky za radu.

Mohlo by vás také zajímat

Odpovědi na otázku

 |   | 

Nevím, zda to vysvětlím dobře. Procedura "NotInList" combo boxu ve formu "F" by asi měla jen upozornit (MsgBox), jak přidat nový záznam (Nový záznam = DblClick). Následně po DblClick by se měl otevřít další form "F1" v režimu "nový záznam". V proceduře "DblClick" krom jiného vložíš nakonec i příkaz "Me![MojeID].Requery", přičemž pole [MojeID] je v relaci propojené mezi formuláři "F" a "F1".

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | 

Tak nějak to mám, ten příkaz "Me![MojeID].Requery" jsem tam taky už zkoušel, ale pořád mi to nejde. Opisoval jsem to z knížky, ale pořád nic. Možná to bude blbost, ale já na to asi nepřijdu. Někde dělám pořád chybu
Helpni mi s tím prosím, buď to někam pvěsím nebo ti to pošlu. Má to jen 100 kB.
Předem díky.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

Zkusím. Pole se seznamem (combo box) má zdroj ovl. prvku= pole formuláře "F" a zdroj řádku= dotaz na formulář "F1". Relace = Formulář "F" pole "MojeID" (číslo) --> Formulář "F1" pole "MojeID" (autonum).
Při nepřítomnosti v seznamu procedura :
Private Sub MojeID_NotInList(NewData As String, Response As Integer)
MsgBox "Nový údaj po DblClick."
Response = acDataErrContinue
End Sub
Při DblClick procedura :
Private Sub MojeID_DblClick(Cancel As Integer)
On Error GoTo Err_MojeID_DblClick
Dim XY As Long
If IsNull(Me![MojeID]) Then
Me![MojeID].Text = ""
Else
XY = Me![MojeID]
Me![MojeID] = Null
End If
DoCmd.OpenForm "Zaměstnanci", , , , , acDialog, "GotoNew"
Me![MojeID].Requery
If XY 0 Then Me![MojeID] = XY
Exit_MojeID_DblClick:
Exit Sub
Err_MojeID_DblClick:
MsgBox Err.Description
Resume Exit_MojeID_DblClick
End Sub
Doporučuji krom knížky čerpat informace také ze zdrojových databází MDZ.
Snad to bude srozumitelné. ?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

Oprava: DoCmd.OpenForm "F1", , , , , acDialog, "GotoNew"

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | 

Díky Uri. Co je to MDZ? Nějaká Microsoft zone?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

*.mdz = vzorové databáze access (šablony), měl bys je mít ve svém pc (.../Program Files/Microsoft Office/Templates/.../*.mdz)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | 

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | 

Zkuste u tohoto dropdown boxu změnit "RecordSource" property. Nejsem si jist ale mám takové tušení, že změna tohoto pole Vám provede i refresh prvků v dropdown boxu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | 

Tak to jsem uplne mimo. Co to je za vlastnost ReportSource? Zkouším se hrabat v kódu od Uriho.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | 

Record source property je vlastnost dropdown boxu. Je recordset nebo sql které definuje co se má objevit v rozbalovací nabídce když se zmáčkne rozbalovací tlačítko.

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: MS Access, Nový záznam, Combo, Procedura