PDA

View Full Version : ClientDataSet



rezamahdizadeh
سه شنبه 28 خرداد 1387, 17:38 عصر
می خواهم با كد چند ركورد به یك ClientDataSet كه قبلا فیلدهای آن را تعریف كرده ام اضافه كنم اما موقعی كه ركوردهای آن را به یك Fast Report می دهم خطای زیر را می دهد.
ClientDataSet1: Missing data provider or data packet. چگونه این مشگل را حل كنم؟

vcldeveloper
چهارشنبه 29 خرداد 1387, 23:37 عصر
ClientDataset را به چی وصل کردید؟

rezamahdizadeh
جمعه 31 خرداد 1387, 10:33 صبح
به DataSetProvider وصل كرده ام اما خود DataSetProvider به چه وصل كنم تا بتوانم با كد چند ركورد به این اضافه كنم و در واقع این ركوردها از پایگاه داده خوانده نمی شوند بلكه در خود سورس برنامه اضافه می شوند.

vcldeveloper
جمعه 31 خرداد 1387, 23:57 عصر
دقیقا توضیح بگید که از ClientDataset می خواید برای چه اطلاعاتی استفاده کنید و این اطلاعات در کجا ذخیره میشند. چون ممکن هست اصلا استفاده از ClientDataset برای منظور شما جایگاه نداشته باشه.

rezamahdizadeh
شنبه 01 تیر 1387, 09:49 صبح
گزارشي دارم كه ستون مبلغ پرداختني و ستون مبلغ دريافتني دارد. مي خواهم ستون جديدي داشته باشم كه مبلغ پرداختني را منهاي مبلغ دريافتني كند و اين حاصل را با آخرين مقدار كه حاصلجمع جبري رديفهاي قبلي است جمع جبري شود.
مثال
---------------------مبلغ پرداختني-----------------مبلغ دريافتني-------------مانده
---------------------152000 -----------------------32000--------------------120000
---------------------20000 ------------------------0--------------------------140000
---------------------0-------------------------------13000--------------------127000

vcldeveloper
شنبه 01 تیر 1387, 17:06 عصر
گزارشي دارم كه ستون مبلغ پرداختني و ستون مبلغ دريافتني دارد. مي خواهم ستون جديدي داشته باشم كه مبلغ پرداختني را منهاي مبلغ دريافتني كند و اين حاصل را با آخرين مقدار كه حاصلجمع جبري رديفهاي قبلي است جمع جبري شود.
خب، نقش ClientDataset این وسط چی بود؟

rezamahdizadeh
یک شنبه 02 تیر 1387, 08:03 صبح
قطعا با SQL نمي شود اين كار را انجام داد يعني مانده را با اين شرايط بعنوان فيلد خروجي داد. دو راهكار براي من وجود دارد يكي اينكه در خود كد اين را انجام داد و اين با استفاده از ClientDataSet يا MemTable مقداردهي فيلد تعبيه شده براي مانده و ارسال Dataset آن به FastReport انجام مي شود. دومين راه حل كد نويسي در خود گزارش با استفاده از زبان خود گزارش ساز است.

vcldeveloper
یک شنبه 02 تیر 1387, 17:57 عصر
قطعا با SQL نمي شود اين كار را انجام داد يعني مانده را با اين شرايط بعنوان فيلد خروجي داد.
میتونید یک تابع بنویسید که با ایجاد یک کرسر روی رکوردها حرکت کرده و محاسبات لازم را برای هر رکورد انجام داده و نتیجه را بصورت مقدار یک فیلد برگرداند. البته مسلما به تناسب تعداد رکوردها، این کار کار پرهزینه ایی از نظر فشار به سرور و زمان لازم برای انجام محاسبات مربوطه، خواهد بود. می تونید چگونگی این کار را در بخش SQL Server بپرسید.


یكي اينكه در خود كد اين را انجام داد و اين با استفاده از ClientDataSet يا MemTable مقداردهي فيلد تعبيه شده براي مانده و ارسال Dataset آن به FastReport انجام مي شود.
اگه Dataset شما ADO هست، می تونید با استفاده از Clone روی رکوردهای جدول یک کرسر جدید ایجاد کنید و بدون آنکه کرسر فعلی جدول را تغییر دهید، مقادیر رکوردهای قبلی را با استفاده از Clone بخوانید. درباره Clone در Ado قبلا بحث شده، می تونید جستجو کنید.