PDA

View Full Version : راهنمایی syntax در vba ؟



majid325
سه شنبه 21 فروردین 1386, 04:03 صبح
سلام دوستان:
Error کد زیر برای چیه؟

rstSerch.Open "SELECT Tb_Book.B_Code, Tb_Book.B_Publisher_Date_1 " _
& " FROM Tb_Book " _
& "WHERE (((Tb_Book.B_Code) Like Forms!frm_serch!txtCodeFind)"

davood-ahmadi
سه شنبه 21 فروردین 1386, 12:02 عصر
چه Error ی می ده اگر میشه توضیحات بیشتری بدین. یا اگر ممکنه نمونه بگذارید که خیلی بهتره.

شاپرک
سه شنبه 21 فروردین 1386, 12:32 عصر
rstSerch.Open "SELECT Tb_Book.B_Code, Tb_Book.B_Publisher_Date_1 " _
& " FROM Tb_Book " _
& "WHERE (Tb_Book.B_Code) Like " & Forms!frm_serch!txtCodeFind

davood-ahmadi
سه شنبه 21 فروردین 1386, 14:08 عصر
درسته شاپرک. من اصلاً حواسم جایه دیگه است. منو باش:اشتباه:

moustafa
سه شنبه 21 فروردین 1386, 18:04 عصر
برای سادگی کار همیشه کوئری رو بطور گرافیکی طرحی کنید درنمای sqlview کدهای اون رو مشاهده کنید یاکپی کنید به ماژولها

majid325
پنج شنبه 23 فروردین 1386, 04:34 صبح
دیدم مشکل جدیدم بی رابطه با عنوان تایپیک نیست گفتم همین جا مطرحش کنم.
ببخشید اگه میشه یه نگاه به این برنامه بکنید , نمیدونم مشکل چی هست که subForm فقط یک رکورد رو نشون میده؟به عنوان مثال کد 53 رو وارد کنید !
نمیدونم چرا زمان بایند کردن Erorr میگیره ؟(زمانی که با یهSELECT معمولی وارد میشم مشکلی نداره )

لطفا اگه مواردی هست که این سرچ رو بهتر میکنه دریغ نکنید.

majid325
شنبه 25 فروردین 1386, 10:10 صبح
این نمونه که با یه کم تغییر گزاشتم , مشکلی که داره اینه که رکوردست count=20 ولی یه رکورد در sub Form نشون میده؟
البته به اول sub boundDataFind کد زیر راه هم اضافه کردم ,حالا یه رکود رو در 20 تا سطر نشون میده؟

Set Me.subformSerch.Form.Recordset = rstSerch

majid325
یک شنبه 26 فروردین 1386, 08:16 صبح
جهت اطلاع دوستانی که ممکنه این مشکل بعدها براشون پیش بیاد:
جدولم رو از فایلServer به فایل Lib ایمپورت کردم:
یه subForm به صورت باند ساختم و در آخر رکورد سورس اون رو پاک کردم:
جدول رو از فایل lib پاک کردم و با دستور زیر رکوردستی که ساخته بودم رو به subForm نسبت دادم.

Set Me.subformSerch.Form.Recordset = rstSerch

majid325
دوشنبه 27 فروردین 1386, 09:11 صبح
امروز یه روش دیگه هم پیدا کردم که منطقی تر هستش:

با کد زیر خود subForm رو باند میکنی :

Set Me.subformSerch.Form.Recordset = rstSerch

و با این کد هر آجکتی رو که در subForm داریم رو باند میکنیم:

Me.subformSerch.Form.Controls.Item("txtFindB_Code").ControlSource = "B_code"

البته به جای کد دومی(باند کردن آجکت) میشه از این کد هم استفاده کرد:

Me.subformSerch.Form.Controls.Item("txtFindB_Code").ControlSource = rstSerch.Fields.Item("B_code").Name

majid325
دوشنبه 27 فروردین 1386, 09:41 صبح
فقط نمیدونم چرا نمیشه هیچ تغییری در متن txt ها بدم...انگار txt ها Locked شدن.

majid325
سه شنبه 28 فروردین 1386, 06:57 صبح
احتمال داره مشکل بالا از نحوه باز کردن رکوردست باشه:

rstSerch.Open "SELECT * From Tb_Book Where " & strWhere & " Order by Tb_Book.B_Code ; ", CnnSerch, adOpenKeyset, adLockOptimistic


یعنی کسی تا حالا یه subForm رو با رکوردست باند نکرده ؟

majid325
پنج شنبه 30 فروردین 1386, 14:38 عصر
سلام دوستان:
پیرو مطالب قبل این تایپیک به این نتیجه رسیدم که اگه بشه RecordSource یه subFom رو از طریق vba ست کرد (البته به جداول خارجی) مشکل edit هم رفع میشه. حالا کسی میدونه به چه صورت میشه این پروپرتی رو ست کرد؟ با کد زیر که نمیشه .

Me.subformSerch.Form.RecordSource = rstSerch.Source
البته اگه کانکشن رو با CurrentProject.Connection ست کنیم با کد بالا میشه ولی چون جداول
ما در CurrentProject نیست و ما کانکشن رو با Application.CurrentProject.Path ست میکنیم
نمیشه.