PDA

View Full Version : جمع زدن دو فیلد و قرار دادن در فیلد دیگر در VB6



Mohsen0025
دوشنبه 28 مرداد 1392, 00:05 صبح
سلام
آیا میشه که در DataGrid تو فیلد اول یه عدد و در فیلد دوم عدد دیگر نوشت و در فیلد سوم جمع این دوتا رو بزنه و در بانک اطلاعاتی(اکسس) ذخیرش کنه و به هنگام ویرایش کل دیتا دوباره جمع هاشون update بشه؟

مر30

vbhamed
دوشنبه 28 مرداد 1392, 08:01 صبح
سلام
به سايت برنامه نويس خوش اومدين
بله كاري كه مي‌خواين به راحتي امكانپذيره، فقط بايد برنامتون رو بزاريد تا بشه براتون انجامش داد
ضمن اينكه كلا كار كردن با vsFlexGrid از سري كامپوننت هاي ComponentOne خيلي راحت تر و با امكانات بيشتر از DataGrid هست

m.4.r.m
دوشنبه 28 مرداد 1392, 10:35 صبح
Adodc1.Recordset.Fields(2) = Adodc1.Recprdset.Fields(0)+Adodc1.Recordset.Fiedls (1)

با این دستور می تونید و یا اینکه مقدار فیلد ها رو در بیاری و با هم جمع و تفریق کنید .

sField1 = Adodc1.Recordset.Fields(0)
sField2 = Adodc1.RecordSet.Fields(1)

sField3 = sField1 + sFiled2



ضمن اينكه كلا كار كردن با vsFlexGrid از سري كامپوننت هاي ComponentOne خيلي راحت تر و با امكانات بيشتر از DataGrid هست

تایید میشه .

Mohsen0025
دوشنبه 28 مرداد 1392, 21:21 عصر
سلام
من یه قسمت از پروژه رو گذاشتم پایین میتونید ببینید!!!
کل مشکل من قسمت محاسبش هست
وقتی ADD میکنه یه بار که جمع میزنه اگه دوباره کلیک کنه دوباره جمع میزنه!!! که نمیخوام!!
بعد وقتی که ویرایش رو میزنی مثلاً 10 تا سند میزنی سند 5 رو میخوای ویرایش کنی همش بهم میریزه!!!
ممنون میشم اگه کمکم کنید خیلی خیلی کارم گیره:بوس:

m.4.r.m
پنج شنبه 31 مرداد 1392, 01:50 صبح
من برات درستش می کنم فقط بگو دقیقا کجا می خوای چه اتفاقی رخ بده . کامل شرح بده.

vbhamed
پنج شنبه 31 مرداد 1392, 08:02 صبح
سلام
به عنوان نمونه اين تيكه كد رو اول Form_Load اضافه كنيد تا ستون اعتبار اوليه + هزينه ها شده و در ستون جمع اعتبارات ثبت بشه، البته فيلدهاي مبلغ رو بايد از نوع عددي بزاريد نه متني مگر در موارد خيلي خاص
Dim x As New ADODB.Command
Dim c As New ADODB.Connection

c.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\Shahrestanha.mdb;Jet OLEDB:Database Password=kambiz112;"

c.Open
c.Execute "Update Etebary Set JAMEtebarat = cstr(Val(EtbarAval) + Val(Hazineha))"
c.Close

Mohsen0025
پنج شنبه 31 مرداد 1392, 15:03 عصر
سلام
حامد جان تو form_load که میزارم برنامه هنگ میکنه من میخوام کاربر وقتی رو اضافه کردن زد تو فرم افزودن... قسمت محاسباتش درست بشه!! بعنی اگه کاربر 10 سند داره در قسمت اول و خواست سند 11 رو بزنه اگه اعتباری بود با بدهکارها جمع بشه و به مانده اضاف بشه و اگه سند(هزینه) بود به اسناد(هزینه ها) اضافه بشه و از مانده کم بشه!! واگه کاربری خواست سند پنجمی و یا هر سند دیگه رو ویرایش کنه جمع ها به هم نریزه مثال:
ما میخوایم سند 7 رو ویرایش کنیم که جمع اعتبارات اولیه 5000 هستش و جمع هزینه ها 2000 و مانده 3000 اگه کاربر خواست ویرایش کنه و به قسمت اسناد(هزینه) که 2000 هست 1000تای دیگه اضاف کنه جمع به این صورت باشه:: جمع اعتبار اولیه 5000 و هزینه ها 3000 و مانده 2000 ::
بر عکس هم همین طور اگه خواست اضاف کنه 1000 تای دیگه فقط همون هزار تا به مانده اضاف بشه!!
این محاسباتی که من انجام دادم نمیشه اگه اعتبارات من 10تا باشه و خاستم دوباره ویرایش کنم و 5تا دیگه بهش اضاف کنم به مانده به جای اینکه 5 تا دیگه اضاف بشه 15تا اضاف میشه!!!
بعد تو datagride که در صفحه اول هست تمام جمع ها update بشن یعنی اگه سند 7 که ویرایش کردیم datagride و فایل اکسس(دیتابیسمون) هم جمع و تفریقاش update بشه!!!
لطفاً راهنمایی کنید!!

