PDA

View Full Version : سوال: دریافت اطلاعات از اکسس به داخل لیست باکس



Mohsen0025
چهارشنبه 03 شهریور 1395, 17:49 عصر
سلام به دوستان عزیز.
من سه تا بانک اطلاعاتی دارم و چند تا لیست باکس.میخوام به صورت تفکیک شده هر کد و عنوان به صورت جدا داخل لیست باکس بیاد.خودم این کارو انجام دادم.
حالا میخوام اطلاعات دوتا بانک رو بگیره و به صورت تفکیک شده(مثل اونایی که خودم تو سورس نوشتم) داخل لیست باکس بنویسه.و مانده رو انتقال بده به لیست بعدی.
لطفاً سورس رو نگاه کنید.... نصفشو انجام دادم فقط تو دوتا بانک که بیاد گیر کردم:ناراحت: تو vb6 هستش

142143

vbhamed
پنج شنبه 04 شهریور 1395, 09:25 صبح
سلام
یک راه ساده اینه که جداول دو تا دیتابیس دیگه رو توی دیتابیس اولی لینک کنید، سپس با یک کوئری اطلاعات هر سه جدول رو با هم ترکیب کنید (به کمک UNION) و بعدش با اون Query مثل یک جدول واحد رفتار می‌کنید، اینطوری هیچ کدنویسی اضافی هم ندارید و فقط تو کد فعلیتون نام جدول رو به نام اون Query تغییر می‌دید درست مثل اینکه اطلاعات شما کلا در یک جدول ثبت شده، اینم کد Query
SELECT * FROM EtebaratDaryafti
UNION
SELECT * FROM MoavenatHa
UNION
SELECT * FROM shahrestanha;


یک نمونه براتون ضمیمه کردم، پوشه vb_net رو حتما در درایو C کپی کنید و دیتابیس رو تو اکسس باز کنید و کوئری qry_All رو ببنید، کار لینک کردن رو باید در درایو و پوشه مقصد انجام بدین و اگر مثلا روی کامپیوتری دیتابیس ها تو درایو C باشن و لینک کنید و بعد مکان دیتابیس ها رو عوض کنید دیگه کار نمیکنه، البته با کدنویسی میشه اطلاعات لینک جداول رو تعریف کرد یا تغییر داد که خودتون تو گوگل جستجو کنید

برای لینک کردن جداول بانکهای دیگه در بانک خودمون روی جالی خالی از پنجره دیتابیس کلیک راست و گزینه Link Table رو می‌زنیم، البته تو ورژنهای مختلف آفیس جاش فرق میکنه و ممکنه یکی به اسم Import و ... باشه که با یک جستجوی ساده بدست میاد

142168

142169

----------------------------------------------------------------------------------------------------

راه دوم هم اینه که یک جدول موقت شبیه جداول اصلی درست کنید و اطلاعات رو از جداول مختلف تو اون جدول درج کنید و سپس فرمتون رو بر اساس اطلاعات اون جدول تکمیل کنید، بهتره این جدول موقت توی یک دیتابیس جداگانه باشه که هر بار ساخته یا کپی میشه چون می‌دونید که حذف و اضافات متعدد سایز بانک رو بزرگ می‌کنه،
مثلا اسم بانک موقت dbtempEmpty.mdb باشه و هر بار یک کپی ازش با نام dbtemp.mdb بگیرید و اطلاعات موقتی رو درون dbtemp.mdb بریزید و پس از پردازش، فایل dbtemp.mdb رو پاک کنید
البته میشه از دستور CompactDatabase هم برای تفرق زدایی دیتابیس dbtempEmpty.mdb استفاده کرد ولی کاری که بالا گفتم راحت تر و بدون دردسر تره

Mohsen0025
جمعه 05 شهریور 1395, 17:47 عصر
سلام.مرسی حامد جان.
من این کاریو ک گفتین انجام دادم ولی همون مشکلی ک فرمودین رو داره اگه تو درایو d بزارینش حین جابه جایی مشکل پیدا میکنه.جستجو کردم در موردش ک بشه با کد نویسی پیداش کرد ولی چیزی پیدا نکردم.....

یه چیز دیگه اگه اون موردم حل بشه خوب میشه سه تا تیبل من ک بخوام مقدار هزینه هارو بگیرم قسمتی ک داره Sum(bes) as sum from etebardaryafti order by ....... خوب بعد از from من میخوام مقدار بستانکاریهای تیبل moavenatha و shahrestanha رو بگیره و جم کنه و هر کدوم تو ردیفی ک مشخصه بزاره.... مثل قسمتهاییی ک خودم انجام دادم..

ممنونم ازت حامد جان ک همیشه هستی.

vbhamed
شنبه 06 شهریور 1395, 10:27 صبح
سلام

در مورد کدنویسی یه مقدار بیشتر جستجو کنید پیدا میشه

در مورد دوم هم که گفتی هر چند راههایی هست ولی بهتره جداگانه اطلاعات رو استخراج کنید یعنی با یک دستور Sql از جدول اول با یکی دیگه از جدول دوم و ...، البته می‌تونید یک تابع هم بنویسید که نام جدول رو به عنوان پارامتر بگیره و از اون جدول اطلاعات رو استخراج کنه، اینطوری فقط سه بار فراخوانی تابع دارید، قبل از سه بار فراخوانی هم کل اطلاعات جدول موقت باید پاک شده باشه

