امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
لطفا كمك كنيد نياز فوري دارم
نویسنده پیام
v-mashmoolie آفلاین
كاربر دو ستاره
**

ارسال‌ها: 168
موضوع‌ها: 7
تاریخ عضویت: تير ۱۳۸۳

تشکرها : 0
( 3 تشکر در 3 ارسال )
ارسال: #12
 
سلام
یه خبر خوب Biggrin Biggrin Biggrin و یه خبر بد . :cry: :cry: :cry:
متاسفانه یکی از کندترین روشهای یادگیری ، روش سعی و خطاست .
من با همین روش بالاخره تو نستم مشکلی رو که در بالا در مورد عوض شدن مسیر دیتا بیس بود رو حل کنم و چندین بار رو دو تا سیستم و سه جور ویندوز تست کردم تا مطمئن شم .
اما روش
ببینید ما دو حالت برای ارتباط با بانک اطلاعتی در Data Environment داریم در هر حالت از یکسری کدهای مخصوصی استفاده می کنیم .
حالت اول استفاد از DAO هست که من از نسخه چهار استفاده می کنم . در این حالت می شه با هر اکسسی ارتباط بر قرار کرد . برای برقراری ارتباط من ابتدا کدها رو به صورت دستی می نویسم بعد در قسمت کد نویسی Dataenvironment این کد رو می نویسم .

کد:
Private Sub DataEnvironment_Initialize()
  path = App.path & "\data.mdb"
de.cn1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & ";Persist Security Info=False"
End Sub
و بعد هنگام لود شدن گزارش این دستور باعث می شه که دیتا بیس درست انتخاب بشه . البته می شه در ابتدای اجرای برنامه یعنی در فرم رمز گیری یا فرم لود برنامه اصلی می شه یه آدرسی رو گرفت و در یک TEXT BOX قرار داد و بعد بجای اینکه در متغیر PAT مسیر جاری رو بدیم محتویات اون تکست رو بزاری . این روش کاملاٌ امکان داره و اجرا می شه . فقط باید یه چیزی رو در نظر گرفت اون هم اینکه باید بعد از اینکه دیتا ریپورت نشون داده شد وقتی فرم رو می بندیم باید اونو کلاٌ Unload کنیم . چون دفعه بعد که می خواد لود بشه اگه تو حافظه باشه و دستوراتی که گفتم اجرا بشه مشکل بوجود میاد . یعنی نمی تونه دوبار آدرس دهی کنه . برای Unload کردن Dataenvoronment هم می شه از یه کلید استفاده کرد . مثلاٌ کلیدی که باعث می شه گزارش نشون داده بشه در این قسمت ابتداCall Unload (dataenvironmext name) 1 نوشته بشه بعد دستور نمایش ریپورت رو بنویسم . یا اینکه در صفحه ای که می خواهیم از اونجا دیتا ریپورت رو نشون بدیم در خاصیت Form Load اون صفحه بیاییم و Dataenvironment رو Unload کنیم .
من در اجرای این روش در یک حالت به مشکل برخورد کردم اون هم اینکه متاسفانه رو دیتابیس هایی که پسورد دارن جواب ندارد . برای حل این مشکل هم از روش دوم استفاده کردم .


در روش دوم از OLEDB استفاده می شه . در این حالت دقیقاٌ مثل روش اول ابتدا DataEnvironment و Datareport به صورت دستی تعریف می شن و در قسمت کد نویسی Dataenvironment این کد نوشته می شه .
کد:
Private Sub DataEnvironment_Initialize()
  Dim path As String
  path = loadform.bp.Text
  dr1.cn1.Open "provider=MSDASQL.1;Password=rsgaddress;Persist Security Info=True;User ID=admin;Extended Properties=" & "DBQ=" & path & ";DefaultDir=E:\address;Driver={Driver do Microsoft Access (*.mdb)};DriverId=25;FIL=MS Access;FILEDSN=E:\address\abb.vmn.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;PWD=rsgaddress;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"
End Sub
در اين قسمت مي تونين آدرس پيشرفض ديتا بيس رو كه E:\address\abb.vmn در نظر گرفتيم رو به آدرس PATH‌عوض كنين براي اين كار بجاي آدرس اينو مي شه نوشت
" & path & "
ولي اگه ننويسيم هم مشكلي نيست .
البته باید باز مثل روش اول در هنگامی که دیتا ریپورت فراخوانی می شه ابتدا بیاد دیتا انویرونمنت رو آن لود کنه بعد دیتا ریپورت رو فراخوانی کنه . یا اینکه در صفحه ای که می خواهیم از اونجا دیتا ریپورت رو نشون بدیم در خاصیت Form Load اون صفحه بیاییم و Dataenvironment رو Unload کنیم .
البته روش تنظیم Data Environment هم تقریباٌ مثل روش DAO هست که اگه نتونستین انجام بدین بفرمایین تا اینجا این روش رو هم بنویسم .

