E nem baráti viszonyban a szűrőn, és kellene -, hogy hogyan lehet

DataSet.Locate nem barátja Filter szükség szerint -, hogy hogyan lehet

Tényleg kell

DataSet.Locate bevezetésre kizárólag a bejegyzések teljesítik azt a feltételt DataSet.Filter

ha DataSet áll, hogy például

ID # XA0; neve
---------
1 # XA0; name1
2 # XA0; name2
3 # XA0; NAME3
4 # XA0; name1
5 # XA0; NAME3

szűrés után maradványait
ID # XA0; neve
---------
4 # XA0; name1
5 # XA0; NAME3

DataSet.Locate ( "Név", "Név1", [loCaseInsensitive, loPartialKey])
is ID = 1 és ID = 4 kell lennie
Mit kell tenni?

Most át a adatbázisba, hogy megtalálja a kívánt bejegyzést.
By the way, a sebesség, mint Lokeyt gyakorlatilag nincs változás.

Használja TTable + szűrő, akkor minden bude, amennyit csak akar.
Ebben az esetben a köteg egyenértékű TQuery + szűrő állapot, ahol egy szakaszt. (Szűrés szerver)

TQuery + Filter = szűrő mindig a kliens

vannak:
# XA0; táblázat "A" - például kék (IDRab, Név, Ot, Do)
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; Ot / Do - alatt "láthatósága" című (ha rendelkezésre áll)
# XA0; táblázat "B" - például rendelések (IDZak, IDRab, Ot, Do)
# XA0; táblázat "C" - például ZakRab (IDZakRab, IDZak, IDRab, N)

A helyzet a következő:
# XA0 - Megnyitja a limitáras futásidőben (tól - ig) a LookupName választani neve
# XA0; # XA0; és rendeljen [N] - itt is szükséges, hogy a Keresés csak azoknak a munkavállalóknak, akik alkalmasak
# XA0; # XA0; Rend [tól - Fel]. Azt használja a szűrési és működik a bumm

# XA0, - amennyiben - az első, aki megpróbálta - nem alkalmas egy oka időnként meg kell nézni
# XA0; # XA0; korábbi rekordot, ebben az esetben AfterScroll tenni a szűrést (DataSett.Close / Open
# XA0; # XA0; munkálatok kellemetlen lassan Filter gyorsabb - de ez egy bug)

-> Magát átadni az adatbázisba, hogy megtalálja a kívánt bejegyzést.
By the way, a sebesség, mint Lokeyt gyakorlatilag nincs változás.

