PDA

نسخه کامل مشاهده نسخه کامل : سوال درباره محاسبه مقادیر فیلدها در Db



aj
26-08-2007, 20:47
سلام
من تازه کار را با دلفی شروع کردم. که توی همین اول راه سوال دارم.
تقریبا تمام مطالب شما را خوندم. خیلی خیلی ممنون. خیلی عالی بود. فقط جواب این سوال را پیدا نکردم.
من یک دیتابیس دارم شامل فاکتورها می شه برای نمایش فیلدها از dbedit استفاده کردم. حالا می خوام روی مقدار فیلدها محاسبه انجام بدم. مثلا یک کلید بذازم که اگر آن را فشار دهیم یک رقم از مقدار عددی که مربوط به فیلد تعداد کالا است کم کند و این مقدار را در دیتابیس جایگزین مقدار قبلی کند. آبا می تونم این کار را انجام بدهم؟ یعنی می شه با یک دکمه در یک رکورد فقط یک فیلد خاص را به اندازه مشخص تغییر داد؟

Mavix
26-08-2007, 22:26
با سلام

آره دوست عزیزم شدنیه

اول جدول خودت رو در حالت edit قرار بده بعد مقدار رو بده و دوباره post کن:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

با فرض اینکه نام جدول Table1 و نام فیلد مربوطه Field1 می باشد.

موفق باشین.

aj
27-08-2007, 11:40
سلام mavix عزیز.
خیلی ممنون از اینکه جواب دادی. اما من به نتیجه نرسیدم.
من این دستور را که نوشتید برای رویداد onclick کلیدم نوشتم، اما زمان اجرا این error را میده undeclared identifier:'table1field1' (ضمنا من نام فیلد را هم field1 فرض کردم).
قابل ذکر که DB من foxpro یا paradox7 است.

Mavix
28-08-2007, 12:41
با سلام

دوست عزیزم شما باید نام جدول خود را جایگزین Table1 و نام فیلد خود را جایگزین Field1 می کردین.

موفق باشین.

aj
28-08-2007, 16:30
سلام دوست عزیز.
واقعا شرمنده که من متوجه نمی شم. کاری را که گفتید انجام دادم. اما ایندفعه ایراد جدید می گیرد و ';' را نمی شناسد.
اصلا اینطوری فرض کنیم. من یک جدول را روی صفحه اوردم و یک فایل به اسم asnad.dbf را به ان اضافه کردم. فیلدهای رکورد را روی dbedit می بینم. یک فیلد به اسم num دارم که می خواهم روی ان محاسبه انجام بدم .
لطفا اگر می شه با فرض این اسامی کد را بنویسید.
مرسی.

Mavix
28-08-2007, 19:59
با سلام

اگه نام جدولت asnad و نام فیلد مورد نظرت num است اون موقع کدت اینجوری میشه :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

مرد مباح
29-08-2007, 10:20
ماویکس جان.
فکر کنم خط دومتون نیاز به اصلاح داره به صورت زیر. :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Mavix
29-08-2007, 11:12
با سلام

اشتباه که نیست هر دو درسته. من عادت دارم کوتاهترین رو انتخاب کنم.

aj
29-08-2007, 18:10
مرد مباح و ماویکس جان واقعا لطف کردید. خیلی ممنون.
اما من یک سول دیگه هم دارم که فکر می کنم جایش اینجا نباشد اما می پرسم.
اگر امکانش هست یک راهنمایی درباره مراحل کامل ایجاد برنامه در محیط دلفی کنید. یعنی بعد از نوشتن برنامه در این محیط و ایجاد پروژه یا کامپایل کردن باید چه کار کنیم تا برنامه ما exe شود و برای اجرا احتیاجی به خودdelphi نداشته باشد؟ اگر راهنمای کنید خوشحال می شوم.

Mavix
29-08-2007, 18:26
با سلام

جایی که پروژه خود رو ذخیره کردی ، اگه یک بار برنامه رو اجرا کنی همون جا Exe برنامه خودش ایجاد میشه.

ولی اگه برنامه ات دارای یه دیتابیس باشه شرایط کمی فرق میکنه که اونم مونده به نحوه اتصال به دیتابیس. (اینجا خودش یه پروژه است)

aj
30-08-2007, 11:34
سلام.
می خواهم بدون استفاده از DBnavigator و با استفاده از یک button درون دیتابیس یک رکورد را جستجو کنم با چه دستوری می توانم این کلید را فعال کنم؟

aj
30-08-2007, 11:36
با سلام

جایی که پروژه خود رو ذخیره کردی ، اگه یک بار برنامه رو اجرا کنی همون جا Exe برنامه خودش ایجاد میشه.

ولی اگه برنامه ات دارای یه دیتابیس باشه شرایط کمی فرق میکنه که اونم مونده به نحوه اتصال به دیتابیس. (اینجا خودش یه پروژه است)

سلام
فایل exe که می گویید بدون نصب دلفی هم اجرا می شود؟ یعنی اگر ببرم روی یک سیستم بدون نرم افزار دلفی run می شود؟

Mavix
30-08-2007, 12:09
با سلام

با DBNavigator که جستجو نمیکنن ، پیمایش میکنن. خودت میتونی تمام دکمه های DBNavigator رو با کلید دیگه ای انجام بدی مانند : Table1.Next

فایل exe ایجاد شده بدون وجود دلفی هم کار میکنه. (ولی واسه کار کردن دیتابیست راه های مختلفی وجود داره)

aj
30-08-2007, 13:03
سلام
خوب حالا نگفتید کد جستجو درون table چیه؟
ضمنا اگر دیتابیس من foxpro باشه ساخت exe برای run شدن کافیه؟

مرد مباح
30-08-2007, 13:37
برو توی لینک امضای من.
همه نوعش اونجا صحبت شده.

aj
03-09-2007, 16:48
سلام مرد مباح عزیز. خسته نباشید.
من به حرف شما گوش کردم آدرس های امضای شما را نگاه کردم اما باز هم اشکالاتم رفع نشد.
اگر برایتان امکان دارد دستور ***** را کامل توضیح دادهید تا این سوالاتم رفع شود.
مثلا فرض کنیم من یک edit دارم که شامل فیلد شماره عضویت است و می خواهم بعد از تایپ شماره مثلا در dbgrid رکوردها با این مشخصات نمایش داده شود. برای این کار این دستور ***** را باید چطور بنویسم و اصلا این دستور باید برای کدام کامپوننت نوشته شود؟

aj
08-09-2007, 10:35
سلام مرد مباح عزیز. خسته نباشید.
من به حرف شما گوش کردم آدرس های امضای شما را نگاه کردم اما باز هم اشکالاتم رفع نشد.
مثلا فرض کنیم من یک edit دارم که شامل فیلد شماره عضویت است و می خواهم بعد از تایپ شماره مثلا در dbgrid رکوردها با این مشخصات نمایش داده شود. برای این کار این دستور ***** را باید چطور بنویسم و اصلا این دستور باید برای کدام کامپوننت نوشته شود؟؟؟؟؟؟؟؟

aj
16-10-2007, 16:38
سلام.
دوستان عزیز می دونم که سرتون خیلی شلوغه، اما خواهش می کنم اگر کمکی از دستون بر میاد دریغ نکنید. خیلی عجله دارم.
سوالم را اینجا مطرح می کنم چون عنوان تاپیک مناسب بود.من یک جدول دارم که با استفاده از خاصیت ----- کردن در ان جستجو انجام می دهم و نتیجه جستجو را روی dbgrid می بینم. حالا می خواهم بعد از نشان دادن این جستجو یک محاسبه انجام دهم. در این جدول یک فیلد با عنوان تعداد دارم که می خواهم در هر بار جستجو پس از بدست آوردن رکوردهای مورد نظر مقدار فیلد تعداد را در رکوردهای مختلف جمع بزند و نتیجه آخر را در یک edit نمایش دهد.
خودم چند تا کد نوشتم
if table1.Eof<>true then begin
a:=table1.FieldByName('MANY').Value+a;
table1.Next;
end;
edit8.Text:=inttostr(a);
اما این کدها را برای رویداد onclick یک دکمه نوشتم و برای هر بار جمع زدن باید به تعداد رکوردها این کلید را فشار دهیم که من نمی خواهم اینطوری باشد می خواهم با یک بار کلیک کردن جمع آخر را بدهد.
تشکر

F A R H A D
17-10-2007, 00:13
سلام
کدها رو بین تگ قرار بده

کد رو به صورت زیر اصلاح کن:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای این موارد اگر از query ها استفاده کنید خیلی بهتر هست. زمانی که حجم بانک زیاد میشه، حرکت بین تک تک رکوردها حافظه زیادی رو اشغال میکنه. لینک زیر رو ببین:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

موفق باشی

aj
18-10-2007, 10:30
سلام.
فرهاد جان ممنون.
واقعا لطف کردی. مشکلم حل شد.
انشاالله موفق باشید.

aj
23-10-2007, 19:53
دوباره سلام.
شرمنده که ما فعلا مجبوریم استفاده کننده باشیم اما اگر لطف کنید کمک کنید مشکلمون حل بشه انشاالله یک روزی ما هم می تونیم جا پای شما بذاریم.
دوستان عزیز دو تا سوال دارم :
اول اینکه می خواهم برای جدولم دوتا index بذارم البته در دیتا بیس این را تعیین کردم یعنی برای جدولم دو تا شاخص انتخاب کردم درون دلفی هم در گزینه index name دو تا انخاب دارم اما فقط می تونم یکی را انتخاب کنم در صورتی من می خواهم با هر دوتای اینها به ترتیب مرتب شوند.
دوم اینکه من یک جدول دارم با چند فیلد که می خواهم روی فیلدها محاسبه انجام بدم. اما با بررسی چند شرط. می خواهم شرط بذارم اگر فیلد اول پر بود مقدار فیلد اخر با مقدار edit جمع شود و اگر مقدار فیلد دوم پر بود مقدار فیلد اخر از مقدار edit کم شود. چند کد نوشتم اما اینها فقط مقدار را جمع می کنند و کم نمی کنند.
if not table1.eof then
while not table1.eof do
if table1.FieldByName('field1').Value<>'' then
begin
a:=table1.FieldByName('MANY').Value+a;
table1.Next;
end
else
if table1.FieldByName('field2').Value<>'' then
begin
a:=a-table1.FieldByName('MANY').Value;
table1.Next;
end ;

F A R H A D
24-10-2007, 11:49
با سلام. دوست عزیز سوال اولت رو باید در یه تاپیک دیگه بپرسی (البته در صورتی که بعد از جستجو جواب نگرفتی) چون به موضوع این تاپیک مربوط نمیشه.

در مورد سوال دوم هم کدی که نوشتی رو به صورت زیر اصلاح کن. البته باید table.first رو به اولش اضافه کنی تا تمام جدول رو پیمایش کنه.
همونطور که در پست قبلی هم گفتم انجام این موارد با دستورات sql خیلی راحت تر صورت میگیره. سعی کن از اونها استفاده کنی.
کدها رو هم داخل تگ
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

موفق باشی

aj
24-10-2007, 13:28
سلام.
متشکرم. با کمک شما مشکلم رفع شد.
من برای انجام این پروژه عجله دارم برای همین هم نتونستم برام سراغ مطالب جدید انشاالله در اسرع وقت به نوصیه شما عمل می کنم.
ضمنا سوالم را توی تاپیک های اول تکرار کردم.