🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#137547
Author: Stan
Date: Mon, 23 Oct 2017 06:31
13 lines
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
#137548
Author: LeszekN
Date: Mon, 23 Oct 2017 10:50
60 lines
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
#137549
Author: Stan
Date: Mon, 23 Oct 2017 12:46
1 lines
1714 bytes
Dziękuję za pomoc, spróbuję pojąć i wykorzystać ten kod :)
Re: Kwerenda - wybór zakresu rekordów na podstawie jednego ID
#137550
Author: LeszekN
Date: Tue, 24 Oct 2017 06:37
3 lines
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
#137551
Author: Stan
Date: Tue, 24 Oct 2017 10:09
9 lines
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