Paweł D.

Paweł D. Programista Analityk
- Firmowe Bazy
Danych

Temat: Obsługa Komunikatów Warning, znikające dane w widoku po...

MS ACCESS 2003

Mam formularz (Widok domyślny: Formularz pojedynczy) pokazujący rekord nr.1 z polem IDGlowne=1
Formularz zawiera podformularz(Widok domyślny: Formularze ciągłe) z listą rekordów powiązanych z formularzem nadrzędnym polem IDGlowne
Źródło rekordów podformularza:
SELECT * FROM MojaTabela WHERE PoleINT in (1,2,3)

Powiedzmy że Mojatabela ma takie rekordy:
ID IDGlowne PoleINT
---+----------+----------
11 | 1 | 1
12 | 1 | 2
13 | 1 | 3
14 | 1 | 4
15 | 1 | 5

widzę więc w pofromularzu dane o ID 11,12,13

PROBLEM:
Przy zmianie w podformularzu wartości w PoleINT na inną niz 1,2,3 dany rekord mi zniknie przy przejściu na inny rekord + wyświetli głupi komunikat:
"Dane zostały dodane do bazy danych, ale nie zostaną wyświetlone w formularzu ponieważ nie spełniają kryteriów podlegającego źródła rekordów."

Jak sprawić by dane nie zniknęły lub by komunikat sie nie pojawił (albo wyświetlić swój).
Interesuje mnie rozwiązanie w VBA oraz które nie zmieni faktu że przy kolejnym otworzenie aplikacji źródło danych podformularz będzie jak powyżej.

konto usunięte

Temat: Obsługa Komunikatów Warning, znikające dane w widoku po...

Jeżeli select ograniczyłeś do wartości 1,2,3 to nie dziwne, że rekord znika

Zamiast
SELECT * FROM MojaTabela WHERE PoleINT in (1,2,3)
zostaw samo
SELECT * FROM MojaTabelaPaweł S. edytował(a) ten post dnia 21.05.11 o godzinie 20:01
Wojciech W.

Wojciech W. Kierownik IT /
Analityk IT

Temat: Obsługa Komunikatów Warning, znikające dane w widoku po...

jezeli chcesz filtrowac rekordy dla podformularza uzyj filtra, to co masz po WHERE wstaw do wlasciwosci Filter dla podformularza i jesze ustaw FilterOn=True
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: Obsługa Komunikatów Warning, znikające dane w widoku po...

Paweł Duda:
PROBLEM:
Przy zmianie w podformularzu wartości w PoleINT na inną niz 1,2,3 dany rekord mi zniknie przy przejściu na inny rekord + wyświetli głupi komunikat:
"Dane zostały dodane do bazy danych, ale nie zostaną wyświetlone w formularzu ponieważ nie spełniają kryteriów podlegającego źródła rekordów."

Skoro zmienia Pan PoleINT na wartość inną, niż 1, 2, 4, to oczywiste, że nie wyświetli tego rekordu, bo nie spełnia on warunku.
Jak sprawić by dane nie zniknęły lub by komunikat sie nie pojawił (albo wyświetlić swój).
Interesuje mnie rozwiązanie w VBA oraz które nie zmieni faktu że przy kolejnym otworzenie aplikacji źródło danych podformularz będzie jak powyżej.

No to, co właściwie miałoby się stać w przypadku zmiany w PoleInt?
Czy, mimo zmiany i ustawionego warunku rekord miałby być nadal wyświetlany?
A jaki miałby być komunikat?

Może bardziej Pan "wyłuszczy", jakiej akcji Pan oczekuje, np. po zmianie wpisu, co miałoby się wydarzyć?Monika Morawska edytował(a) ten post dnia 26.05.11 o godzinie 02:58
Paweł D.

Paweł D. Programista Analityk
- Firmowe Bazy
Danych

Temat: Obsługa Komunikatów Warning, znikające dane w widoku po...

Paweł S.:
Jeżeli select ograniczyłeś do wartości 1,2,3 to nie dziwne, że rekord znika

Zamiast
SELECT * FROM MojaTabela WHERE PoleINT in (1,2,3)
zostaw samo
SELECT * FROM MojaTabela

Chodzi o to żeby użytkownik widział ograniczone pola, świadomie ustawiony jest warunek.
Powiedzmy że jest to np. ID grupy która ma uprawnienia do danego rekordu.
Monika M.:
>...
Może bardziej Pan "wyłuszczy", jakiej akcji Pan oczekuje, np. po zmianie wpisu, co miałoby się wydarzyć?

Problem polega na tym że jeśli w takim zestawie rekordów tworzę nowy wpis i chcę np. przyznać do niego uprawnienia (wykonać wpis w poleINT) innej osobie. To rekord odrazu znika.
Co jeśli użytkownik chciał by jeszcze coś zmenić ?

Po zakmnięciu nadrzędnego formularza i ponownym otworzeniu efekt jest prawidłowy - wpisanego rekodru nie widać.
Mi chodzi o możliwość edycji tego rekordu do mementu kiedy jest otwarty formularz.Paweł Duda edytował(a) ten post dnia 09.06.11 o godzinie 10:33
Monika M.

Monika M. PROGRAMISTA VBA,
Excel, Access,
Outlook, Word -
SZKOLENIA

Temat: Obsługa Komunikatów Warning, znikające dane w widoku po...

