konto usunięte

Temat: formularz wprowadzania danych

hey, takie pytanko:

formularz do wprowadzania danych potrzebuje zrobić, który nie będzie od razu tych danych wprowadzał tylko trzeba będzie nacisnąć przycisk (akceptuj) i wtedy dopiero dane dopisane zostaną do tabeli.

może jest jakieś łatwe rozwiązanie na to?

dzięki z góry
Paweł D.

Paweł D. Programista Analityk
- Firmowe Bazy
Danych

Temat: formularz wprowadzania danych

Prosty to trudno powiedzieć.
Proponował bym jeden z dwóch sposobów.

1. Utworzyć tabele tymczasową w której trzymasz dane do dodania.
Tą tabele podpinasz pod formularz i jak przy zwykłej wyświetlasz pola.
Tworzysz kwerendę dodającą dane z tabeli tymczasowej do docelowej.
No i w formularzu wykonujesz z kreatora przycisk uruchamiający kwerendę i to wszystko :]

2. Trochę trudniejszy i wymagający podłubania w VBA
W kodzie vba generujesz dynamicznie INSERT'a który dodaje dane do tabeli głównej dane z pól formularza. Trochę trudniejsze aczkolwiek daje więcej możliwości.

Pozdrawiam
Paweł
Wojciech Sobala

Wojciech Sobala Redaktor
statystyczny,
biostatystyk,
Instytut Medycyny
Pr...

Temat: formularz wprowadzania danych

Jednym ze zdarzeń dla formularza jest BeforeUpdate.

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.NewRecord then
If MsgBox("Insert new record here?", _
vbOKCancel) = vbCancel Then
Cancel = True
End If
End If
End Sub

Powyższy kod spowoduje, że zadane zostanie pytanie przed zapisaniem nowego rekordu.

konto usunięte

Temat: formularz wprowadzania danych

begin transaction
....
....
....
IF ......
COMMIT
ELSE
ROLBACK

http://bytes.com/topic/access/insights/677490-ado-tran...
http://bytes.com/topic/access/insights/671094-dao-tran...
Jacek G.

Jacek G. Freelancer

Temat: formularz wprowadzania danych

Peter Crouch:
hey, takie pytanko:

formularz do wprowadzania danych potrzebuje zrobić, który nie będzie od razu tych danych wprowadzał tylko trzeba będzie nacisnąć przycisk (akceptuj) i wtedy dopiero dane dopisane zostaną do tabeli.

może jest jakieś łatwe rozwiązanie na to?

dzięki z góry

Witam,
Najlepiej jest utworzyć formularz z polami tekstowymi niezwiązanymi, następnie na formularzu utworzyć przycisk ze zdarzeniem przy kliknięciu. Za pomocą konstruktora kodów wprowadzić kod vba:
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("nazwa_tabeli")
With rst
rst.AddNew
!nazwa_pola_w_tabeli = Me![nazwa_pola_z_formularza]
rst.Update
.Close
End With
Monika M.

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

Temat: formularz wprowadzania danych

Jacek G.:
Najlepiej jest utworzyć formularz z polami tekstowymi niezwiązanymi, następnie na formularzu utworzyć przycisk ze zdarzeniem przy kliknięciu. Za pomocą konstruktora kodów wprowadzić kod vba:

Podtrzymuję powyższe - za Kolegą.
Tj. formularz do wprowadzania danych, gdzie mamy przycisk [OK] - zatwierdzający wprowadzenie (kod do zdarzenia "Przy kliknięciu" - poniżej) i zamykający formularz dodawania rekordu, przycisk [Anuluj] - zamyka formularz i nic oprócz tego nie wykonuje.
Ewentualnie dodatkowy przycisk - [Dodaj i nowy], aby nie zamykać formularza, a tylko wyczyścić pola z wartości i ustawić od razu kursor w pierwszym polu na formularzu.

A do samego dodawania rekordu, oprócz użycia rekordsetu można się posłużyć poleceniem SQL, np.:

Private Sub cmdOK_Click()
On Error GoTo ErrorHandler
Dim strSQL As String
Dim objKontrolka As Control

'Utworzenie polecenia SQL wstawiającego rekord według
'wypełnionych pól. Należy pamiętać, że wartości tekstowe
'muszą być otoczone pojedynczymi apostrofami.
strSQL = "INSERT INTO Pracownicy(Imie, Nazwisko) VALUES('" & _
txtImie & "','" & _
txtNazwisko & "');"

