Munka ado Delphi
Hello újra írok egy cikket a ADO. és kérésére a blogomat olvasók, akik kérték, hogy elmondja, hogy az adatbázis tud dolgozni számított mezők (az értéke a számított mező azonnal megváltozott, amikor belépnek egy új értéket), a példa adatbázis - MS Access. Megmondom 2 módon dolgozik számított mezők, a példa azt mutatják, csak egy út. Nos, az első módszer lényege, hogy minden területen, beleértve a számított hozunk létre, miután az adatbázis - MS Access. ahol az adattípusmezőt, amely meg fogja változtatni az értéket - jelzik kiszámított mező.
Ami a második módszer, a számított mező, akkor hozzon létre ebben a projektben, a komponensek TAdoQuery vagy TAdoTable.
Nos, azt kell mondanom, hogy nincs nagyon korrekt 3 módszer, amelynek segítségével TTimer.
Kezdjük az adatbázisunkban.
Van az adatbázisban a következő szerkezetű:
Így az adatbázis MS Access, létrehoztunk, most megy a projekt Delphi. A forma már a következő összetevőkből áll:
Most, hogy egy kapcsolat adatbázisunkban, hogyan kell csinálni, mi tekinthető ebben a cikkben. így a hangsúly ezen, én nem. Következő, szükségünk van minden a mi komponensek csatlakoznak egymáshoz, valamint itt és a kezdéshez. Válassza TADOQuery komponens és a tulajdon Connection jelzik - TADOConenction. Ezután válasszuk TDataSource komponens és a tulajdon DataSet jelzik TADOQuery. Ezután osztják TDBGrid komponens és a tulajdon adatforrás jelzik TDataSource.
Minden most hozzá az összes körünkbe. Ehhez meg kell aktiválni a kérelem és a kapcsolat. Az ingatlan TADOConenction komponens - csatlakoztatott set Igaz. és a tulajdon TADOQuery alkatrész - SQL. levelet az alábbi lekérdezést
Köszönöm Andrey53. Cool példa. És én csak még nem próbáltam, nem működött. Kiderült, mint minden zseniális. Ön a honlapon információkat adatbázisok, elég Mighty tankönyv. És azt hiszem, ha tudnánk közzé, ő élvezte volna népszerűsége, legalábbis a kezdők (legalább). Köszönjük, hogy segít megérteni, és nem hagy kérdést megválaszolatlanul.
Megpróbáltam újra
eljárás TForm1.ADOQuery1CalcFields (DataSet: TDataSet);
kezdődik
ADOQuery1Sum.AsInteger: =
ADOQuery1Values.AsInteger * ADOQuery1Count.AsInteger;
végén;
repülő bogarak, hanem a forrás minden írott és fut.
Próbáltam regisztrálni az oszlopok területeken keresztül
kezdődik
AdoQuery1.Fields.FieldByName ( 'Kelet') asInteger :. =
AdoQuery1.Fields.FieldByName (Parish) asInteger-AdoQuery1.Fields.FieldByName (a 'fogyasztás') asInteger ..;
végén;
Ez szerzett.
Talán ő volt az orosz név átkozott,
vagy az a tény, hogy ahelyett, hogy a szokásos Grida használom DBGridEh?
Nem, az a tény, hogy ahelyett, hogy a szokásos rács DBGRidEh használ nem a problémát, de legalább valami hiba repült?
Szia köszönöm szépen a cikket.
Segítsen kérem én még mindig nem jó adatbázis és nem tud rájönni, hogy hová mentse az összeg mértéke a két terület között?
Az Access mező által létrehozott Delphi 7, illetve, és nincs értékekre is, amelyek nincsenek jelen. Kinyitom a programot érték.
Lehetséges, hogy ezt az Access rögzített számított értékek?
Igen, ez lehetséges, azokat könnyen karbantartható, ADOQuery.Post
Nem egészen értem, de a Delphi meg tudja határozni a napok száma egy hónap, attól függően, hogy ezt a számot, akkor létrehozhat egy táblát az adatbázisban a megfelelő sorok számát!
Egy másik módja, amely a DBGrid (DBGridEh) rendezett olyan oszlop, amely megjeleníti a számított értéket, vagy általában bármilyen más vonalon.
A felszólalók között szerepel DBGrid létre egy másik, hogy nem jár bármely területén az adatbázis tábla.
Abban az esetben, OnDrawColumnCell rosták feldolgozási eljárás előfordul adatfeldolgozás, fogadására és az eredményt megjeleníteni:
eljárás TForm1.DBGrid1DrawColumnCell (Sender: TObject; const téglalap: TRect;
DataCol: integer; Oszlop: TColumn; Állam: TGridDrawState);
var
D. string;
R. TRect;
kezdődik
ha Column.Index = 6 ezután kezdődik // az index egy további oszlop
// nyilatkozatok vagy más számítástechnikai
R: = téglalap;
InflateRect (R, 0, -2);
DrawText (DBGrid1.Canvas.Handle, PChar (D), -1, R, DT_Center);
végén;
végén;
A hátránya az, hogy a kijelző az eredmények nem használhatók máshol a programban. De helyzetek is, amikor nem kell elég.
És akkor valahogy szűrni a számított mező? Próbáltam, nem működik!
int n;
n = 2500;
ADOTable1-> Szűrés = false;
ADOTable1-> Filter = «(dolgozott = '«+ IntToStr (n) +»')»;
ADOTable1-> Szűrés = true;
DBChart1-> RefreshData ();>
Field "munka" - számított!
Előre is köszönöm!