vbhamed
پنج شنبه 31 مرداد 1392, 17:46 عصر
سلام
شما بايد بعد از هر عملياتي اعم از اضافه، حذف، ويرايش با يك حلقه كل ركوردها رو پيمايش كنيد و مجددا محاسبات رو انجام بدين
محاسبه هم كه كاري نداره، يك متغير براي اعتبارات و يكي براي هزينه ها در نظر مي‌گيريد و تو هر ركورد اعتبارات اون ركورد رو به متغير اعتبارات و هزينه اون ركورد رو به متغير هزينه اضافه مي‌كنيد و مانده اون ركورد هم كه با داشتن اين دو متغير قابل محاسبه هست

Mohsen0025
پنج شنبه 31 مرداد 1392, 18:32 عصر
سلام
اگه میشه مثالی بزنی؟(رو پروژه ای که Up کردم!! بنویسی و Upکنی مجدداً) اگه زحمتی نیست!!!
مر30
ممنون

vbhamed
شنبه 02 شهریور 1392, 07:18 صبح
سلام
اينم نمونه، فقط قسمت ويرايشتون كلا مشكل داره كه وقتي درستش كنيد عمليات مانده گيريش اتوماتيك انجام ميشه

Mohsen0025
شنبه 02 شهریور 1392, 10:14 صبح
سلام آره:
تو modal1 جایی که نوشته ID=2و.. اونا رو به 4 تغییر بدین درست میشه. اینطوری:
Public ID4 As Long
Public Add_or_Edit4 As Boolean
Public Refresh_list4 As Boolean
===================================
مانده گیری رو انجام نداد:افسرده:
=======================

من میخوام کاربر وقتی رو اضافه کردن زد تو فرم افزودن... قسمت محاسباتش درست بشه!! بعنی اگه کاربر 10 سند داره در قسمت اول و خواست سند 11 رو بزنه اگه اعتباری بود با بدهکارها جمع بشه و به مانده اضاف بشه و اگه سند(هزینه) بود به اسناد(هزینه ها) اضافه بشه و از مانده کم بشه!! واگه کاربری خواست سند پنجمی و یا هر سند دیگه رو ویرایش کنه جمع ها به هم نریزه مثال:
ما میخوایم سند 7 رو ویرایش کنیم که جمع اعتبارات اولیه 5000 هستش و جمع هزینه ها 2000 و مانده 3000 اگه کاربر خواست ویرایش کنه و به قسمت اسناد(هزینه) که 2000 هست 1000تای دیگه اضاف کنه جمع به این صورت باشه:: جمع اعتبار اولیه 5000 و هزینه ها 3000 و مانده 2000 ::
بر عکس هم همین طور اگه خواست اضاف کنه 1000 تای دیگه فقط همون هزار تا به مانده اضاف بشه!!
این محاسباتی که من انجام دادم نمیشه اگه اعتبارات من 10تا باشه و خاستم دوباره ویرایش کنم و 5تا دیگه بهش اضاف کنم به مانده به جای اینکه 5 تا دیگه اضاف بشه 15تا اضاف میشه!!!
بعد تو datagride که در صفحه اول هست تمام جمع ها update بشن یعنی اگه سند 7 که ویرایش کردیم datagride و فایل اکسس(دیتابیسمون) هم جمع و تفریقاش update بشه!!!
لطفاً راهنمایی کنید!!

vbhamed
شنبه 02 شهریور 1392, 11:28 صبح
سلام
كدي كه بهتون دادم ركوردهاي ليست رو آپديت مي‌كنه، شما بايد ثبت كنيد بعد تغييرات رو ببينيد

Mohsen0025
یک شنبه 03 شهریور 1392, 09:54 صبح
سلام
عمده مشکلات من در قسمت ویرایشش هست وقتی 50 تا سند داری و میخوای سند 30 رو ویرایش کنی و مبالغ رو عوض کنی می خوام کل مبالغ پایینیشم درست بشن و تو دیتا بیس Update بشن
من برای جلو گیری از refresh های بعد از اضافه کردن و یا ویرایش یک button به اسم بروزرسانی گذاشتم ولی فقط جمع هایی که تو فیلد ها هستش رو جمع میزنه ....

vbhamed
یک شنبه 03 شهریور 1392, 15:58 عصر
سلام
كدي كه دادم كل ليستتون رو محاسبه مي‌كنه

