PDA

View Full Version : دوتا سوال از بانک اکسس در VB



hamidreza2007
سه شنبه 03 شهریور 1388, 00:51 صبح
سلام..من توی بانک همه فیلد ها رو برای اینکه حافظه کمتری بگیره از string های محدود گرفتم
مثلا نام string 20 تایی یا محل اقامت 15 تایی و....
حالا توی vb وقتی میخوام لیستی رو فیلتر کنم مثل زیر :
Adodc2.RecordSource = "SELECT * FROM Tbl_Faktor WHERE ID_Moshtari=" & Me.Adodc1.Recordset.Fields(0(
Me.Adodc2.Refresh

Set dg_Hesab.DataSource = Adodc2.Recordset
چون فیلد ID_Moshtari رو از string گرفتم نمیتونه فیلتر کنه و پیغام
Data type mismatch in criteria expression.
رو میده...
اگه راهی هست بگید...
اگه هم از integer یا longint بگیرم مشکل اینجا حل میشه ولی نبرا فیلتر کردن نام چی ؟؟؟ اونم از number بگیرم ؟؟؟!!!!!!!!!!!
توجه: از فیلتر خود adodc هم خوشم نمیاد...با دستورای SQL دست آدم برا گزارش و جستجو باز تره......
____________________________________________
2...آقا من برای زدن شماره فاکتور به صورت اتوماتیک چندتا روش رو رفتم ولی جواب نداده
روش auto number که اگه یکی از رکوردها رو پاک کنیم قاطی میکنه و درست جواب نمیده
روش بدست آوردن بزرگترین عدد با دستور SQL و به اضافه 1 هم ایراداتی داره که جواب نداد
روش اینکه یه Move Last بکنه و بره آخرین رکورد رو بگیره و به اضافه یک کنه هم جواب نمیده چون
ممکنه کاربر لیست رو با دستور SQL فیلتر کرده باشه و یه اسمی رو پیدا کرده باشه بعد اگه ما move last
کنیم اون اسم گم شده و میره رو آخرین اسم....!!!

حالا چیکار کنم ؟؟؟؟

ممنون.:لبخندساده:

vahidm
سه شنبه 03 شهریور 1388, 04:53 صبح
سلام دوست عزیز کدتون که مشکل داره اگر امکانش هست سورس رو بذارید تا براتون درست کنیم

majid325
سه شنبه 03 شهریور 1388, 05:13 صبح
برای ارسال پارامتر از نوع string باید پارامتر رو بین دو تا کوتیشن قرار بدید:

Adodc2.RecordSource = "SELECT * FROM Tbl_Faktor WHERE ID_Moshtari='" & Me.Adodc1.Recordset.Fields(0)& "'"

hamidreza2007
سه شنبه 03 شهریور 1388, 13:54 عصر
برای ارسال پارامتر از نوع string باید پارامتر رو بین دو تا کوتیشن قرار بدید:

Adodc2.RecordSource = "SELECT * FROM Tbl_Faktor WHERE ID_Moshtari='" & Me.Adodc1.Recordset.Fields(0)& "'"

آقا دمت گرم...یه دنیا ممنون...کلی خوشحال شدم...:تشویق: :تشویق: :تشویق: :تشویق: :تشویق: :تشویق::تشویق::تشویق::تشویق:
حالا درمورد زدن اتوماتیک شماره برای صفحه کمکم کنید.
راستی راهی نیست که بشه مثلا الان شماره 20 هستیم حالا اگه چندتا از فاکتورا مثلا فاکتور شماره 8 و 9 رو پاک کردیم عدد بعدی 8 و بعدی 9 و باز از 20 شروع بشه ؟

hamidreza2007
جمعه 06 شهریور 1388, 00:10 صبح
آقا تورو خدا در مورد اون سوال کمکم کنید....
پروژه پایان ترمم هست....

majid325
جمعه 06 شهریور 1388, 01:49 صبح
راه که هست ، ولی باید خودت پیاده سازیش کنی ،
1- موقع ثبت رکورد باید جدول رو مرتب کنی و بگردی تا شماره های که با رکورد بعدی 2 تا فاصله دارن رو پیدا کنی و ادامه کار ...
2-هر موقع که رکوردی delete کردی همه مقدار رکورد های بعد از آن را یکی شیفت دهی پایین ...
در روش اول کارایی سیستم کلاینت پایین میاد و در روش دوم کارایی سیستم سرور
اگه بتونی سناریوت رو جوری عوض کنی که به این مشکل بر نخوری خیلی صرفه جویی کردی.

hamidreza2007
جمعه 06 شهریور 1388, 01:59 صبح
راه که هست ، ولی باید خودت پیاده سازیش کنی ،
1- موقع ثبت رکورد باید جدول رو مرتب کنی و بگردی تا شماره های که با رکورد بعدی 2 تا فاصله دارن رو پیدا کنی و ادامه کار ...
2-هر موقع که رکوردی delete کردی همه مقدار رکورد های بعد از آن را یکی شیفت دهی پایین ...
در روش اول کارایی سیستم کلاینت پایین میاد و در روش دوم کارایی سیستم سرور
اگه بتونی سناریوت رو جوری عوض کنی که به این مشکل بر نخوری خیلی صرفه جویی کردی.


ممنون
اینا به فکر خودمم رسید ولی خیلی سرعت رو میارن پایین:ناراحت:
بابا پس این برنامه های حسابداری از چه روشی استفاده میکنن ؟؟

majid325
جمعه 06 شهریور 1388, 02:08 صبح
بابا پس این برنامه های حسابداری از چه روشی استفاده میکنن ؟؟
از روش اول.

اگه صحیح کار کنی روش اول بد جواب نمیده ولی کلا این کار اشتباه است ، یعنی اگه تو برنامه ای هم دیدی اشتباه هست:
تو برنامه های که تراکنش ها حساس داره (مخصوصا پروژه های مالی) هیچ سندی حذف نمیشه ، حتی اگه نیاز به حذف هم باشه با یه فیلد Flag رکورد رو به حالت حذف میبرن ولی حذف نمیکنن.
(هیچ وقت شماره فاکتور حذف نباید بشه)
چه نیازی هست که شماره فاکتور ها پشت سر هم باشه؟

hamidreza2007
شنبه 07 شهریور 1388, 00:09 صبح
آقا بالاخره از روش زیر حلش کردم...خوبم جواب میده...
میام یه move last میکنم...بعد فیلد شماره سند رو میخونم و یکی اضافه میکنم بهش برا بعدی....

از جناب majid325 (http://www.barnamenevis.org/forum/member.php?u=18075) هم نهایت تشکر رو دارم....مثل اینکه اینجا فقط همین یه کاربر فعاله...
بازم ممنون