Mohsen0025
شنبه 06 شهریور 1395, 19:22 عصر
سلام.
حامد حان اگه هرکدومو جداگانه لود کنم یعنی دوتا تیبل رو تو دوتا لیست بگیرم و بعد جمع اونا رو بریزم تو لیست قابل نمایش.....
اینطوری ک جمع درست نمیشه.. مثلا تو ردیف 106000 من چندین کد دارم مثل 1010 یا1020 و هر کدوم از این کدها هرکدوم فصل جدایی دارن تو کدی ک گذاشتم همونطور ک دیدین هرکدومو جداگانه لود میکنه و جمع میزنه.......
اگه این طور ک شما فرمودین خوب تو لیست قابل نمایش جمع درست در نمیاد.

من فقط گیرم تو اسناد و مانده هستش😢
اگه میشه یه نمونه بزارین مرسی میشم.
بازم سپاس ک هستی و کمک میکنی..

vbhamed
شنبه 06 شهریور 1395, 21:34 عصر
سلام
خب دلیلش اینه که دقیقا به محتوای پست 2 توجه نکردین
من گفتم شما اطلاعات رو از جداول مختلف به صورت جداگانه می‌خونی و همه رو در یک جدول موقت میریزی و تازه اینجا کار شما شروع میشه و حالا که همه اطلاعات تو این جدول موقت ریخته شد باید فکر کنی این یکی از جداولت هست و طبق همون پردازشی که برای مثلا جدول EtebaratDaryafti انجام دادی که بر اساس فصل ها جمع رو محاسبه کردی، همون کار رو برای این جدول جدید موقت انجام بدی، فرقش هم اینه که در این جدول همه اطلاعاتت هست پس همه فصل 2 ها رو با هم جمع می‌کنی و خروجی نهایی رو نشون میدی که البته اون کار هم یک دستور Sql گروهبندی شده خیلی ساده است

SELECT Faliat, sum(bes) FROM qry_All GROUP BY Faliat

Mohsen0025
یک شنبه 07 شهریور 1395, 22:08 عصر
سلام.
حامد جان مرسی....الان درست شد...الان فهمیدم چکار کنم.....
فقط یه مشکل هست اونم اینه ک اگه هزینه نداشت مقدار صفر اضاف بشه به list چون اگه مثلا تو کد 106000 هزینه نداشته باشیم و ردیف اول باشه ولی تو کد 18000 هزینه داشته باشیم و تو ردیف دوم باشه خوب تو لیست هزینه ها میاد تو ردیف اول قرار میگیره😢..اینو چطوری حل کنم.....

اون ###در مورد کدنویسی یه مقدار بیشتر جستجو کنید پیدا میشه#### والا هرچی گشتم هیچی پیدا نشد....

خییییییللللللیییییی مممممننننوووووننننمممم حامد جان😍😚😘😙😗

Mohsen0025
دوشنبه 08 شهریور 1395, 18:48 عصر
لطفا یکی کمک کنه.......

همون قسمت هزینه و ... رو بگه مثلا اعتبار 5 تا باشه ولی ما تو یکی هزینه داشته باشیم بقیه صفر باشن روبه روشون ولی تو اون کدی ک هزینه داشتیم روب روش هزینشو بنویسه...تو لیست باکسه.

ممنونم ازتون دوستات

vbhamed
دوشنبه 08 شهریور 1395, 20:34 عصر
سلام
منظورتون رو واضح تر با شکل توضیح بدید

Mohsen0025
چهارشنبه 10 شهریور 1395, 00:41 صبح
سلام حامد جان.
همون مثال که تو پست اول گذاشتم نگاه کنید شامل ردیف اعتباری،برنامه و عنوان، اعتبار دریافتی، هزینه و مانده اعتبار هستش.

اگه من تو لیست باکسی که به اعتبار دریافتی اختصاص دادم ک اطلاعاتو از اکسس میگیره..مثلا تو جدول ردیف و برنامه و اعتبار دریافتی 5 مورد که تو بانک هستش تو لیست load میشن ولی هزینه ها فقط مثلا تو یکی از کدها داریم بقیه دیگه هزینه ای نداریم.....برای اونی که مثلا تو ردیف دوم هستش یا سوم یا... مبلغ هزینش بیاد ولی واسه بقیه که هزینه انجام نشده صفر اضاف بشه....

مثلا:
1-کد16000 فصل2 اعتبار: 10.000 هزینه 0 مانده 10.000
2-کد 17000 فصل2 اعتبار: 2.000 هزینه:1000 مانده: 1.000
(تو این مثال 2 ردیف داریم اگه به صورت عادی همون query ک فرمایش کردین بگیرم.هزینه چون یکی داریم تو اولین ردیف listbox قرار میگیره درصورتی ک ما 2تا اعتبار داری از یکیشون هزینه شده و دیگری ن.)

تو لیست باکس ردیف و برنامه و اعتبار دریافتی مثلا 5 تا آیتم داریم تو listbox ولی فقط تو یک ردیفش فعلا هزینه ثبت شده بقیه فعلا اعتباراتشون هستش. تو لیست باکس جلوی اون ردیفی ک هزینه شده مبلغ هزینش بیاد.

مرسی حامد جان.

Mohsen0025
چهارشنبه 10 شهریور 1395, 20:23 عصر
سلام.
تو اکسس خودش نمیشه با query این کارو انجام داد؟؟؟؟؟؟بعد لودشون کنم...
من مشکلم فقط تو هزینس ک تو بعضی کدها مثلا هزینه نشده هنوز و تو بعضیاشون هزینه شده.. اونایی ک هزینه نشده تو لیست باکس صفر اضاف بشه...