Paweł Duda:
Problem polega na tym że jeśli w takim zestawie rekordów tworzę nowy wpis i chcę np. przyznać do niego uprawnienia (wykonać wpis w poleINT) innej osobie. To rekord odrazu znika.
Co jeśli użytkownik chciał by jeszcze coś zmenić ?

To proponuję inne podejście, tj. np. utworzenie dodatkowego formularza do dodawania nowego rekordu, który byłby wywoływany z formularza głównego.
Z tym, że najlepiej, gdyby ten formularz nie był powiązany z żadnym źródłem rekordów. Z poziomu tego formularza należałoby wykonać wszystkie niezbędne operacje, tj. np. opisane przez Pana nadawanie uprawnień, a zapis we właściwej tabeli/tabelach następowałby dopiero po kliknięciu jakiegoś przycisku (użycie SQL-a i VBA do dodania rekordu), który mógłby również zamykać formularz.

Inne rozwiązanie, to tabela tymczasowa, która przechowuje nowo dodany rekord, a nie ma jeszcze ustawionego warunku (brak wartości w odpowiednim polu). Przy następnym otworzeniu formularza głównego - makro, które przenosi wszystkie ewentualne rekordy z tabeli tymczasowej do właściwych tabel z odpowiednią wartością dla odpowiedniego pola, według której zadziała warunek.
Ale to rozwiązanie wydaje mi się bardziej skomplikowane, niż wcześniej opisane.

Edit:
Jeszcze można by było zrobić takie rozwiązanie, że dodawanie rekordu odbywałoby się w dodatkowo otwieranym formularzu w trybie dodawania, a formularz byłby powiązany z właściwą tabelą/tabelami, ale bez ustawiania warunku ograniczającego. Dopiero po kliknięciu na przycisku, który zamykałby formularz - w formularzu głównym, z którego wywoływany byłby ten formularz byłyby filtrowane rekordy.Monika M. edytował(a) ten post dnia 10.06.11 o godzinie 20:14
Paweł D.

Paweł D. Programista Analityk
- Firmowe Bazy
Danych

Temat: Obsługa Komunikatów Warning, znikające dane w widoku po...

Oba rozwiązania są jak najbardziej do wykonania, ale z pozoru błachy problem, dość mocno komplikują. Szukam raczej samej metodyki, bo jeśli podobna sytuacja pojawi mi się w różnych aplikacjach, to tworzenie za karzym razem skomplikowanego mechanizmu kosztuje mnie trochę czasu.
Może ktoś spotkał się z podobnym problemem i rozwiązał je jeśli skomplikowanei to elegancko, najlepiej prosto (mniej znanym 'trikiem') albo znalzał inne rozwiązanie podobnej sytuacji.
Michał Dziubek

Michał Dziubek Programista,
INFORM\'1

Temat: Obsługa Komunikatów Warning, znikające dane w widoku po...

Mniej znany trik to nie wiązać formularza z danymi tylko podpiąć do podformularza DAO.Recordset,

Czyli przy otwarciu formu głównej tworzysz zapytanie które cie interesuje, uwzgledniając filtr na pole łączące, pobierasz to do
recordset i wiążesz z podformularzemMichał Dziubek edytował(a) ten post dnia 21.06.11 o godzinie 17:10
Dariusz Kolasa

Dariusz Kolasa Akademia VBA

Temat: Obsługa Komunikatów Warning, znikające dane w widoku po...

zapewne moja wypowiedź Cię nie zadowoli ale nie mogę się powstrzymać. Po co robić edytowalne pole wiążące? Albo coś jest związane z rekordem głównym albo nie. Jeżeli musisz zmieniać przypisanie rekordu podrzędnego to niestety pachnie to złym projektem modelu danych...
Michał Dziubek

Michał Dziubek Programista,
INFORM\'1

Temat: Obsługa Komunikatów Warning, znikające dane w widoku po...

Niekoniecznie zły model danych, teoretycznie sytuacja taka: mam komputer jako rekord nadrzędny i listę licencji do niego przypisanych, mogę dać użytkownikowi możliwość zmiany/przeniesienia licencji z jednego komputera na drugi. Jak najbardziej zgodne z modelem danych. To już kwestia scenariusza jak rozwiążemy to za pośrednictwem interface'u aplikacji, ale jedną z możliwości jest modyfikowanie pola wiążącego obie formy.

A tak jeszcze to obaj się mylimy bo autor nie zmienia pola wiążącego...Michał Dziubek edytował(a) ten post dnia 29.06.11 o godzinie 17:53

konto usunięte

Temat: Obsługa Komunikatów Warning, znikające dane w widoku po...

a propo tego przykładu z komputerem

pod guzik podpięte akcje insert/delete/requery zestawu danych

żadnych powiązań tylko akcje na kwerendach
Paweł D.

Paweł D. Programista Analityk
- Firmowe Bazy
Danych

Temat: Obsługa Komunikatów Warning, znikające dane w widoku po...

Dla wszystkich zainteresowanych tematem.
Rozwiązanie znalzeione, działa przynajmniej dla projektów ADP, bo problem możliwe że występuje tym przypadku tabel po stronie MSSQLServera.

Rozwiązaniem, jest właściwość formularza
me.ResyncCommand
szczegóły można wyczytać w manulu
w każdym razie pomaga :]

Pozdrawiam



Wyślij zaproszenie do