Thread View: pl.comp.bazy-danych.msaccess
5 messages
5 total messages
Started by Stan
Mon, 23 Oct 2017 06:31
Kwerenda - wybór zakresu rekordów na podstawie jednego ID
Author: Stan
Date: Mon, 23 Oct 2017 06:31
Date: Mon, 23 Oct 2017 06:31
13 lines
2241 bytes
2241 bytes
Z góry przepraszam, bo nie wiem nawet jaki nadać właściwy tytuł wątkowi. Problem: Mam w Tabeli między innymi dwie kolumny: Numer_Bloczka i Numer_Odcinka. Numer_Odcinka jest liczbą zawsze 7-cyfrową, która nie powtarza się w całej Tabeli. Dla każdego Numeru_Bloczka przypisanych jest 10 kolejnych Numerów_Odcinka. Chciałbym zbudować kwerendę wybierającą w której: Podając jeden dowolny Numer_Odcinka (nie znając przy tym wartości Numeru_Bloczka), kwerenda zwróci mi wszystkie Numery_Odcinka przypisane do Numeru_Bloczka, w którym występuje podany Numer_Odcinka. Czyli np.: Podam Numer_Odcinka: 1000245 (odcinek przypisany do bloczka nr 82 - o czym w tym momencie nie wiem. W odpowiedzi otrzymam wszystkie rekordy z Numer_Bloczka = 82 czyli 10 Numerów_Odcinka o wartościach 1000241-1000250
Re: Kwerenda - wybór zakresu rekordów na podstawie jednego ID
Author: LeszekN
Date: Mon, 23 Oct 2017 10:50
Date: Mon, 23 Oct 2017 10:50
60 lines
2986 bytes
2986 bytes
Nie wiem czy dobrze zrozumiałem ;)
Moduł main
Option Compare Database
Option Explicit
Global NrBl As Long
Public Function GetNrBl() As Long
GetNrBl = NrBl
End Function
Moduł formularza do wyszukiwania:
Private Sub cmSzukaj_Click()
Dim Db As Database
Dim rs As Recordset
Dim rsB As Recordset
Dim sPA As String
Dim sBl As String
Dim NrOdcinka As Long
Dim NrBloczka As Long
Set Db = DBEngine(0)(0)
NrOdcinka = Me.TxTNrOdcinka
sPA = "SELECT Tabela1.Numer_Bloczka, Tabela1.Numer_Odcinka FROM Tabela1 WHERE (((Tabela1.Numer_Odcinka)=" & NrOdcinka & "));"
Set rs = Db.OpenRecordset(sPA)
sBl = "SELECT Tabela1.Numer_Bloczka, Tabela1.Numer_Odcinka FROM Tabela1 WHERE (((Tabela1.Numer_Bloczka)=" & rs!Numer_Bloczka & "));"
Set rsB = Db.OpenRecordset(sBl)
'w recordsecie masz gotowe dane
'możesz je wyświetlić np w MsgBoxie lub formularzu
'Przykład:
'MSGBOX oraz formularz
Me.numery = "" 'Pole textowe
While Not rsB.EOF
MsgBox "Numer_Bloczka: " & rsB!Numer_Bloczka & " Nr Odcinka: " & rsB!Numer_Odcinka
Me.numery = Me.numery & rsB!Numer_Odcinka & Chr(32)
rsB.MoveNext
Wend
'Kwerenda
rsB.MoveFirst
NrBl = rsB!Numer_Bloczka
DoCmd.OpenQuery "KW"
End Sub
String kwerendy KW
SELECT Tabela1.IDTABELI, Tabela1.Numer_Bloczka, Tabela1.Numer_Odcinka
FROM Tabela1
WHERE (((Tabela1.Numer_Bloczka)=GetNrBl()));
jakoś tak ;)
Re: Kwerenda - wybór zakresu rekordów na podstawie jednego ID
Author: Stan
Date: Mon, 23 Oct 2017 12:46
Date: Mon, 23 Oct 2017 12:46
1 lines
1714 bytes
1714 bytes
Dziękuję za pomoc, spróbuję pojąć i wykorzystać ten kod :)
Re: Kwerenda - wybór zakresu rekordów na podstawie jednego ID
Author: LeszekN
Date: Tue, 24 Oct 2017 06:37
Date: Tue, 24 Oct 2017 06:37
3 lines
1679 bytes
1679 bytes
link do przykładowej bazy, może to ci rozjaśni umysł ;) https://1drv.ms/u/s!AubY6w7zEtc2hWqLBWJYSkWy9C1V
Re: Kwerenda - wybór zakresu rekordów na podstawie jednego ID
Author: Stan
Date: Tue, 24 Oct 2017 10:09
Date: Tue, 24 Oct 2017 10:09
9 lines
2042 bytes
2042 bytes
W dniu wtorek, 24 października 2017 08:37:04 UTC+2 użytkownik LeszekN napisał: > link do przykładowej bazy, może to ci rozjaśni umysł ;) > > https://1drv.ms/u/s!AubY6w7zEtc2hWqLBWJYSkWy9C1V Jak zwykle zapomniałem dodać, że pracuję na zabytkowym 2003 ;) - Twojego przykładu nie otworzę. Niemniej dziś mam lepsze myślenie i dałem już radę problemowi. Dziękuję, za duże chęci pomocy, pozdrawiam
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