XML می تواند دقیقا همچون یک Table برای شما عمل نماید. در واقع شما می توانید با استفاده از XML اطلاعات خودتان را در قالب یک جدول ذخیره کنید.
برای این کار می توانید از کمپوننت ClientDataSet استفاده کنید. (این کمپوننت را می توانید در تب DataAccess بیابید). در واقع این کمپوننت یک In-Memory Table است. یعنی اطلاعات خود را در حافظه نگهداری می کند و به همین علت نیز فوق العاده سریع است.
نگاهی به کد زیر بیاندارید و با Load کردن یک XML و درست کردن آن آشنا شوید:
|
همان طور که در این کد مشاهده می کنید در ابتدا سعی شده است که فایل test.xml را که در شاخه خود برنامه قرار دارد Load کنیم و در صورتی که این فایل پیدا نشد. آنگاه می توان به سادگی (همان طور که می بینید) این فایل را از ابتدا تعریف کرد. فیلدهای مورد نظر و مشخصات مورد نیاز خود را وارد کنیم و همچنین در صورتی که نیاز بود با استفاده از IndexDefs یک یا چند Index جدید ساخت.
به چند نکته راجع به این کد توجه کنید:
۱- با استفاده از متد FieldDefs.AddFieldDef مربوط به ClientDataSet می توانید یک فیلد جدید درست کنید.
۲- برای ساخت Index نیز می توانید از متد IndexDefs.AddIndexDef مربوط به ClientDataSet استفاده کرد.
۲- هر فیلد می توانید شامل انواع زیر باشد:
| type TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString, ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob, ftVariant, ftInterface, ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd); |
بنابراین شما به جای ftString و یا ftAutoInc می توانید از هر کدام از این ثابت ها استفاده کنید.
همان طور که مستحضرید به راحتی می توانید در XML حتی از BLOB هم استفاده کرده و در آن صدا یا تصویر ذخیره کنید.
۳- از متد CreateDataSet پس از ساخت فیلدهای مورد نظرتون استفاده کنید تا این تغییرات تثبیت بشود.
۴- یک ClientDataSet را می توانید به سادگی به یک کمپوننت DataSource وصل کنید. پس از آن می توانید از هر کمپوننت Data-Aware مثل DBGrid برای Browse یا ویرایش اطلاعات استفاده کنید.
۵- با استفاده از Filter و Filtered می توانید به سادگی اطلاعات رو فیلتر کنید و به علاوه به سادگی می توانید از Locate و FindKey و FindNearest برای جستجو در Tableتون استفاده کنید.
۶- در ClientDataSet هم می توانید از Lookupها و فیلدهای محاسباتی استفاده کنید. همچنین می توانید دو نوع فیلد دیگه به اسم InternalCalc و Aggregate رو هم استفاده کنید. راهنمای مربوط به InternalCalc و Aggregate دلفی رو در این جا آورده ام:
| InternalCalc: Retrieves values calculated at runtime by a client dataset and stored with its data (instead of being dynamically calculated in an OnCalcFields event handler). InternalCalc is only available if you are working with a client dataset. Values calculated for an InternalCalc field are stored and retrieved as part of the client dataset’s data. Aggregate: |
موفق و موید و منصور باشید
معموری
دیدگاه خود را بیان کنید.
باید وارد سایت شده باشید برای دیدگاه دادن