Thread View: pl.comp.bazy-danych.msaccess
5 messages
5 total messages
Started by Stan
Sat, 03 Oct 2020 11:25
Pierwszy wolny rekord, edycja
Author: Stan
Date: Sat, 03 Oct 2020 11:25
Date: Sat, 03 Oct 2020 11:25
16 lines
736 bytes
736 bytes
Witam zacne grono ekspertów. Mam Tabelę1, w której Pole1 (liczba) ma w kilku rekordach tą samą wartość (na przykład 13). Formularz1 ma PoleKombi1 i pola niezwiązane "Data" i "Liczba" Po wybraniu z PolaKombi1 wartości "13", wypełnieniu pól niezwiązanych i naciśnięciu Buttona marzy mi się coś w rodzaju: CurrentDb.Execute "UPDATE Tabela1 SET (Pole2, Pole3) SELECT " ' & Me!Data & " ', ' " & Me!Liczba & " ' " - i tu chciałbym dodać warunek, że aktualizowany ma być Pierwszy rekord z wartością Pola1="13", w którym Pola2 i Pole3 są puste. Uprzejmie proszę o próbę pomocy :) Stan
Re: Pierwszy wolny rekord, edycja
Author: Stan
Date: Sun, 04 Oct 2020 09:32
Date: Sun, 04 Oct 2020 09:32
8 lines
321 bytes
321 bytes
Bardzo dziękuję za przykładowy kod, spróbuję z nim powalczyć i zrozumieć :) P.S. W Tabeli jest też pole "ID" (Autonumeracja). W 5-ciu rekordach "Pole1" ma wartość =13. Jako "Pierwszy" rozumiem jeden z tych 5-ciu rekordów: ten o najmniejszym numerze "ID".
Re: Pierwszy wolny rekord, edycja
Author: Stan
Date: Sun, 04 Oct 2020 10:27
Date: Sun, 04 Oct 2020 10:27
8 lines
385 bytes
385 bytes
Dzięki Panie Zbigniewie Twoja pomoc jak zwykle super! Kod już wstępnie przetestowałem, dodam ORDER BY i będzie działać jak chciałem. Nazewnictwo mam w rzeczywistości inne, a Pole1, Pole2 to tylko tu na forum - myślałem że będzie czytelniej, wezmę poprawkę na przyszłość. Pozdrawiam Stan
Re: Pierwszy wolny rekord, edycja
Author: Zbigniew Bratko
Date: Sun, 04 Oct 2020 12:25
Date: Sun, 04 Oct 2020 12:25
107 lines
3282 bytes
3282 bytes
This is a multi-part message in MIME format. --------------01F04F444E90179187954434 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit W dniu 03.10.2020 o 20:25, Stan pisze: > Witam zacne grono ekspertów. > Mam Tabelę1, w której Pole1 (liczba) ma w kilku rekordach tą samą wartość (na przykład 13). > > Formularz1 ma PoleKombi1 i pola niezwiązane "Data" i "Liczba" > Po wybraniu z PolaKombi1 wartości "13", wypełnieniu pól niezwiązanych i naciśnięciu Buttona marzy mi się coś w rodzaju: > > CurrentDb.Execute "UPDATE Tabela1 SET (Pole2, Pole3) SELECT " ' & Me!Data & " ', ' " & Me!Liczba & " ' " > - i tu chciałbym dodać warunek, że aktualizowany ma być Pierwszy rekord z wartością Pola1="13", w którym Pola2 i Pole3 są puste. > > Uprzejmie proszę o próbę pomocy :) > Stan > Ale co Ty rozumiesz przez pojęcie pierwszy rekord. Tak naprawdę Access nie rozróżnia pojęcia pierwszy rekord dla zestawu nieposortowanych rekordów. Z pomocy MS Access: You can use the DFirst function to return a RANDOM record from a ^^^^^^^^^^^^^^^^^^^^^^^^^^ particular field in a table or query when you simply need any value from that field. Note If you want to return the first or last record in a set of records (a domain (domain: A set of records that is defined by a table, a query, or an SQL expression. Domain aggregate functions return statistical information about a specific domain or set of records.)), you should create a query sorted as either ascending or descending and set the TopValues property to 1. From Visual Basic, you can also create an ADO Recordset object and use the MoveFirst or MoveLast method to return the first or last record in a set of records. Nie mniej jednak masz przykładowy kod, jak to zrobić: '________________________________ Private Sub btnUpdate_Click() Dim dbs As DAO.Database Dim rst As DAO.Recordset Dim sSQL As String ' czy wszystko wpisane If Len(Nz(Me!PoleKombi1, "")) = 0 Or _ Len(Nz(Me!Data, "")) = 0 Or _ Len(Nz(Me!Liczba, "")) = 0 Then MsgBox "Niepełne dane!" Exit Sub End If sSQL = "SELECT Pole2, Pole3 FROM Tabela1 WHERE " & _ "(Pole2 Is Null) AND " & _ "(Pole3 Is Null) AND " & _ "Pole1=" & Me!PoleKombi1 & ";" Set dbs = CurrentDb Set rst = dbs.OpenRecordset(sSQL, dbOpenDynaset) With rst If .EOF Or .BOF Then MsgBox "Brak rekordu!" Else .MoveFirst .Edit !Pole2 = Me!Data !Pole3 = Me!Liczba .Update End If End With rst.Close Set rst = Nothing Set dbs = Nothing End Sub -- Pozdrawiam Zbigniew Bratko --------------01F04F444E90179187954434 Content-Type: text/x-vcard; charset=utf-8; name="adminBEZTEGO.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="adminBEZTEGO.vcf" begin:vcard fn:Zbigniew Bratko n:Bratko;Zbigniew note;quoted-printable:-- Pozdrowienia BraZby www.faq.accdb.pl www.accdb.pl version:2.1 end:vcard --------------01F04F444E90179187954434--
Re: Pierwszy wolny rekord, edycja
Author: Zbigniew Bratko
Date: Sun, 04 Oct 2020 19:06
Date: Sun, 04 Oct 2020 19:06
61 lines
1892 bytes
1892 bytes
This is a multi-part message in MIME format. --------------FC23B71EEF20E68D57AB722E Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit W dniu 04.10.2020 o 18:32, Stan pisze: > Bardzo dziękuję za przykładowy kod, spróbuję z nim powalczyć i zrozumieć :) > > P.S. > W Tabeli jest też pole "ID" (Autonumeracja). > W 5-ciu rekordach "Pole1" ma wartość . Jako "Pierwszy" rozumiem jeden z tych 5-ciu rekordów: ten o najmniejszym numerze "ID". > > Dokładnie tak jak piszesz. Musisz posortować rosnąco zestaw rekordów w/m pola ID, przejść do pierwszego rekordu i zapisać dane. Tak na pierwszy rzut oka musisz zmienić zmienną sSQL na : sSQL = "SELECT Pole2, Pole3 FROM Tabela1 WHERE " & _ "(Pole2 Is Null) AND " & _ "(Pole3 Is Null) AND " & _ "(Pole1=" & Me!PoleKombi1 & ")" & _ " ORDER BY ID;" Klauzula ORDER BY nakazuje posortowanie (domyślnie rosnąco) rekordy względem pola ID. No i chyba będzie to pierwszy rekord ;-) Nie chcę być upierdliwy, ale przemyśl nazewnictwo pól w tabelach oraz formantów na formularzu. Odwoływanie się do np. pola Pole2 w formularzu, można zastąpić odwołaniem Me.txtNazwaPola (musisz nazwać tak formant tekstowy formularz), dla pola kombi np. cboTwojaNazwa zamiast PoleKombi1. Bonusem zapisu Me. jest korzystanie z podpowiedzi IntelliSense oferowanych przez MS Access -- Pozdrawiam Zbigniew Bratko --------------FC23B71EEF20E68D57AB722E Content-Type: text/x-vcard; charset=utf-8; name="adminBEZTEGO.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="adminBEZTEGO.vcf" begin:vcard fn:Zbigniew Bratko n:Bratko;Zbigniew note;quoted-printable:-- Pozdrowienia BraZby www.faq.accdb.pl www.accdb.pl version:2.1 end:vcard --------------FC23B71EEF20E68D57AB722E--
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads