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?