With DoCmd
'Wyłączenie komunikatów (dołączanie rekordu).
.SetWarnings WarningsOn:=False
'Wykonanie polecenia SQL.
.RunSQL sqlstatement:=strSQL
'Włączenie komunikatów.
.SetWarnings WarningsOn:=True
End With

'Na koniec należy wyczyścić wpisy pól - tutaj tekstowych.
'Dla każdej kontrolki w formularzu...
For Each objKontrolka In Me.Controls
'Jeśli typ kontrolki, to pole tekstowe, to...
If objKontrolka.ControlType = acTextBox Then
'Usuwamy wartość z pola tekstowego.
objKontrolka.Value = ""
End If
Next objKontrolka

'Jeśli to ma być prawdziwy formularz dodawania,
'taki z przyciskiem [OK] i [Anuluj], to powinniśmy go zamknąć.
DoCmd.Close ObjectType:=acForm, ObjectName:=Me.Name, Save:=acSaveNo

'LUB
'Przejść do dodawania nowego - w tym celu można umieścić dodatkowy
'przycisk, np. [Dodaj i nowy], po kliknięciu którego formularz
'nie będzie zamykany, a tylko kursor przejdzie do pierwszego
'pola w formularzu.

Exit Sub

'Podstawowa obsługa błędów - do rozbudowania.
ErrorHandler:
DoCmd.SetWarnings WarningsOn:=True
MsgBox Prompt:="Błąd nr " & Err.Number & vbCrLf & _
"Opis: " & Err.Description

End Sub
Monika M. edytował(a) ten post dnia 27.06.10 o godzinie 02:50
Piotr Henke

Piotr Henke specjalista, Zakład
Opel Polska w
Gliwicach

Temat: formularz wprowadzania danych

Bardzo fajny kawałek kodu...
Czy istnieje też możliwość drukowania tekstu bezpośrednio z poziomu VBA. Tekstem byłyby wartości pól w formularzu.. Myślę, że bez problemu można otrzymać wydruk korzystając z raportów ale chciałbym pominąć raport i drukować "prosto" z vba. Czy jest to możliwe?
Monika M.

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

Temat: formularz wprowadzania danych

Piotr Henke:
Czy istnieje też możliwość drukowania tekstu bezpośrednio z poziomu VBA. Tekstem byłyby wartości pól w formularzu.. Myślę, że bez problemu można otrzymać wydruk korzystając z raportów ale chciałbym pominąć raport i drukować "prosto" z vba. Czy jest to możliwe?

Hm, ale po co?
Czemu miałoby to służyć, bo nie rozumiem?
Można sobie tworzyć plik tekstowy i go drukować z poziomu VBA, tylko po co takie kombinacje?
Piotr Henke

Piotr Henke specjalista, Zakład
Opel Polska w
Gliwicach

Temat: formularz wprowadzania danych

Mam drukarke,(generic/textonly)która drukuje mi etykiety. Działa ona w ten sposób, że do druku należy wysłać cały kod (kilka wierszy tekstu
czytelnego dla drukarki) w którym zawarty jest tekst właściwy dla etykiety . Udaje mi się to przy pomocy pliku txt tak jak wcześniej sugerowałaś. Również można zrobić wydruk zaznaczając zakres do druku w excel-u . Drukowanie bezpośrednio z VBA wydawało mi się mniejszą kombinacją w porównaniu z powyższymi metodami.
Dodam jeszcze że wartości na etykiecie zmieniają się w zależności od wartości formantów w formularzu. Cały ten kod dla drukarki
muszę najpierw złożyć w VBA.Piotr Henke edytował(a) ten post dnia 08.11.10 o godzinie 20:41
Monika M.

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

Temat: formularz wprowadzania danych

Piotr Henke:
Mam drukarke,(generic/textonly)która drukuje mi etykiety. Działa ona w ten sposób, że do druku należy wysłać cały kod (kilka wierszy tekstu czytelnego dla drukarki) w którym zawarty jest tekst
właściwy dla etykiety . Udaje mi się to przy pomocy pliku txt tak
jak wcześniej sugerowałaś.
[...] Drukowanie bezpośrednio z VBA wydawało mi się mniejszą
kombinacją w porównaniu z powyższymi metodami.

Tak na logikę programisty: nie da się "drukować bezpośrednio z VBA" bez określenia urządzenia wyjściowego. W programowaniu mówi się o wyprowadzaniu wyniku, np. na monitor albo na drukarkę.