خلاصه در نهایت من با این روش تو نستم مشکل محل دیتا بیس رو حل کنم و یه برنامه نمونه هم اگه وقت شد می زارم تو سایت تا دقیقاٌ کدها در اختیارتون باشه .


اما یه مشکل دیگه . این یکی خیلی خیلی سخته . با این روشها ما مقدار تمامی رکوردهایی که فیلد اون رو در دیتا ریپورت قرار دادیم نشون داده می شه . مثلاٌ وقتی فیلدNAME رو قرار می دیم تمامی اسامی نشون داده می شه . حالا چطور می شه کاری کردی که یکسری از فیلدهای خاص مثلاٌ با یک شرط مثل اینکه تمامی اسامی توش الف باشه نشون داده بشه . یعنی یه حالت گزارشگیری از داده ها ؟

رو اینم کار می کنم و نتیجه رو می گم

با تشکر - مشمولی
(آخرین ویرایش در این ارسال: ۳۰-بهمن-۱۳۸۳, ۱۶:۰۶:۳۰، توسط v-mashmoolie.)
۳۰-بهمن-۱۳۸۳, ۱۵:۳۲:۵۰
ارسال‌ها
پاسخ
v-mashmoolie آفلاین
كاربر دو ستاره
**

ارسال‌ها: 168
موضوع‌ها: 7
تاریخ عضویت: تير ۱۳۸۳

تشکرها : 0
( 3 تشکر در 3 ارسال )
ارسال: #13
 
چرا اینطوری شد . عرض فرم چرا اینقدر زیاد شد . :?: :?:
۳۰-بهمن-۱۳۸۳, ۱۵:۳۴:۴۶
ارسال‌ها
پاسخ
NabiKAZ آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 520
موضوع‌ها: 48
تاریخ عضویت: اسفند ۱۳۸۲

تشکرها : 6
( 60 تشکر در 46 ارسال )
ارسال: #14
 
سلام
مشمولي عزيز از توضيحات خوبيت ممنونم . روي روشت كار ميكنم حتما ...


در مورد عرض فرم هم من ميدونم چرا ..!
وقتي كه بين كلمات space بخوره . كلمات تو يه خط چيده ميشه تا زماني كه خط جا نداشته باشه اون وقت در جايي كه آخرين space وجود داره اينتر ميخوره . اما در كدي كه قرار دادي كلمه اصلا فاصله نداره . پس نميتونه اونو بشكونه و بره سر خط ! پس تنها راهش اينه كه عرض table رو افزايش بده ...مثه صفحه اول سايت كه به خاطر Parameters.CreateParameter عرض تيبل نمايش پستهاي آخر زياد شده !!!

البته ميدونم كه ميدونستي و ما رو سر كار گذاشتي Amaze
حالا عوضش تو بهم ياد بده چطوري بك گراند ويندوز رو عوض كنم :wink:

۳۰-بهمن-۱۳۸۳, ۱۵:۵۷:۳۵
وب سایت ارسال‌ها
پاسخ
v-mashmoolie آفلاین
كاربر دو ستاره
**

ارسال‌ها: 168
موضوع‌ها: 7
تاریخ عضویت: تير ۱۳۸۳

تشکرها : 0
( 3 تشکر در 3 ارسال )
ارسال: #15
 
سلام

اولاً نوشته قبلي يكسري ايراد داشت كه درستش كردم

ثانياً اگه من بلدم كسي رو سر كار بزارم اول خودمو استخدام مي كنم . Amaze

ثالثاً مي گن براي عوض كردن بك گراند بايد روي دسك تاپ كليك راست كني و يكسري كارهاي ديگه . البته من همشو مي دونم ولي رو دو تا موضوع گير كردم و اولاً اين دسك تاپ كه مي گن كجاست و كليك راست يعني چي ؟ :?: :?: :?: Amaze Amaze Amaze

بهر حال اگه فرصت شد امشب يكسري مطالب آموزشي و يه برنامه نمونه مي زارم تو سايت
۳۰-بهمن-۱۳۸۳, ۱۶:۱۰:۳۷
ارسال‌ها
پاسخ
navidal آفلاین
كاربر تک ستاره
*

ارسال‌ها: 48
موضوع‌ها: 5
تاریخ عضویت: دى ۱۳۸۳

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #16
 
سلام دوستان
اول در مورد مسير بانك بگم كه من خودم هميشه در برنامه هام از روش زير استفاده مي كنم و مشكلي هم نداشتم
کد:
Path = App.Path & "\Database.mdb"
DataEnvironment1.Connection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path & ";Persist Security Info=False"