Mohsen0025
دوشنبه 04 شهریور 1392, 10:12 صبح
سلام
محاسبه کردن تو datagride مشکلی نیست و خودمم نوشته بودم براش من مشکلم اینه که اگه یه قسمتی رو edit کردم ما بقی اسناد هم طبق اون سند ویرایش شده جمع هاشون درست بشه هم تو بانک اطلاعاتی اکسس و هم تو دیتاگرید.......

باتشکر فراوان و ممنوم از تون

vbhamed
دوشنبه 04 شهریور 1392, 11:14 صبح
سلام
دوست عزيز، تا الان سه بار سؤالتون رو به روشهاي مختلف پرسيدين، من گفتم كل ركوردها محاسبه مجدد ميشه نگفتم تو گرايد يا جاي ديگه حساب مي‌كنم، اون محاسباتي كه انجام ميشه بانكتون رو آپديت مي‌كنه و اين يعني هم در گرايد درست ميشه هم هر ركورد جداگانه درست ميشه
مهم هم نيست كه ركوردي رو ويرايش كردين يا حذف يا جديد، كلا محاسبات دوباره براي همه ركوردها انجام ميشه
اگر چيزي كه مي‌بينيد مورد نظر شما نيست شايد سؤالتون رو طبق منظورتون مطرح نكردين يا من دقيق متوجه نشدم در هر حال مي‌تونيد يك نمونه تصوير از گرايدي كه محاسباتش طبق نظر شماست بزاريد تا بيشتر بررسي بشه

Mohsen0025
دوشنبه 04 شهریور 1392, 14:08 عصر
سلام
درود بر تو درسته حق با شماست من جمع اعتبارات و جمع هزینه ها رو میدیدم که تغییر نمیکرد گفتم.
الان درسته دمت گرررررررم فقط اگه بشه به هنگام ویرایش ، جمع اعتبارات و جمع هزینه ها هم درست بشه خیلی خوب می شد
ای ول داری.
مر30

vbhamed
سه شنبه 05 شهریور 1392, 22:23 عصر
سلام
يك نسخه از برنامه كه ويرايشش كار كنه بزاريد

m.4.r.m
سه شنبه 05 شهریور 1392, 22:41 عصر
خوب همین کد رو که حامد جان براتون درست کرده دقیقا در ویرایش قرار بدید بعد از محاسبات فیلد ها رو Update کنید تمام شود . به همین راحتی

Mohsen0025
چهارشنبه 06 شهریور 1392, 13:26 عصر
حامد جان دمت گرم ممنونم
درستش کردم خیلی مردی به خدا
دمت گرم

sahebm2
یک شنبه 10 شهریور 1392, 18:48 عصر
سلام دوستان
من میخوام کل رکوردهایی که توی یه فیلد هست با هم جمع بشه
تو عکسی که گذاشتم مشخص کردم
قسمتی که انتخاب شده میخوام با هم جمع و تو یه جدول دیگه بره یا توی یه txtbox بره
http://bayanbox.ir/id/1481071870888030194?info

SlowCode
یک شنبه 10 شهریور 1392, 19:40 عصر
سلام
select sum(saat_kol) from pardakhti

m2011kh
یک شنبه 10 شهریور 1392, 22:07 عصر
سلام آقا محسن.

ظاهرا دوستان راهنمایی تون کردن فقط اگه اون فرمی که عکسش رو گذاشتید فرم برنامه تون هست یه سری توصیه داشتم که نامرتبط با موضوع هستش.

کاراکتر (:) در لیبل ها سمت چپ اومده که بهتره خاصیت RightToLeft رو مساوی True قرار بدید.مشکل حل میشه.

تکست هایی که قراره متن و کاراکتر فارسی در اون تایپ بشه رو مانند لیبل Right To Left شون رو True کنید و Alignment شون رو هم Right Justify کنید.

این باعث میشه کاربر در هنگام تایپ متن و مخصوصا ویرایش متن اذیت نشه.البته رو کارایی نرم افزارتون تأثیری نداره ولی بهتره برنامه تون هر چه بیشتر User Friendly(کاربر پسند) باشه.

در ضمن این جمله:


ضمن اينكه كلا كار كردن با vsFlexGrid از سري كامپوننت هاي ComponentOne خيلي راحت تر و با امكانات بيشتر از DataGrid هست

کاملا تأیید میشه.:لبخند:

موفق و سربلند باشید.

MMD

sahebm2
دوشنبه 11 شهریور 1392, 09:52 صبح
میشه لطفا کامل بنویسی
این کد رو مساوی text قرار دادم اما جمعشون وارد text نمیشه
کد وی بی رو میتونی بزار لطفا
FlatEdit1.Text = Adodc2.RecordSource = "select sum(saat_kol) from pardakhti"