W tym przypadku jest to również urządzenie zewnętrzne - drukarka.
Jeśli chcielibyśmy drukować do tego urządzenia, to trzeba by mieć do niego bezpośredni dostęp, np. poprzez jakąś bibliotekę dostępną z poziomu VBA, dzięki której byłoby to możliwe - dostęp do metod i właściwości.

Sądzę jednak, że skoro można przesyłać te dane do wydruku do urządzenia przez plik tekstowy, to jest to najłatwiejszy i najbardziej dostępny sposób. Być może u producenta należałoby się zapytać, czy istnieje jakaś możliwość bezpośredniego przekazywania danych do wydruku.
Uzyskanie bibliotek do takich urządzeń zazwyczaj wiąże się z prawami licencyjnymi, np. z ich wykupem itd.
Niemniej zawsze można porozmawiać na ten temat, np. z odpowiednim serwisem, poszperać w sieci, czy istnieje jakiś dostęp programowy do urządzenia.
Być może wystarczy po prostu wykorzystać sterownik drukarki, jakieś jego ustawienia.Monika M. edytował(a) ten post dnia 09.11.10 o godzinie 00:03

Temat: formularz wprowadzania danych

hmm
wszystko to bardzo ciekawe pomysły
ale skoro już jesteśmy w accesie to idźmy za ciosem - może z tendencją spadkową, ale po jedynej słusznej drodze.

ktoś kiedyć pozwolił do accesowych przyciskó dodawać akcje.
do tabeli którą chcesz uzupełnić tworzysz formularz. we właściwościach (nie powiem z głowy gdzie) ustawiasz na "nowy" i na dole dajesz dwa przyciski - dodaj i anuluj.
pod dodaj podstawiasz akcje "dodaj rekord i zapisz" pod anuluj "zamknij" - gwaracja że nie doda bez kliknięcia.
poza tym możesz pola zrobić na kombi i przy wpisywaniu samo ci uzupełni jeśłi wcześniej podawałeś w tabali takie imie, nazwisko, adres, itp.

oczywiście to pomysł miętki i wogóle, ale każdy sobie może wyklikać.
Krzysztof Gramacki

Krzysztof Gramacki Supply Chain
Specialist, Wavin
Polska S.A.

Temat: formularz wprowadzania danych

Korzystając z tej linijki kodu:

Monika M.:

strSQL = "INSERT INTO Pracownicy(Imie, Nazwisko) VALUES('" & _
txtImie & "','" & _
txtNazwisko & "');"


Chciałbym dowiedzieć się jak powinien wyglądać kod, który dopisywałby do tabeli dane pochodzące formularza, z pola kombii, które to pole pobiera dane z dwóch różnych tabel.

oto mój nie działający kod:

strSQL = "INSERT INTO Wypożyczenia(Wypożyczający, Narzedzie) VALUES('" & _
Module1.usrNazwisko & "'," & Me.Kombi11.Value & ");"
Monika M.

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

Temat: formularz wprowadzania danych

Krzysztof Gramacki:
oto mój nie działający kod:

strSQL = "INSERT INTO Wypożyczenia(Wypożyczający, Narzedzie) VALUES('" & _
Module1.usrNazwisko & "'," & Me.Kombi11.Value & ");"
Dlaczego próbuje Pan pobierać nazwisko z modułu?!
W formularzu powinno być pole zawierające to nazwisko i odwołanie do niego w kodzie po nazwie pola.
Jaki komunikat otrzymuje Pan w tym niedziałającym kodzie?
Poza tym, jeśli wstawiał Pan pole kombi przy użyciu kreatora, to domyślnie polem związanym jest jakieś pole ID, Nr itp.

Proszę nie używać polskich znaków w nazwach pól, bo to potem powoduje różne komplikacje w kodzie VBA, jak i w obiektach Accessa, np. pole "Wartość" zamieniane jest automatycznie przez Accessa na "Value". Np. użycie pliku bazy, gdzie występują polskie znaki na polskim MS Office w środowisku angielskiego Windows powoduje często błąd uruchomienia kodu VBA, a objawia się to komunikatem, w ogóle nie związanym z przyczyną błędu.

Temat: formularz wprowadzania danych

Monika M.:
objawia się to komunikatem, w ogóle nie związanym z przyczyną błędu.

To się zdarza zdecydowanie zbyt często :)

Następna dyskusja:

Formatowanie wiersza Formul...




Wyślij zaproszenie do