🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.bazy-danych.msaccess
3 messages
3 total messages Started by dzagorski Sun, 11 Feb 2024 21:32
Ograniczenie rekordów w polu kombi
#137845
Author: dzagorski
Date: Sun, 11 Feb 2024 21:32
8 lines
2367 bytes
Czy jest ograniczenie na ilość rekordów wyświetlanych w polu kombi?

Mam pole kombi oparte na tabeli i zauważyłem, że nie mogę z listy wybrać wszystkich wartości. Nadmienię ze tabela źródłowa jest duża i wycina mi wszystko powyżej 65535 rekordu.

Aby być precyzyjnym, rekordy powyżej tych 65k mogę wybrać, ale musze je wpisać z palucha, nie mam tylko możliwości rozwinięcia ich w kombi i wybrania przez wskazanie (trochę to upierdliwe jak nie znam dokładnej wartości). 

Można to jakoś obejść, czy to taki niezamierzony feature. 
A może to ja jestem dziwny wybierając wartość z tak dużej tabeli.
Re: Ograniczenie rekordów w polu kombi
#137846
Author: LX 'yrs
Date: Mon, 12 Feb 2024 18:27
27 lines
3101 bytes
niedziela, 11 lutego 2024 o 22:32:28 UTC+1 dzag...@wp.pl napisał(a):
> Czy jest ograniczenie na ilość rekordów wyświetlanych w polu kombi? 
> 
> Mam pole kombi oparte na tabeli i zauważyłem, że nie mogę z listy wybrać wszystkich wartości. Nadmienię ze tabela źródłowa jest duża i wycina mi wszystko powyżej 65535 rekordu. 
> 
> Aby być precyzyjnym, rekordy powyżej tych 65k mogę wybrać, ale musze je wpisać z palucha, nie mam tylko możliwości rozwinięcia ich w kombi i wybrania przez wskazanie (trochę to upierdliwe jak nie znam dokładnej wartości). 
> 
> Można to jakoś obejść, czy to taki niezamierzony feature. 
> A może to ja jestem dziwny wybierając wartość z tak dużej tabeli.
'Użytkownik musi wpisać pierwszą literę. Sprawdź, czy zadziała dla tak dużej tabeli


' właściwość Autorozwijanie formantu Me.Kombi0 ustaw na FALSE
Private Sub Form_Load()
  If Me.Kombi0.AutoExpand Then Me.Kombi0.AutoExpand = False
End Sub

Private Sub Kombi0_Change()
  ' Oryginalnie:
  ' Me.Kombi0.RowSource=SELECT tblTabela.TwojePole FROM tblTabela;

  Me.Kombi0.RowSource = "SELECT tblTabela.TwojePole  FROM tblTabela WHERE (tblTabela.TwojePole Like ('" & Me.Kombi0.Text & "*'))"
  Me.Kombi0.Dropdown

-- 
LX'yrs
End Sub
Re: Ograniczenie rekordów w polu kombi
#137668
Author: K.P.
Date: Mon, 10 Feb 2025 23:34
50 lines
3152 bytes
W dniu 12.02.2024 o 19:27, LX 'yrs pisze:
> niedziela, 11 lutego 2024 o 22:32:28 UTC+1 dzag...@wp.pl napisał(a):
>> Czy jest ograniczenie na ilość rekordów wyświetlanych w polu kombi?
>>
>> Mam pole kombi oparte na tabeli i zauważyłem, że nie mogę z listy wybrać wszystkich wartości. Nadmienię ze tabela źródłowa jest duża i wycina mi wszystko powyżej 65535 rekordu.
>>
>> Aby być precyzyjnym, rekordy powyżej tych 65k mogę wybrać, ale musze je wpisać z palucha, nie mam tylko możliwości rozwinięcia ich w kombi i wybrania przez wskazanie (trochę to upierdliwe jak nie znam dokładnej wartości).
>>
>> Można to jakoś obejść, czy to taki niezamierzony feature.
>> A może to ja jestem dziwny wybierając wartość z tak dużej tabeli.
> 'Użytkownik musi wpisać pierwszą literę. Sprawdź, czy zadziała dla tak dużej tabeli
> 
> 
> ' właściwość Autorozwijanie formantu Me.Kombi0 ustaw na FALSE
> Private Sub Form_Load()
>    If Me.Kombi0.AutoExpand Then Me.Kombi0.AutoExpand = False
> End Sub
> 
> Private Sub Kombi0_Change()
>    ' Oryginalnie:
>    ' Me.Kombi0.RowSource=SELECT tblTabela.TwojePole FROM tblTabela;
> 
>    Me.Kombi0.RowSource = "SELECT tblTabela.TwojePole  FROM tblTabela WHERE (tblTabela.TwojePole Like ('" & Me.Kombi0.Text & "*'))"
>    Me.Kombi0.Dropdown
> 


Dla dużych tabel, zwłaszcza dużych zapytań, a już na pewno w przypadku 
korzystania z zewnętrznego źródła danych dobrze jest załadować zestaw 
rekordów raz przy starcie formularza. Chodzi o to, żeby nie odpytywać 
bazy przy każdej zmianie wartości w polu kombi.

Można to zrobić np. zapamiętując na starcie pełen zestaw rekordów i 
tylko filtrować potem wynik dynamicznie, co jest znacznie szybsze w 
przytoczonych sytuacjach. Jako źródło rekordów w kontrolce Kombi0 
wpisujemy po prostu tblTabela. Natomiast mechanizm działania jest taki, 
jak napisałeś:

Option Compare Database
Dim rs As Recordset

Private Sub Form_Load()
Set rs = Me!Kombi0.Recordset.Clone
End Sub

Private Sub Kombi0_Change()
rs.Filter = "tblTabela.TwojePole Like '" & [Kombi0].Text & "*'"
Set Me!Kombi0.Recordset = rs.OpenRecordset
Me!Kombi0.Dropdown
End Sub
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