Ja mindent elkövetnek DBGridEh - megváltoztatni. (


> Igen mindent elkövetnek DBGridEh - megváltoztatni. (

Nos, jól. Minden remény nagybátyja, aki mindent megtesz az Ön számára?
Vagy "mindent" made in EhLibGrid. Akkor élvezem, miért kérdezed?


> Minden remény bácsi

És miért nagybátyja - igen, tudom használni a harmadik féltől származó komponensek (nem hiszem, hogy minden élőlény itt használja a jelenlegi standard VCL), egyébként írt ASM-e (sajnos nem tudom, de ebben az esetben lenne vyuchil)

# XA0; általános DataSet.Filter - egy praktikus eszköz, legalábbis nekem, de van kuchyu „félreértések” - DataSet.Locate lát, és minden mást.

# XA0; És a kérdés: Hogyan lehet szűrni a DataSet a kliens (gyakran nem fut a szerver minden egyes alkalommal az adatok) és anélkül DataSet.Close / Open - újra --- de a fékek adatok szűrésére nebyli látható (a legalább DataSet.Locate), mert DBGridEh - én seichas javára, így nézte a listáját, amit írja

PS. Ne kérdezze / hogy azonnali

Nem értettem, és a DataSet kicsoda?

> Nem hiszem, hogy bármely élőlény itt használni a jelenlegi standard VCL
ez te csoda, sokan használják, szeretem. és csak a szokásos. (Tudom, hogy a hivatalban, amelyre a nem szabványos (/ nekuplennyh hogy gyakran ugyanaz) egyszerűen tilos. Van olyan cég. Volt. Várja meg, amíg nem nagyon figyelmet fordítanak, de nem a számunkra könnyebb volt csak káosz hozzá a tenyésztő az irodában )

> Egyébként én írtak ASM-e
és ez az oka / hol? abban az értelemben, hogy tudja biztosan nem fáj, de mi az összefüggés a VCL?

> PS. Ne kérdezze / hogy azonnali
könnyen. Tanácsot, hogy ne egyenlővé összes örökösök DataSet. Szerelem sajátosságait (nem csak # XA0; adatbázisba). majd izbezhish "kuchyu" félreértések ""

Vajon milyen szűrőt alkalmazzuk, kiderült, egy ilyen eredmény, hogy ez nem tiszta.

Túl érdekelt, megnéztem két különböző TMemTableEh, kimenet a szűrőt lokeyt nem esik, ellentétben jóváhagyott sdes.
Félek, hogy csak beszélni DataSet.Filter, és ténylegesen használt onFilterRecord. (Legalábbis ez magyarázza utverdzhdaemoe).

Talán, de ő egy közönséges partizánok.

Van spekuláció, hogy a fickó yuzaet TIBDataSet. Ha igen, akkor nincs semmi meglepő -, hogy nincs szűrő! Mert, amint az közismert, az alkatrészek IBX ingatlan Filter kielégít.

Tehát ez:
DataSet -> ADO DataSet
de szűrésére protsedurku ryalizoval. írtam
TDataSet (adatbázisba) .Filter: =. // és itt nem lesz semmilyen örökös

Következő.
# XA0; van MasterDataSet, DetailDataSet azt Lookup1 mező SpravDataSet

A MasterDataSet van csoport mező (például - egyszerűsített példa)

célkitűzés:
# XA0; a Lookup1 területén DetailDataSet-, és szükség van, hogy nem egy teljes listát a SpravDataSet-és áram. vonatkozó feltétel (ami változik minden egyes átmeneténél at al. Entry MasterDataSet [MasterDataSet.AfterScroll])

Exit 1:
# XA0, ahol - nem alkalmas SpravDataSet.Close / Megnyitás minden MasterDataSet.AfterScroll = fék

Hozam 2:
# XA0; a MasterDataSet.AfterScroll
# XA0; SpravDataSet.Filter: = szűrőfeltétel
# XA0 -> minden működik hurrá jelenlegi nabludaetsya fent említett hiba

PS. Elkezdtem a hibakeresés, és látta, hogy mikor gyűjtünk SZÖVEG DBGridEh a Keresés mezőbe vipolnyaetsya:
ha AColumn.UsedLookupDataSet.Locate (AColumn.Field.LookupResultField, FSearchText,
# XA0; # XA0; # XA0; [loCaseInsensitive, loPartialKey]), majd
Itt hiba vylitaet itt - SpravDataSet: A rekord nem található

eljárás TForm1.FormCreate (Sender: TObject);
kezdődik
# XA0; ADODataSet1.Open;
végén;
eljárás TForm1.Edit1Change (Sender: TObject);
kezdődik
# XA0, ha Edit1.Text <> „” Akkor
# XA0; # XA0; ADODataSet1.Filter: = "ID>" + Edit1.Text; // aktuális szám természetesen :)
végén;
eljárás TForm1.BitBtn1Click (Sender: TObject);
kezdődik
# XA0; ADODataSet1.Locate ( "A", Edit2.Text, [loCaseInsensitive, loPartialKey]);
# XA0; ShowMessage ( "ID =" + VarToStr (ADODataSet1.FieldByName ( "ID") Érték).);
végén;
eljárás TForm1.CheckBox1Click (Sender: TObject);
kezdődik
# XA0; ADODataSet1.Filtered: = CheckBox1.Checked;
végén;

1. minta (szűrés nélkül):
Table1. Ez a következő:
ID # XA0; A
--------
1 # XA0; aaa
2 # XA0; bbb
3 # XA0; ccc
4 # XA0; aaa
5 # XA0; bbb

ADODataSet1.Filtered: = false;
ADODataSet1.Locate ( "A", "BB", [loCaseInsensitive, loPartialKey])
------
# XA0; ShowMessage ---> ID = 2 ---- Helyesen

1. minta (szűrt):
Table1. Ez a következő:
ID # XA0; A
--------
4 # XA0; aaa
5 # XA0; bbb

ADODataSet1.Filtered: = false;
ADODataSet1.Filter: = "ID> 3";
ADODataSet1.Locate ( "A", "BB", [loCaseInsensitive, loPartialKey]);
------
# XA0; ShowMessage ---> ID = 4 ---- NEM igaz teszt - legyen az ID = 5

Tény, hogy keresse meg - logikai funkciót. Ha úgy találja, akkor True
ha ADODataSet1.Locate ( "A", "BB", [loCaseInsensitive, loPartialKey])
majd
# XA0; ShowMessage ( "Talált")
más
# XA0; ShowMessage ( "nem található");

Nem fogok vitatkozni, meg tudom magyarázni, vagy inkább. Nem véletlen, hogy azt mondta, a megjelölés közötti egyenlőség az adatbázisba, vagy inkább annak hiánya. Szeretnék keresni, ismételje meg az ügyfél (ClientDataset), és meg kell kérni az azonos ruzultaty.

ADO-shnym még könnyebb, a megvalósítása a lokeyta a forráskód ADODB.LocateRecord, aki meg akarja érteni, hogy miért és hogyan működik fogja érteni, a lehetőség ott van.

nem ért egyet a megoldást a Borland, használja Find módszerrel közvetlenül a tárgy (melkosoftsky módszer), vagy a javasoltak szerint [1].

és az úton, a szűrőn anélkül szűrt = true (a [12] „1. minta (szűrt)”) nem fog működni.


> Vitali Panasenko # XA0; (25.07.06 18:09) [13]

ha kell evezni. Ez ad egy hiba, hogy „megtalálják” / „nem található”, és nem éri el a
és ennek során Rocco kell - csak akkor köteles Rocco kell tartania, és nem a második


> És mellesleg, szűrő nélkül Szűrt = igaz (a [12] „1. minta (a
> Szűrés) „) nem fog működni

=
Ochepyatka természetesen. Szűrt: = True

Több okból, ami miatt feltételezhető, hogy meg kell próbálnunk, hogy hozzanak LookupCache lukapnogo területen DetailDataSet.

Ó, ezek a mesemondók (c)

A TIBQuery nem igazán működik, de TIBTable ismét tökéletesen szűrt megbirkózni! I projekt őket élőben!

Nem kell próbálni. Elég, ha megnézi a forráskódot.

> De TIBTable ismét tökéletesen szűrt megbirkózni!

Nem hiszem :)
Hozd kódot.

> Van egy projekt számukra él!

Itt van egy csoda. Együtt érzek. Üdvözlettel. )

# XA0, ha szűrt és (Filter <> „”), Majd # XA0;
# XA0; kezdődik
# XA0; # XA0; SQL.Text: = SQL.Text + "ahol" + szűrő;
# XA0; # XA0; bWhereClausePresent: = true;
# XA0; end;

Nem érdekel a forráskódot. Van úgy, ahogy van.
Hozd a saját kódját, jelezve, hogy a Saint-szűrő működik.


> Rejtélyes fenevad Önnek. És pontosan megmondani, hogy mi a hiba
> - tabu?


> Nem érdekel a forráskódot. Van úgy, ahogy van ..
>.

Nos posmorite meg közelről, [22], és mondja el, miért hirtelen ez nem működik


> Hozd a saját kódját, jelezve, hogy a Saint-Filter munkák

Hogyan találhatom meg érdekes a kódot működött-e vagy sem.
Nos, ha annyira érdekes idézet

# XA0; # XA0;
dmTable2.Table.Filter: = "Table1ID =" + dmTable1.fldID.AsString;
dmTable2.Table.Filtered: = true;

(Object neveket megváltoztattuk)

Hiba izgatott RESYNC eljárás paraméter mrExact
kezdődik
# XA0; CursorPosChanged;
# XA0; ha GetRecord (FBuffers [FRecordCount], gmCurrent, True) <> grokkolom majd
# XA0; # XA0; Databaseerror (SRecordNotFound, Self);

Ez azt jelenti, hogy nem található frissíteni a belépési / azonosító megszerzéséhez lukapnogo értékeket. Nos, persze, mert van egy szűrő. Ezért próbálja [16].

eljárás TIBDataSet.SetFiltered (Érték: logikai érték);
kezdődik
# XA0, ha (szűrt <> Érték), majd
# XA0; kezdődik
# XA0; # XA0; öröklött SetFiltered (érték);
# XA0; # XA0, ha aktív, akkor
# XA0; # XA0; kezdődik
# XA0; # XA0; # XA0; bezárása;
# XA0; # XA0; # XA0; Megnyitás;
# XA0; # XA0; end;
# XA0; end
# XA0; máshol
# XA0; # XA0; öröklött SetFiltered (érték);
végén;

És ha igen, akkor ez az állítólagos szűrő egy egyszerű változás a szövegben a lekérdezés újra próbálkozunk.


> Nem lokalizált, vagyis Nem kell a helyi megvalósítások
> Adatbázis

ami azt jelenti, a helyi megvalósítás? IBTable egy adathalmaz. Ez nem egy absztrakt osztály.


> Hogy ez az állítólagos szűrő egy egyszerű változás kérelmét Szöveg
> Tól újra próbálkozunk.

és amire szüksége van egy normális szűrés? hogyan kell dolgozni?

By the way, meg kell nézni SetFilterText, amely új alapokra TIBTable és húzódik predpredka - TDataSet.

A kliens, azt hiszem. Anélkül, hogy a szerver.

> Ez azt jelenti, a helyi végrehajtás?

Ez azt jelenti, hogy az adatok, hogy már az ügyfél helyben.

> IBTable egy adathalmaz.

> # XA0; Ez nem egy absztrakt osztály.

Körülbelül egy absztrakt osztály, én nem mondtam semmit.

> És amire szüksége van a normális szűrés?

Ahhoz, hogy ez a munka.

> Hogyan kell működnie?


> Jobb.

hogyan kell? Van egy adathalmaz szűrése szabvány?

[16] - én már próbáltam - nem működik

Igen, azt hiszem keresése itt egyáltalán köze a tésztát is látható, hogy a megkeresése körülnézett a DataSet-e - és nem. Azt kakimto módon (nem helyileg hol) korlátozhatja a keresést az aktuális rekord nem otfiltrirovanye.
# XA0; hogyan?

PS. Azt mondanám, hogy ez a hiba a funkció: Miért lekérdezésére kívül a látótérben (kraynyak lehetőség lenne beragadt típusa [loFullDataSet])

[39]

> A vizsgálati látható, hogy a megkeresése körülnézett a DataSet-én - nem
> Kellene.

[15]

> Azt kell, ha sorban. Ez ad egy hiba, hogy „megtalálják” / „nem található”, és nem éri el a

Ahogy érti, uram?