در مورد سوال مشمولي عزيز هم بگم كه با استفاده از دستورات sql مي تونيم هر جور كه بخواهيم گزارش بگيريم يه روش با استفاده از كدنويسي داخل برنامه هست يه روش ساده تر هم اينكه در داخل DataEnvironment روي Command اي كه فيلد هاي اون به ديتا ريپورت متصل شده كليك راست بعد properties و در قسمت Sql Statment هر دستوريSql رو كه خواستي بنويس و اون دستوري كه نوشتي روي ديتا ريپورت اعمال ميشه
مثلا همون مثالي كه خودت گفتي
'Select * From TabelName Where Name Like '%A
حالا اگه ديتا ريپورت رو Show كني ميبيني كه فقط نام كسايي هست كه اول اسم اونا A باشه.
۳۰-بهمن-۱۳۸۳, ۱۷:۲۴:۵۵
ارسال‌ها
پاسخ
v-mashmoolie آفلاین
كاربر دو ستاره
**

ارسال‌ها: 168
موضوع‌ها: 7
تاریخ عضویت: تير ۱۳۸۳

تشکرها : 0
( 3 تشکر در 3 ارسال )
ارسال: #17
 
سلام
روش استفاده از دستورات SQL بهترین و استاندارد ترین روشی هست که می شه انجام داد .
اما یه روش دیگه هم اینکه بیاییم و اطلاعاتی رو که می خواهیم از بانک جدول بگیریم و در یه جدول دیگه قرار بدیم . برای اینکار می تونیم فایلهایی ایجاد کنیم که وقتی برنامه اجرا می شه ایجاد بشن و وقتی از برنامه خارج می شیم از پاک بشن و یا در داخل خود بانک اطلاعاتی جدول ها رو بسازیم و بعد از اون جداول ریپورت بگیریم . البته این روش محدودیتهای بسیاری داره و فقط در شرایط خاصی جواب می ده .
بهر حال همون SQL بهتره .

خوب وقتشه که یه مقاله خوب در این مورد به همراه یکسری سورس تو سایت گذاشته بشه . اگه دوستانی که بلدن وقت داشته باشن لطف کنن که یاد گرفتن با سعی و خطا خیلی زحمت می خواد > دیگه بقیه دوستان زیاد مشکل نباشه و بتونن راحت یاد بگیرن .


با تشکر _ مشمولی
۳۰-بهمن-۱۳۸۳, ۲۱:۲۲:۳۷
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
myBB [فوری] لطفا راهنمایی کنید دوستان mohammad komail 0 1,878 ۰۳-خرداد-۱۳۹۳, ۲۲:۲۷:۵۰
آخرین ارسال: mohammad komail
  اين واژه را معني كنيد؟ gostaresh 8 12,601 ۲۵-اردیبهشت-۱۳۹۳, ۲۳:۴۳:۱۰
آخرین ارسال: اهورا منش
  مشکل ویندوز دارم لطفا جواب بدید ramin.joudi 2 3,185 ۰۸-آذر-۱۳۹۲, ۱۹:۵۷:۵۵
آخرین ارسال: ramin.joudi
Exclamation مشاوره ( لطفا راهنمایی کنید ) isz.k120 2 3,190 ۱۹-شهریور-۱۳۸۸, ۱۲:۴۲:۰۵
آخرین ارسال: mvig
  سوال مهم و فوري درمورد ديتاسنتر mina amini 3 4,397 ۲۲-دى-۱۳۸۷, ۱۴:۳۲:۲۳
آخرین ارسال: Rink8
  سوال فوري و تخصصي mina amini 4 3,807 ۲۲-آذر-۱۳۸۷, ۱۳:۲۸:۵۷
آخرین ارسال: Payman62
  لطفا يكي هم من را دعوت كنه ماري رز 3 3,232 ۰۹-خرداد-۱۳۸۶, ۰۴:۳۱:۱۱
آخرین ارسال: CRazYFULL
  از چه نرم افزاري جهت ساخت فايل هاي PDF استفاده مي كنيد Iron_Fist 19 13,658 ۲۱-تير-۱۳۸۵, ۲۰:۰۲:۲۵
آخرین ارسال: Blossom
  من چند تا سوال مهم دارم كمكم كنيد . MCG 2 3,782 ۳۰-دى-۱۳۸۴, ۲۰:۵۱:۳۶
آخرین ارسال: Iron_Fist
  شما چه نرم افزار دانلود منيجري رو پيشنهاد مي كنيد Iron_Fist 18 13,336 ۲۵-دى-۱۳۸۴, ۱۲:۰۱:۴۰
آخرین ارسال: Iron_Fist

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 7 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS