Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

[Access2007] Nie chce zadziałać polecenie DoCmd.Close



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Oprogramowanie biurowe
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
sebaarhus



Dołączył: 02 Lis 2017
Posty: 1

PostWysłany: Pią Lis 03, 2017 12:15 am  OP    Temat postu: [Access2007] Nie chce zadziałać polecenie DoCmd.Close Odpowiedz z cytatem Pisownia

Witam

Problem dotyczy MS Access 2007
Sytuacja wygląda następująco:
Mam pierwszy formularz o nazwie: testowa ramka dla którego źródło rekordów to: Tbl_1_ListaProbek
oraz drugi formularz o nazwie: Frm_Nowy_Pracownik dla którego źródło rekordów to: Tbl_Pracownicy

na pierwszym formularzu jest ComboBox który zawiera listę wszystkich pracowników pobraną z tabeli Tbl_Pracownicy. Gdy wpiszę do niego nową pozycję która nie występuje w tabeli zdarzenie COmbobox_NotInList uruchamia kod który rozdziela nową pozycję na imię i nazwisko. Następnie wyświetla drugi formularz i w pole tekstowe powiązane z Nazwiskiem wpisuje nazwisko, a w drugie pole tekstowe powiązane z Imieniem wpisuje imię.
Następnie pojawia się msgbox czy dodać nową pozycję do Tbl_Pracownicy. Jak wybiorę nie to uruchamia się polecenie w celu zamknięcia drugiego formularza i przerwania wprowadzania nowej osoby w pierwszym formularzu

I problem polega na tym że wywołując to polecenie
DoCmd.Close acForm, Form_Frm_Nowy_Pracownik.Name, acSaveNo

nowy rekord i tak się dopisuje do bazy.

Początkowo przy domyślnych ustawieniach formularza zmieniany był pierwszy rekord tabeli Tbl_Pracownicy.

Obecnie przy ustawieniach:
Kod:
With Form_Frm_Nowy_Pracownik
    .AllowEdits = False
    .AllowDeletions = False
    .AllowAdditions = True
    .DataEntry = True
End With

Dopisuje się nowy rekord jako ostatni Dodałem znaczniki kodu. Zobacz: znaczniki formatujące - jak stosować.- Samolot

Cóż robię źle i jak to wykombinować, aby w momencie rezygnacji formularz drugi zamykać bez dopisywania lub modyfikowania tabeli Tbl_Pracownicy?

I na koniec, bo nie znalazłem tego w zasadach, o co chodzi z tematem postu, bo cały czas dostaję komunikat:
Tytuł wątku zawiera "VBA". Należy podać program, którego się używa! (Chodzi o te zasady: ZASADY ZAKŁADANIA WĄTKÓW w dziale Oprogramowanie biurowe - Samolot)

A tytuł chciałem dać taki:
[VBA Access2007] Nie chce zadziałać polecenie DoCmd.Close

Pozdrawiam i dzięki za odpowiedź
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
karolinavb
Site Admin


Dołączył: 25 Maj 2005
Posty: 7840

PostWysłany: Pią Lis 03, 2017 7:51 am      Temat postu: Odpowiedz z cytatem Pisownia

acSaveNo dotyczy zmian w projekcie formularza a nie aktualnie
edytowanego/wybranego rekordu

Oraz
Zacytuję przykłady podane przez Krzysztofa Naworytę (Acc MVP)
Kod:
Są trzy rozwiązania:
1. Dodawanie rekordów realizować na formularzu niezwiązanym
(dane podformularza w tabeli tymczasowej (roboczej))
Nie tworzy dziur w autonumerze !

2. zapisywanie na przycisku, zwykłe zamknięcie - odwołanie
Dim zamknij                       As Boolean
Private Sub Form_Unload(Cancel As Integer)
    On Error Resume Next
      If zamknij = False Then
        DoCmd.RunCommand acCmdUndo  'Me.Undo ****
      End If
End Sub
Private Sub clZapiszZamknij_Click()
      zamknij = True
      DoCmd.Close
End Sub
Private Sub clZapisz_Click()
      zamknij = True
      if me.dirty=true then
          me.dirty = false
      end if
End Sub
Private Sub Form_Current()
      zamknij = 0
End Sub
(działa z podformularzem jedynie w wypadku tabel z kaskadowym usuwaniem
rekordów)
Nie cofa licznika autonumeru !

3. zapisywanie tylko na rozkaz ! (także blokowane przejście do innego rekordu)
Dim zapisz                        As Boolean
Private Sub Form_BeforeUpdate(Cancel As Integer)
      If zapisz = False Then
        Cancel = -1
      End If
End Sub
Private Sub Form_Current()
      zapisz = 0
End Sub
Private Sub Form_Error(DataErr As Integer, Response As Integer)
      If DataErr = 2169 Then
        Response = acDataErrContinue
      Else
        Response = acDataErrDisplay
      End If
End Sub
Private Sub clZapisz_Click()
      zapisz = True
      Me.Dirty = False
End Sub
Ponadto np. Form_Frm_Nowy_Pracownik to nazwa klasy formualrza, a nie nazwa formularza!!!!
Pisałam na forum o tym!
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Oprogramowanie biurowe Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.22755 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |