ورود

نسخه کامل مشاهده نسخه کامل : چند سوال در مورد # C و پایگاه داده در آن



sanam.b
09-05-2009, 14:54
سلام به همه دوستان:40:

من دوباره برگشتم و قراره یه چند مدتی اینجا لنگر بندازم:31:، راستش پروژه کارشناسی من با #C قراره سیستم یک NGO(حمایت از بیماران خاص )رو بنویسم ، امیدوارم بهم کمک کنید تا مشکلاتم را حل کنم:11:

من با #C کار کردم اما نه بطور حرفه ای و با بانک اطلاعاتی در اون (کلا .NET) اصلا کار نکردم تجربه بانک اطلاعاتی من در حد اکسسه

در مورد سیستم نویسی هم به برنامه کوچک و اونهم در اکسس نوشتم.

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

خوب حالا شروع می کنیم

معادل auto number یا شماره گذاری خودکار در # C کدام نوع است؟

آیا میشه یک نوع type جدید ایجاد کرد که بتوان در بانک اطلاعاتی هم از اون استفاده کرد؟

اصلا داده جدید رو در # C چجوری ایجاد می کنند؟

فرض کنیم که این نوع داده جدید رو نوشتیم برای اینکه در کل برنامه از آون استفاده کرد کد اونو باید کجا نوشت؟

mahdi7610
09-05-2009, 23:30
معادل auto number یا شماره گذاری خودکار در # C کدام نوع است؟

سلام

همون طور که میدونید توی بانک اطلاعاتی اکسس یکی از انواع داده ها Auto Number بود كه در DataType های SQL Server وجود نداره .
اما می تونیم توی sql sarver هم این قابلیت را پیاده سازی کنیم .

برای این کار ابتدا یک فیلد به جدول مثلا به اسم Auto Number اضافه کنید و Data Type اون را از نوع int قرار بدید .

حالا به قسمت Column propertise این فیلد برید و علامت مثبت كنار Identity Specification را بزنید تا باز بشه . ابتدا Is Identity را برابر Yes قرار دهید با این کار Identity Specification نیز برابر Yes خواهد شد .

مقدار شروع در قسمت Identity Seed و میزان افزایش در هر دفعه ، در قسمت Identity Increment قرار خواهد گرفت . بهتره مقدار هر دوی اینها را برابر 1 قرار دهید . یعنی از 1 شروع شده و یکی یکی به مقدارش اضافه بشه .

در ضمن مقدار Allow Null باید تیک نداشته باشه و برای Default Value مقدار پیش‌فرض تعیین نگردد باشد .

موفق باشید :)

sanam.b
09-05-2009, 23:59
بازم سلام

مشکل جدید من ذخیره کردن عکس در بانک اطلاعاتی است ، در بانک اطلاعاتی نوع فیلد اون باید چی باشه و کدهای ذخیره سازی و بازیابی اون باید چی باشه؟

_H2_
10-05-2009, 01:28
سلام

اصلا داده جدید رو در # C چجوری ایجاد می کنند؟

مثل سایر زبانهای برنامه نویسی شما میتوانید با تعریف یک struct و یا class نوع جدید خود را بسازید و برای پشتیبانی اپراتورها هم میتوانید اپراتورها را overload کنید.

نمونه از از تعریف نوع جدید برای نگه داری مجموعه اعداد مختلط و پیاده سازی اپراتور جمع و...
msdn.microsoft.com/en-us/library/aa288467.aspx


فرض کنیم که این نوع داده جدید رو نوشتیم برای اینکه در کل برنامه از آون استفاده کرد کد اونو باید کجا نوشت؟
جای خاصی نمیخواهد !!!
شما میتوانید نوع تعریف خود را با یک Project->New Class شروع کنید و در محل استفاده میتوانید نام نام کامل فضا و نام نوع آنرا پیدا کنید.

(البته اگر struc و class های خاص زیاد دارید، بهتر است همه را لایه بندی شده در یک dll مستقر کنید.)


آیا میشه یک نوع type جدید ایجاد کرد که بتوان در بانک اطلاعاتی هم از اون استفاده کرد؟
شما میتوانید هر دیتایی را سریالی کنید و در فیلد varbinary جای دهید.
ولی برای داده های رکوردی، مثل نام-نام خانوادگی-تاریخ تولد و... شما میتوانید یک struct یا class تعریف کنید و در برنامه استفاده کنید ولی در ذخیره دیتابیس هر آیتم در یک ستون و فیلد جداگانه از دیتابیس و به قفرمت و نوع خودش ذخیره میشود.


مشکل جدید من ذخیره کردن عکس در بانک اطلاعاتی است ، در بانک اطلاعاتی نوع فیلد اون باید چی باشه و کدهای ذخیره سازی و بازیابی اون باید چی باشه؟
برای SQLServer2005/2008 بهترین نوع فید (varbinary(MAX است و برای SQLServer2000 (که امیدوارم پستتان به ان نخورد!) فیلد image را باید استفاده کنید.
کلاً طرز ذخیره فایل و از جمله عکس در دیتابیسها فرق خاصی با هم ندارد.
میتوانید از لینک زیر یک نمونه access را دانلود کنید:
h02.ir/Download.aspx?File=PictureInDatabase.zip

موفق باشید.

sanam.b
10-05-2009, 14:46
درود به همه (سلام داشت تکراری می شد)
من از SQL داخل سی شارپ که همون 2005 باشه استفاده می کنم
تنظیماتی مثل قرار دادن ماسک یا الگو و محدود کننده تعداد ارقام و تعیین پیغام خطا درصورت درست وارد نکردن اطلاعات و...... سایر تنظیمات ورود داده را در کجا برای SQL مشخص می کنند ؟

_H2_
11-05-2009, 12:45
سلام

تنظیماتی مثل قرار دادن ماسک یا الگو و محدود کننده تعداد ارقام و تعیین پیغام خطا درصورت درست وارد نکردن اطلاعات و...... سایر تنظیمات ورود داده را در کجا برای SQL مشخص می کنند ؟
برنامه SQLServer برابر و معادل نیست با Access و در یک رده هم نیستند.

در واقع خود Access یک پوسته است که از موتور JET استفاده میکند.
SQLServer و JET در یک ردیف و رده کاری هستند و البته شما هیچگاه JET پشت Access را نمی بینید! و در بسیاری مواقع مفهوم برنامه Access را برابر با مفهوم موتور JET حساب میکنند.

در کل اینها که گفتید UI و شمای دیداری برنامه است و ربطی به SQLServer و JET و... ندارد.
وظیفه اینها فقط ذخیره سازی و مدیریت انبوه اطلاعات است.
یعنی شما نباید دنبال این عناصر در داخل SQLServer بگردید

اگر شما میخواهید UI سفارشی و خاص با ماسک خاص و چیدمان و رنگ و طرح و... درست کنید، این مربوط به موتور پایگاه داده ها نمیشود، باید اینها را در خود برنامه تان پیاده سازی کنید، چه یک محیط مجازی اسکریپتی مثل Access و چه یک زبان برنامه نویسی واقعی کامپایلی مثل C#.Net.

در C#.Net شما باید از DataGridView و MaskedTextBox و NumericUpDown و DateTimePicker و TextBox و... استفاده کنید.
کنترلر DGV میتواند جدولی از اطلاعات را با فرمت نمایشی کاملاً دلخواه برای هر ستون نمایش دهد. (عنوان و رنگ و ماسک و...)
کنترلر MTB هم میتواند یک دیتای string را با ماسکی دلخواه نمایش دهد و از کاربر بگیرد
و...


اگر به C#.Net و کلاً دات نت مسلط نباشید، تقریباً انجام اینکار غیر ممکن است.
یعنی اول باید یادبگیرید و بعد ...

برای طراحی توسط خودتان دو راه و روش و سبک و... دارید:

1- یا اگر نرم افزار Access را بلد هستید و میتوانید با آن فرم و دکمه و پوسته و... برای بانکتان درست کنید.
میتوانید برای بازدهی بیشتر و کارکرد شبکه ای و استفاده از امکانات SQLServer و... اصل بانک و جداول را در آن مستقر کنید ولی فرم و دکمه و پوسته اش را با Access بسازید.
یعنی نرم افزار Access میتواند به SQLServer هم متصل شود و در یک سطح ساده و آسان تر و با دانش کمتر به کابرش اجازه دهد برای بانک یک پوسته کاری ساده بسازد!
البته طبیعتاً و همانطور که حتماً میدانید، کامپایل و exe ای در کار نیست ولی در عوض به دانش برنامه نویسی زیادی نیاز ندارد.

2- یا باید دانش دات نت و C#.Net را تکمیل کنید.
در این جهت و برای کارتان پیشنهاد میکنم حتماً pdf یا کتابی در خصوص ADO.Net مطالعه کنید، حتماً پس از اینکار راحت تر میتوانید این کار جاری را پیش ببرید.

موفق باشید.

sanam.b
16-05-2009, 13:38
سلام
باید برای تحویل گزارش پیشرفت مراحل پروژه پیش استاد برم،من بانک اطلاعاتی و جداول رو درست کردم اما هیچ گزینه ای رو پیدا نکردم که باون بتون ساختار بانک اطلاعاتی وجداول را چاپ کرد.آیا راهی برای اینک کار است؟(یا یباید بشینم دستی هر دوازده جدول و مشخصات اونها رو تایپ کنم )
ممنون میشم اگه راهنماییم کنید.

_H2_
16-05-2009, 23:17
سلام
برای چاپ جداول شما باید از ابزار گرازشگیری استفاده کنید.
دو تا رایگان در خود VS وجود دارد.
Microsoft Report و Crystal Report کافیست از Project->AddNewItem اقدام کنید.

sanam.b
21-05-2009, 23:20
سلام

مگه پول رو با currency معرفی نمی کنند پس چرا من نمی تونم اونو پیدا کنم :41:

من می خوام پراپرتی مجموع کمکها رو بنویسم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

مگه به جای اون ستاره نباید currency نوشته بشه اما در منویی که باز میشه کلمه currency وجود نداره.
اگه type پول عوض شده لطف کنید به من بگید یا راهنماییم کنید که چیکار کنم.

_H2_
21-05-2009, 23:35
سلام
برای واحد پول ایرانی با توجه به عدم معنای اعشار در واحد پول ما شما به راحتی میتوانید از نوع های بسیار سریع int و long استفاده کنید.
اگر هم میخواهید با دلار کار کنید(!) احتمالاً decimal بهترین انتخاب است و به نوعی معادل همان currency مرحوم است.

sanam.b
24-05-2009, 14:16
با سلام دوباره
من یه فرم به اسم form2 ایجاد کردم و روی اون چند تا منو و....دارم
می خوام با کلیک کردن روی form1 فرم دو باز بشه
در قسمت کدش هم نوشتم


Form form2=new Form();
form2.Show();


اما هنگام اجرای برنامه به جای فرم 2، یه فرم خالی واسه م میاره
لطفا روش صحیح ایجاد فرم و نمایش فرم جدید رو بهم یاد بدید

اگه لطف کنید بگید که دستورات بالا چه اشکالی دارد که درست جواب نمی دهد؟

_H2_
24-05-2009, 14:29
سلام
عزیزجان شما نام متغیرتان را form2 کرده اید! نام منتغیر که مهم نیست! چه x باشد چه form2 !
مهم type متغیر است.
کد صحیح:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sanam.b
27-05-2009, 21:00
سلام
برای ارتباط کنترلها به بانک اطلاعاتی و جداول دو راه هست

1- از طریق کد نویسی

2- از طریق تنظیم جدول properties

کدوم یک بهتره و دلیلش چیه؟

_H2_
28-05-2009, 01:30
سلام
طبیعتاً بدون کدنویسی و با bind ساده تر است و زودتر میتوانید جمعش کنید!
ولی این روش نیازمند استفاده از dataset است.

استفاده از dataset هم یک تیغ دولبه است!
از طرفی ترافیک شبکه کاهش پیدا میکند و از طرفی فشار زیادی به منابع سیستم کلاینت وارد میکند که اگر تعداد سطرها زیاد شود فاجعه آمیز خواهد شد.

(استفاده محدود طوری که تضمین کند همیشه کمتر از 100 سطر در dataset قرار دارد کار معقولی است ولی این تضمین کدهای بیشتری میطلبد)
=====
نظر شخصی من و اگر من جای شما بودم و فقط میخواستم کی از این دو روش را گرفته و پیش بروم...

اگر روی فرمم GridView داشتم و نتیجتاً مجبور بودم از DataSet را پرکنم از روش 2 استفاده میکردم.
(دلیل: dataset که برای grid لود شده و موجود است، چرا استفاده دیگری هم نکنیم؟!)

اگر GridView روی فرمم نبود و در هر لحظه میخواستم یک رکورد نشان داده شود یا از روش 1 با DataReader استفاده میکردم و یا از روش 2 با لود تعداد محدودی از سطرها (کل جدول را با دستور Fill در DataSet نمیریختم.
(دلیل: خواندن تمام فیلدها و سطرهای یک جدول بانک اطلاعاتی روی هارد و خالی کردن کامل ان در RAM بسیار بسیار کند است و خیلی زیاد به منابع سیستم فشار وارد میکند و اگر جدول ابعادی چند صد مگی داشته باشد، نتیجه فاجعه خواهد بود!)

sanam.b
28-05-2009, 11:12
با سلام دوباره
من فکر می کنم باید یکمی در مورد بانک اطلاعاتیم به شما توضیح بدم .در این سیستم سه نوع عضو داره ،اعضای پیوسته و وابسته و افتخاری. که مهمترین بخش سیستم مربوط به اعضای وابسته و پیوسته است.

اطلاعات اعضای پیوسته و وابسته هر کدوم سه فرم(اطلاعات فردی، پزشکی ومددکاری) در اندازه a4دارن که بعد از نرمال سازی تبدیل شد به 12 جدول که علاوه بر اون چند تا جدول دیگه هم در بانک اطلاعاتی وجود داره.

مثلا اطلاعات فرم پزشکی از 3 تا جدول مییاد و اگه قرار باشه کل اطلاعات مربوط به یکنفراز اعضای پیوسته نشون داده (در فرم، نه در data grid) باید اطلاعات همزمان از 9 جدول خونده بشه.

(من تصمیم گرفتم که کل این اطلاعات رو در یک tab control که دارای سه تا تب است نمایش بدم)

البته من پرس وجو ها رو هم در فرمهای نمایش میدم و کلا فکر نمی کنم که از data grid استفاده کنم .

جدولی که من اطلاعات فردی رو در اون ذخیره می کنم دارای یک فیلد با اسم نوع عضویت است که این فیلد برای اعضای وابسته و پیوسته و .. فرق می کنه و برای هر جستجوی کلی (مثلا اطلاعات اعضای پیوسته فکر نمی کنم بیشتر از300 تا رکورد داشته باشه )

حالا با این توضیحات فکر می کنید که من از طریق کد نویسی به بانک اطلاعاتی وصل بشم یا از طریق تنظیم جدول properties ؟

_H2_
29-05-2009, 00:46
سلام
به شما پیشنهاد میکنم با احتیاط از همان DataSet و به قول خودتان پنجره Properties استفاده کنید.

اگر مکانیزم ناوبری برای حرکت جلو و عقب بین پرونده افراد (اولین-قبلی-بعدی-آخرین) دارید ترجیحاً در صورتی که میتوانید یک سقفی برای پر کردن DataSet پیاده سازی کنید.
یعنی مکانیزیمی که فقط تا سقف 100 سطر اول بانک اصلی را در DataSet بارگذاری کند و کاربر بتواند به راحتی بین این اطلاعات ناوبری داشته باشد، بعد اگر زمانی کاربر خواست از این محدوده 0 تا 100 خارج شود کد شما خودکار تشخیص دهد و یا محدوده 50 تا 150 و یا 100 تا 200 را در DataSet با متد Fill پر کند...

طوری که کاربر درگیر این مسائل نشود ولی شما هم تضمینی داشته باشید که همواره دستور Fill شما تا یک سقف و منطقی مشخص DataSet را پر میکند.

=====

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

راه های پربازده دیگری را هم میتوان پیشنهاد داد، ولی ضمن کدنویسی بیشتر برای اغلب افراد مشکل خواهد بود.
موفق باشید.

_H2_
29-05-2009, 00:46
سلام
به شما پیشنهاد میکنم با احتیاط از همان DataSet و به قول خودتان پنجره Properties استفاده کنید.

اگر مکانیزم ناوبری برای حرکت جلو و عقب بین پرونده افراد (اولین-قبلی-بعدی-آخرین) دارید ترجیحاً در صورتی که میتوانید یک سقفی برای پر کردن DataSet پیاده سازی کنید.
یعنی مکانیزیمی که فقط تا سقف 100 سطر اول بانک اصلی را در DataSet بارگذاری کند و کاربر بتواند به راحتی بین این اطلاعات ناوبری داشته باشد، بعد اگر زمانی کاربر خواست از این محدوده 0 تا 100 خارج شود کد شما خودکار تشخیص دهد و یا محدوده 50 تا 150 و یا 100 تا 200 را در DataSet با متد Fill پر کند...

طوری که کاربر درگیر این مسائل نشود ولی شما هم تضمینی داشته باشید که همواره دستور Fill شما تا یک سقف و منطقی مشخص DataSet را پر میکند.

=====

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

راه های پربازده دیگری را هم میتوان پیشنهاد داد، ولی ضمن کدنویسی بیشتر برای اغلب افراد مشکل خواهد بود.
موفق باشید.

sanam.b
30-05-2009, 00:20
سلام

1- من یه user control به اسم استان درست کردم که شامل یک کمبو باکسه که اسم تمامی استانهای ایران توش هست
من چه جوری می تونم خروجی این کمبو رو ببینم؟
مثلا

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
من توی منویی که باز شده بود خیلی گشتم اما گزینه ای مثلtext یا item پیدا نکردم که بتونه متن انتخاب شده کمبوباکس رو برگردونه.

2- اگه ما بخوایم که متن textbox ما کاراکترهای خاصی باشند یا همون ماسک چه جوری اونو مینویسیم ؟
برای شماره ملی که به من گفتند 15 رقمی و بهصورت stringمعرفی شده
فکر می کنم باید از کاراکترهای گروهی مثل 0 ,#,…استفاده کرد اما نوشتنش چه جوریه؟

3- بر روی فرم فیلدی به اسم عکس هست من باید اندازه picture box رو چند بگیرم تا معادل 4*6 سانتی متر دربیاد؟ چون اندازه فکر می کنم برحسب پیکسل باشه

- یه فیلد هست به اسم کارگروه
که محتویات اون می تونه مددکاری-هنری- ارتباطات- روابط عمومی- انفورماتیک -تحقیق و آموزش است که هرکس می تونه یکی یا چند تا از اونرو باهم انتخاب کنه روی فرم باید با چه کنترلی اونو نشون داد?

_H2_
30-05-2009, 15:40
سلام
1)
شما یک کلاس جدید ایجاد کرده اید که وراثتی از UserControl است.
طبیعتاً نباید انتظار داشته باشید همینطوری property جدیدی به آن اضافه شود و خوش خودکار بفهمد چه متدهایی باید داشته باشد !


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
(البته میتوانید از override Text هم استفاده کنید ولی اصول کار همین است)

=====

ضمن اینکه اگر UserControl شما فقط و فقط همین یک ComboBox را دارد و چیزی دیگری روی آن قرار ندارد...
این عمل و کار شما چندان منطقی و صحیح نیست.
شما باید ار وراثت ComboBox به جای UserControl استفاده کنید، این عمل مزایای بسیار دارد.

=====

2)
برخی عباراتتان را متوجه نشدم.
برای ماسک میتوانید از کنترلر MaskedTextBox استفاده کنید.
ضمن اینکه میتوانید از TextBox عادی هم استفاده کنید و با رویداد KeyPress کاراکترهای نامطلوب را ف-ی-ل-ت-ر کنید.

در نهایت در بیشتر فرمهای کاغذی که کد ملی را میگیرند و بلوکهای مربعی برای درج کد ملی تعبیه میکنند، از خط تیره را صرف نظر میکنند و کد ملی را یک عدد 10 رقمی تصور میکنند.
نتیجتاً شما میتوانید به جای String از Long استفاده کنید.
(من خودم هم در پروزه ای همین کار را کردم)
بدون شک نوع Long سریعتر استو جای کمتری میگیرید و برای کد ملی منطقی تر هم است.

=====

3)
اول این را مشخص کنم که شما میتوانید تصویر را با کیفیت بیشتری ذخیره کنید ولی مجبور نیستید با همان ابعاد اصلی و بزرگ روی فرم نمایش دهید، برای نمایش در برنامه 100 یا 200 پیکسل ابعاد خوبی است.

تبدیل سانت به پیکسل برمیگردد به dpi تصویر.
در واقع dpi مشخص کننده تعداد پیکسل در یک اینچ است.
برای یک چاپ خوب و با کیفیت معمول از کیفیت 300dpi استفاده میکنند.
یعنی 300 پیکسل در هر اینچ.
یعنی 300 پیکسل در هر 2.54 سانتی متر!
یعنی 118 پیکسل در هر سانتی متر. (118 نه 120 !)
4cm*6cm=480px*720px


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اگر کیفیت بیشتر بخواهید و (البته چاپگر هم ساپورت کند) میتوانید dpi را بالاتر هم ببرید ولی 300dpi عدد مناسبی است.

=====

موفق باشید.

sanam.b
31-05-2009, 00:00
فکر می کنم یادتون رفت آخرین سوال رو جواب بدید
ولی در هرحال خیلی ممنون ، جواب های شما خیلی به من کمک کرده


ضمن اینکه اگر UserControl شما فقط و فقط همین یک ComboBox را دارد و چیزی دیگری روی آن قرار ندارد...
این عمل و کار شما چندان منطقی و صحیح نیست.
شما باید ار وراثت ComboBox به جای UserControl استفاده کنید، این عمل مزایای بسیار دارد.

ممنون میشم کمی بیشتر توضیح بدید

_H2_
01-06-2009, 11:14
سلام

فکر می کنم یادتون رفت آخرین سوال رو جواب بدید
احتمالاً بدلیل انکه یکم از چارت 1-2-3 خارج شده بود !



یکه هرکس می تونه یکی یا چند تا از اونرو باهم انتخاب کنه روی فرم باید با چه کنترلی اونو نشون داد?
به ذات فقط سه کنترلر دارید که میتوانند لیستی از CheckBox نمایش دهند.
به ترتیب خفنیت !!
CheckedListBox
ListView
DataGridView


ممنون میشم کمی بیشتر توضیح بدید
به همین سادگی !

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

1- حالا اگر پروژه را کامپایل کنید، متوجه میشود کنترلر جدیدی با نام Class به Toolbox اضافه شده.

2- کد جدید Items در کلاس فوق مانع سریالی توسط designer کامپونت خو اهد شد.
بدین معنی که اگر شما آیتم های فوق را در فرم کم یا زیاد کنید و برنامه را اجرا کنید، خواهد دید که تاثیری ندارد و فقط همان دو آیتم اولیه وجود دارند !

3- در رابطه اینن تعامل کد شما با designer خصیصه ها و مطالب دیگری هم وجود دارد، که حقیقتاً چندان در حوصله من نمیگنجد!

شما لطف کند و بگویید این combo استان شما چه شرایطی دارد تا من بهترین کد را پیشنهاد کنم.
مثلاً دیگر در روی فرم قرار است نام های لیست موجود در combo تغییر کنند؟
یا رنگ و style خاصی و شرایطی خاصی باید داشته باشد؟

sanam.b
01-06-2009, 13:58
با سلام
و خسته نباشید

کمبو باکس استان شامل نامهای استانهای کشور است و قرار نیست تغییر کنه و رنگ و استایل خاصی نداره


- کد جدید Items در کلاس فوق مانع سریالی توسط designer کامپونت خو اهد شد.
من نفهمیدم شما چی گفتید


یه سوال دیگه

من یه فرمی دارم که روی اون یک کنترل تب استکه 4 تا تب داره و حدودا یه 200 یا 300 کنترل شامل لیبل و تکست باکس و کمبو روش هست
و من یکی دیگه شبیه این باید بسازم با کمی تغییرات

من حوصله ندارم که دوباره بشینم و از اول یه فرم با این مشخصات بسازم، با کپی و پیست هم تاثیر نداره
مثلا فرم1 ،فرم اولی ما است ما اونو کپی می کنیم با اسم فرم 2 ولی name فرم 2 همان name فرم یک است و ما هر تغییراتی در فرم 2 بدهیم به فرم یک هم اعمال می شود

_H2_
02-06-2009, 01:51
سلام

کمبو باکس استان شامل نامهای استانهای کشور است و قرار نیست تغییر کنه و رنگ و استایل خاصی نداره
اگر دو combo دارید که یکی لیست دیگری را تغییر میدهد
(یکی لیست استان و یکی لیست شهرهای استان)

به نظرم بهتر است اصول لایه بندی را رعایت کنید، کد شما ساده تر خواهد شد...
در اینجا منظورم ان است که دیتا را از کد جدا کنید.
(اصلاً یک روش استاندارد است که تا حد امکان string و تصاویر و و منابع برنامه را در داخل کد قاطی نکنند و آنها در فایلی جداگانه نگه داری شوند تا تغییر و ویرایش دیتای برنامه راحت تر باشد.)

من یک مثال برایتان حاضر کردم.
همانطور که خواهید دید کد اصلی لازم در فرم برنامه بسیار کوتاه است و هیچ دیتایی در داخل کد برنامه و به صورت string خام نیامده.

تمام اطلاعات والد و فرزندی دو کامبو در داخل فایل SampleSteperListSource.xml قرار گرفته.
شما به راحتی میتوانید اطلاعات فایل فوق را ویرایش و کم و زیاد کنید و مثلاً به جایش نام استان و شهرها را درج کنید، بدون انکه یک خط از کدنویسی تغییر کند.
البته فایل مذکور در نهایت در داخل خود exe قرار خواهد گرفت و هیچ چیزی در بیرون نخواهد ماند، میتواند نسخه کامپایل شده را از پوشه Exe-Demo مشاهده کنید.

این مزیت بسیار بزرگی در طراحی برنامه است که برای هر ویرایش کوچکی نیار نباشد کد برای یافتن محل مورد نظر جستجو شود و سپس هم اصلاح شود و بعد هم کدهای دیگر متاثر شوند و....

در کل پیشنهاد من این است، ساده، منعطف و قدرتمند (8 کیوبایت!) :
لینک ثابت: support.h02.ir/fwlink/?linkid=1005223657
یا
لینک فعلی: h02.ir/Downloads/?familyid=9B955B8B-4ECE-4001-B81B-6A608CF58838

اگر فقط و فقط یک combo شامل لیست استان است، باز هم میتوانید از تکنیک فوق استففاده کنید و یا میتوانید دیتا را به داخل کد وارد کنید و از کد پست 21 استفاده کنید.

=====


من یه فرمی دارم که روی اون یک کنترل تب استکه 4 تا تب داره و حدودا یه 200 یا 300 کنترل شامل لیبل و تکست باکس و کمبو روش هستکنترل پنل هواپیما ساختید؟ بهتره یک فکری به حالش بکنید! tab بندی کنید... سعی کنید اگر میشود گزینه هایی را کاهش دهید و یا به فرم دیگری منتقل کنید و...


من حوصله ندارم که دوباره بشینم و از اول یه فرم با این مشخصات بسازم، با کپی و پیست هم تاثیر نداره
مثلا فرم1 ،فرم اولی ما است ما اونو کپی می کنیم با اسم فرم 2 ولی name فرم 2 همان name فرم یک است و ما هر تغییراتی در فرم 2 بدهیم به فرم یک هم اعمال می شود
درست متوجه سوالتان نشدم...
ولی میتوانید برای پرهیز از copy و paste ...
- از UserControl استفاده کنید و بخشهای مشترک را در آن تعبیه کنید تا در فرمهای مختلف قابل استفاده مجدد باشد..

- اگر دو فرم تفاوت ذاتی و کدی کمی دارند میتوانید یک فرم استفاده کنید و Visible کنترلرهایی که نباید در شرایط خاص دیده شوند را در زمان اجرا تغییر دهید.

- اگر دو فرم تفاوت یکم بیشتر و نه خیلی زیادی دارند میتوانید یک فرم پایه از امکانات اشتراکی درست کنتید و دو فرم دیگر را از این فرم وراثت بگیرید.

و...

موفق باشید.

sanam.b
25-07-2009, 18:10
بازم سلام ، من دوباره برگشتم

اشكال من مربوط به همون فرمي كه نمي خواستم دوباره از اول درستش كنم
وقتي مي خوام برنامه رو اجرا كنم اين error رو مي ده

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

peyvasteh1 اسم يك فرم است گه قبلا سر قضيه اون فرم اونو copy paste و rename كرده بودم و اما بعدا همه رو پاك كردم كردم و الان از اين فرم فقط يه دونه در برنامه هست
من بايد با اين error چيكار كنم و چه جوري درست ميشه

_H2_
25-07-2009, 23:54
سلام
بله این خطا در کدهای شما دیده بودم.
شما دو کنترلر با نام یکسان peyvasteh1 دارید!!!! البته جالب است که نام فایلشان چیز دیگری است ولی نام class عر دو یکسان است!
من که خودم متوجه نشدم کدام کدام است!! ولی یکی را حذف کردم و درست شد.

sanam.b
26-07-2009, 12:40
سلام
من فرمهاي اضافي رو حذف كردم، اما نمي دونم منظور شما از كنترلر چيه.
منون مي شم اگه بهم بگيد كه از كجا و چه جوري اونو حذف كرديد.

سوال بعدي

در يك فرم يك tab control داريم كه دو تا تب "درج"و"حذف" دارد .، مي خوام اگه در منو گزينه "درج" رو انتخاب كرديم فرم نشون داده بشه كه در اون تب "درج" انتخاب شده باشد. همين حالت هم براي گزينه "حذف" وجود داشته باشد يعني اگر در منو گزينه "حذف" انتخاب كرديم فرم نشون داده بشه كه در اون تب "حذف" انتخاب شده باشه.

_H2_
27-07-2009, 11:26
سلام

سلام
من فرمهاي اضافي رو حذف كردم، اما نمي دونم منظور شما از كنترلر چيه.
منون مي شم اگه بهم بگيد كه از كجا و چه جوري اونو حذف كرديد.

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

یک چیزهاییش درست یادم مانده بود ولی ....

شما یک فرم با نام فایل peyvaste.cs و peyvaste.Designer.cs دارید ولی نام برنامه نویسی این کد class peyvaste1 است!

یک فرم دیگر با نام فایل vabaste.cs و vabaste.Designer.cs دارید ولی نام برنامه نویسی این کد هم class peyvaste1 است!

طبیعتاً یک جایی در روند ساخت برنامه مشکلی پیش آمده و شما کار خودتان را ادامه دادی و نام فایل با نام کلاس نمیخورد ولی این مهم نیست و دلیل کامپالی نشدن کد شما وجود دو class peyvaste1 است که بهتر است محتویات چند خط اول این 4 فایل را به نامی برابر نام فایلشان تغییر دهید.


یعنی ...

- در peyvaste.cs و peyvaste.Designer.cs سه خط peyvaste1 را به peyvaste اصلاح کنید.

- در vabaste.cs و vabaste.Designer.cs سه خط peyvaste1 را به vabaste اصلاح کنید.

- در main.cs هشت خط peyvaste1 را به peyvaste اصلاح کنید.

(میتوانید حتی از Notepad هم استفاده کنید!)

حالا پروژه را با فرمان Rebuild Solution کامل کامپایل کنید.




سوال بعدي ...
منظور شما این بوده که چطور یک tab خاص از tabcontrol را انتخاب کنیم؟؟؟

شما با دو مشخص SelectedTab و یا SelectedIndex میتوانید tab نمایشی جاری را انتخاب کنید ...
مثلاً یک چیزی شبیه این کدها ...

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

موفق باشید.

sanam.b
27-07-2009, 11:53
بازم سلام

من كه با دوستان حرف مي زنم بحث پيش اومد كه اگر database روي يه گامپيوتر جداگانه باشد (ديتابيس روي سرور و برنامه در كامپيوترهاي ديگه اجرا مي شود) تعريف كانكشن فرق مي كنه آيا اين حرف درست است و اگه فرق مي كنه چه جوري فرق مي كنه؟

_H2_
27-07-2009, 12:08
سلام
مسئله خاصی نیست ...
در هر شرایط بهتر است برنامه شما طوری طراحی شود که در فرم "تنظیمات" به کاربرش اجازه دهد تا بتواند رشته اتصال به دیتابیبس را با کنترلرهای مرسوم تغییر دهید نه اینکه رشته اتصال در کل برنامه و تا ابد فیکس شده و ثابت باشد.
نمونه کد:
support.h02.ir/fwlink/?LinkId=1001372507

ولی بحرحال یک رشته اتصال عادی برای شبکه هم زیاد فرقی نمیکند و چیزی شبیه این خواهد بود:
(البته با نصب نسخه رسمی از SQLServer)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sanam.b
01-08-2009, 14:36
با درود فراوان

1- آیا کنترلها در سی شارپ رویدادی دارند که اگر tab از کنترل1 خارج شد بتوان محتویات آن کنترل را برسی کرد؟
مثلا یه textbox داریم که محتویات آن درصد است می خوام هنگامی که با تب یا ماوس از آن textbox خارج می شویم محتویات textbox را برسی شود که اولا عدد باشد ثانیا بین 0 تا 100 باشد.

2- bit با قابلیت null یعنی چی؟

mahdi7s
01-08-2009, 17:29
با سلام


آیا کنترلها در سی شارپ رویدادی دارند که اگر tab از کنترل1 خارج شد بتوان محتویات آن کنترل را برسی کرد؟

برای اینکار می تونید از رویداد Leave استفاده کنید.


مثلا یه textbox داریم که محتویات آن درصد است می خوام هنگامی که با تب یا ماوس از آن textbox خارج می شویم محتویات textbox را برسی شود که اولا عدد باشد ثانیا بین 0 تا 100 باشد.


می توانید برای اینکار از یه Masked TextBox استفاده و خاصیت mask آن را مناسب تنظیم کنید.
برای مثال برای اینکه text داخل Masked TextBox اعدادی بین صفر تا 99 باشند می توناید مقدار mask رو
برابر 00 قرار بدین.


bit با قابلیت null یعنی چی؟

فکر کنم منظورتون این باشه!!!(اگه نیست بگید ...)

شی های از نوع byte نمی تونند مقدار null داشته باشند.
چون byte یک ساختار هست و ساختار ها null پذیر نیستند.
و اما برای اینکه بتونیم یک ساختاری داشته باشیم که null پذیر هم باشه کافی است پس از نام ساختار یک
علامت سوال بیاریم.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


موفق باشید.

_H2_
01-08-2009, 17:56
سلام
ضمن تایید مطالب دوستم جناب mahdi7s دو مطلب کوچک را هم من اضافه کنم ...

مثلا یه textbox داریم که محتویات آن درصد است می خوام هنگامی که با تب یا ماوس از آن textbox خارج می شویم محتویات textbox را برسی شود که اولا عدد باشد ثانیا بین 0 تا 100 باشد.
این کار قابل انجام است ولی چرا از NumbericUpDown استفاده نمیکنید؟؟؟
واقعاً نمیدانم چرا خیلی از دوستان از این کنترلر خوب استفاده نمیکنند، حداکثر و حداقل و مقدار پله و تعداد اعشار قابل تایین است.


bit با قابلیت null یعنی چی؟
گمانم این را من گفته باشم!:31:
منظورم آن بود که در دیتابیس sqlserver فیلد را از نوع bit انتخاب کنید و سپس checkbox ای را که مربوط به null هم است فعال بگذارید بماند، که در این شرایط فیلد شما میتواند سه مقدار صفر و یک و null را بگیرد که البته معادل آن در دات نت ?bool یا ?Boolean خواهد بود.

جمیعاً موفق باشید.

sanam.b
02-08-2009, 12:16
بازم سلام

من برای مدرک تحصیلی یه user control درست کردم که شامل یه combo box است ،حالا می خوام در محتویات اون تغییر بدم اما هیچ گزینه ای رو پیدا نکردم که بتونم در حالت design محتویات اونو ببینم چه برسه به اینکه اونو تغییر بدم
وقتی برنامه رو اجرا می کنی راحت کار می کنه و هیچ مشکلی نداره .

در زمان ایجاد combo box یه مثلث کوچولو بالاش بود که با استفاده از اون می تونستی تغییرات بدی اما من حالا نمی تونم این مثلث کوچولو رو پیدا کنم

شاید من مراحل ایجاد user control رو نمی دونم
مراحلی که من می دونم اینه که از منوی project گزینه add new item رو انتخاب می کنی صفحه رو برات باز می کنی هر کنترلی که بخوای اضافه می کنی و کد هاشو می نویسی و برای اجرا کردنش هم باید برنامه رو rebuild کنی خوب من تا اینجاشو بلدم

اما سوالا

چه جوری میشه که user control به شکل یه چرخ دنده یاسمنی در toolbox قرار می گیره
و بعد از اون میشه میشه تغییرات در اون داد یانه؟

در toolbox برنامه من یه گروه به اسم user control وجود داشت که تمام user control ها در اونجا بودند

من برای حل کردن مشکل خودم دوباره یه user control به اسم test درست کردم درست بعد از rebuild کردن برنامه گروه user control که گفتم از toolbox حذف شد حالا نمی دونم چه جوری پیداش کنم.
چون برنامه برا ی تمام اون user control ها error میده یعنی صفحه فرم رو اصلا نشون نمی ده و میگه 40 تا error
داره.:41: :41:
اینجا شکلک گریه نیست؟

mahdi7s
02-08-2009, 12:37
با سلام


من برای مدرک تحصیلی یه user control درست کردم که شامل یه combo box است ،حالا می خوام در محتویات اون تغییر بدم اما هیچ گزینه ای رو پیدا نکردم که بتونم در حالت design محتویات اونو ببینم چه برسه به اینکه اونو تغییر بدم


خصیصه ی Items یک کلکسیون از ایتم ها رو نگهداری می کنه.
با استفاده از خصیصه های Displaymember و MemberValue به ترتیب می تونید ستون خاصی از یک دیتابیس رو نمایش بدید / مقداری برای یک آیتم در نظر بگیرید.



در زمان ایجاد combo box یه مثلث کوچولو بالاش بود که با استفاده از اون می تونستی تغییرات بدی اما من حالا نمی تونم این مثلث کوچولو رو پیدا کنم

احتمالا شما آن رو داخل یه کنترلر گذاشته اید و الان در فرم دیگری دارید از کنترلر استفاده می کنید(نمیشه)
باید در همان صفحه ی طراحی کنترلر این کارو انجام بدین.


چه جوری میشه که user control به شکل یه چرخ دنده یاسمنی در toolbox قرار می گیره
و بعد از اون میشه میشه تغییرات در اون داد یانه؟
خوب وقتی ساخته میشه به لیست کنترلر ها در جعبه ابزار اضافه میشه دیگه(بعد از کامپایل و تجزیه شدن)

تغییرات باید در همان صفحه ی طراحی کنترلر انجام شوند.


درست بعد از rebuild کردن برنامه

بعد از اینکار عمل build رو هم انجام بدید.

موفق باشید.

sanam.b
02-08-2009, 14:07
مشکل بعدی

یاد آوری واضحات: هر وقت در حالت design فرم روی هر کنترلی کلیک کنی انتخاب میشه و 8 تا مربع کوچولو در اطراف اون ظاهر میشه وجدول پراپرتیس هم گزینه های مربوط به اون کنترل رو نشون می ده

حالا فرض کنید که یک tab control دارید که 4 تا تب داره و هر تب به طور متوسط دو یا سه تا user control داره .
و یه user control داریم که اسمشو میذاریم "1" و درتب چهارم قرار دارد

و طبق یاد آوری هروقت روی یکی از این user control ها کلیک کنی باید انتخاب بشه ولی اینطوری نیست هر کدوم از این user control ها را در هر کدام از تبها انتخاب کنی برنامه تب چهارم رو نشون می ده و این user control انتخاب میشه

شدیدا نیازمند راهنمای هاتون هستم

mahdi7s
02-08-2009, 19:27
ببخشید من منظورتونو نفهمیدم. سوال هست؟

_H2_
02-08-2009, 23:54
سلام

و طبق یاد آوری هروقت روی یکی از این user control ها کلیک کنی باید انتخاب بشه ولی اینطوری نیست هر کدوم از این user control ها را در هر کدام از تبها انتخاب کنی برنامه تب چهارم رو نشون می ده و این user control انتخاب میشه

گمانم منظور شما این است که در زمان طراحی tab نمایشی را تغییر میدهید ولی در زمان اجرا وقتی فرم باز میشود، همان tab اول انتخاب شده و فعال است...
جوابش آن است که vs این وضعیت را ذخیره نمیکند و خودکار با بالاآمدن فرم همیشه tab صفرم نمایش داده خواهد شد.
برای تغییر آن در زمان بالا آمدن خودتان به راحتی کدی مثل این را به سازنده کلاس یا form_load اضافه کنید.
;(this.tabControl1.SelectTab(2

sanam.b
04-08-2009, 14:43
دوباره سلام
فکر می کنم من نتونستم منظورم رو درست بیان کنم

مثلا می خواهید یکی از اون user control ها رو که در تب دوم هست تغییر مکان بدید یا براش یه رویداد بنویسید ،چیکار می کنید؟ باید با موس روش کلیک کنید ، به محض کلیک کردن روی اون user control تب4 نمایش داده میشه و اون یکی user control انتخاب می شه با تب رفتن هم دردسر زیاد داره

ممنون میشم بهم کمک کنید

sanam.b
05-08-2009, 09:42
سلام

من می خوام از طریق برنامه ام بشه برنامه های دیگه ای مثل word یا ماشین حساب رو فراخوانی کرد ، فکر می کنم بشه از طریق دستور application این کار رو انجام داد ولی در این دستو ر مسیر نصب برنامه رو ازت می خواد ولی من چه جوری باید بدونم که در کامپیوتری که برنامه من نصب خواهد شد برنامه های مورد نظر کجا نصب شده اند و من برای این کار باید چیکار کنم؟

_H2_
05-08-2009, 10:47
سلام

مثلا می خواهید یکی از اون user control ها رو که در تب دوم هست تغییر مکان بدید یا براش یه رویداد بنویسید ،چیکار می کنید؟ باید با موس روش کلیک کنید ، به محض کلیک کردن روی اون user control تب4 نمایش داده میشه و اون یکی user control انتخاب می شه با تب رفتن هم دردسر زیاد داره
گمانم کمی گیچ کننده تر شد!
اصلاً مشکل با در زمان طراحی در VS است یا زمان اجرا؟؟؟
من مشکلی با اضافه کردن رویداد در زماتن طراحی در VS مشاهده نکردم.
میتوانید کنترلر را انتخاب کنید و از Properties->Events هر رویدادی که میخواهید را اضافه کنید، این روش کامل است و همیشه در هر دو زبان اصلی دات نت جواب میدهد.



من می خوام از طریق برنامه ام بشه برنامه های دیگه ای مثل word یا ماشین حساب رو فراخوانی کرد ، فکر می کنم بشه از طریق دستور application این کار رو انجام داد ولی در این دستو ر مسیر نصب برنامه رو ازت می خواد ولی من چه جوری باید بدونم که در کامپیوتری که برنامه من نصب خواهد شد برنامه های مورد نظر کجا نصب شده اند و من برای این کار باید چیکار کنم؟
برای اجرای یک exe با داشتن مسیرش میتوانید مثل زیر اقدام کنید:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

(
ولی برخی از برنامه ها را که از activex و com پشتیبانی میکنند میتوان با دستورات خاص دیگری هم اجرا کرد که البته به نظرم اگر فقد قصد اجرای انتها باشد این کار جالبی نیست
)

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

ضمن اینکه اغلب این برنامه ها در پنجره تنظیمات خود لیست مسیرهای خاص و برنامه هایی را که میخواهند اجرا کنند را قرار میدهند و اجازه تغییر و ویرایش و تنظیم آن به دلخواه را به کاربر میدهند (طبیعتاً در همان فرم تنظیماتی Tools->Options که برای برنامه ساخته شده)



برای بدست آوردن محل نصب برنامه ها معمولاً میتوانید از رجیستری استفاده کنید، خیلی از برنامه ها به نحو و روش خاصی برای خودشان محل نصبشان را در رجیستری ثبت میکنند که مورد استفاده خودشان هم است.

مثلاً برای به دست اورن محل نصب Ofiice Word گمانم بتوانید مسیر مذکور را از شاخه زیر استخراج کنید:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\%vers ion%\Word\InstallRoot
Path

با همان دستورات کار را با رجیستری میتوانید تمام زیرکلیدهای HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office را به دست آورده و از بزرگ به کوچک در یک حلقه همه را چک کنید تا مسیر حقیق را بدست آورید.

موفق باشید.

_H2_
05-08-2009, 10:47
سلام

مثلا می خواهید یکی از اون user control ها رو که در تب دوم هست تغییر مکان بدید یا براش یه رویداد بنویسید ،چیکار می کنید؟ باید با موس روش کلیک کنید ، به محض کلیک کردن روی اون user control تب4 نمایش داده میشه و اون یکی user control انتخاب می شه با تب رفتن هم دردسر زیاد داره
گمانم کمی گیچ کننده تر شد!
اصلاً مشکل با در زمان طراحی در VS است یا زمان اجرا؟؟؟
من مشکلی با اضافه کردن رویداد در زماتن طراحی در VS مشاهده نکردم.
میتوانید کنترلر را انتخاب کنید و از Properties->Events هر رویدادی که میخواهید را اضافه کنید، این روش کامل است و همیشه در هر دو زبان اصلی دات نت جواب میدهد.



من می خوام از طریق برنامه ام بشه برنامه های دیگه ای مثل word یا ماشین حساب رو فراخوانی کرد ، فکر می کنم بشه از طریق دستور application این کار رو انجام داد ولی در این دستو ر مسیر نصب برنامه رو ازت می خواد ولی من چه جوری باید بدونم که در کامپیوتری که برنامه من نصب خواهد شد برنامه های مورد نظر کجا نصب شده اند و من برای این کار باید چیکار کنم؟
برای اجرای یک exe با داشتن مسیرش میتوانید مثل زیر اقدام کنید:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

(
ولی برخی از برنامه ها را که از activex و com پشتیبانی میکنند میتوان با دستورات خاص دیگری هم اجرا کرد که البته به نظرم اگر فقد قصد اجرای انتها باشد این کار جالبی نیست
)

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

ضمن اینکه اغلب این برنامه ها در پنجره تنظیمات خود لیست مسیرهای خاص و برنامه هایی را که میخواهند اجرا کنند را قرار میدهند و اجازه تغییر و ویرایش و تنظیم آن به دلخواه را به کاربر میدهند (طبیعتاً در همان فرم تنظیماتی Tools->Options که برای برنامه ساخته شده)



برای بدست آوردن محل نصب برنامه ها معمولاً میتوانید از رجیستری استفاده کنید، خیلی از برنامه ها به نحو و روش خاصی برای خودشان محل نصبشان را در رجیستری ثبت میکنند که مورد استفاده خودشان هم است.

مثلاً برای به دست اورن محل نصب Ofiice Word گمانم بتوانید مسیر مذکور را از شاخه زیر استخراج کنید:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\%vers ion%\Word\InstallRoot
Path

با همان دستورات کار را با رجیستری میتوانید تمام زیرکلیدهای HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office را به دست آورده و از بزرگ به کوچک در یک حلقه همه را چک کنید تا مسیر حقیق را بدست آورید.

موفق باشید.

sanam.b
05-08-2009, 16:42
سلام


گمانم کمی گیچ کننده تر شد!
اصلاً مشکل با در زمان طراحی در VS است یا زمان اجرا؟؟؟

در زمان طراحی

_H2_
06-08-2009, 16:43
سلام

در زمان طراحی
خوبه حداقل یک چیزهای فهمیدم!
بحرحال جوابم همان قبلی است.

کمی تست کردم ولی مشکلی در این خصوص ندیدم!
پیشنهاد میکنم، برای اضافه کردن رویداد، کنترلر را انتخاب کنید و به پنجره کوچکم Properties بروید و سوییچ کنید به Events سپس به راحتی برای رویداد مورد نظرتان متد جدیدی تایین و یا با دبل کلیک اضافه کنید.

sanam.b
09-08-2009, 12:15
سلام


برای اضافه کردن رویداد، کنترلر را انتخاب کنید

دوست عزیز مشکل من اینه که نمی تونم انتخابش کنم یعنی

محض کلیک کردن روی اون یه user control دیگه در یه تب دیگه l انتخاب می شه.

دیگه مهم نیست چون همه user control رو پاک کردم و به جاشون از کنترلهای معمولی استفاده کردم. و این مشکل هم حل شد
از کمک های شما و بقیه دوستان هم خیلی ممنونم:11:

_H2_
09-08-2009, 13:34
سلام
برخی اوقات به دلیل کمی امکان دارد فایلهای design.cs یا design.vb دچار مشکلی شوند که من حدس میزنم مشکل شما از همین بابت بوده.
(مخصوصاً که قبلاً دو کنترلر با یک نام هم در پروژه تان داشتید که میتواند designer داخلی vs مشکل دار کند)

بحرحال خوشحالم که مشکلتان حل شد. انشا ا... آخرین مشکلتان بوده باشد.:31:
موفق باشید.

sanam.b
10-08-2009, 12:16
بازم سلام


بحرحال خوشحالم که مشکلتان حل شد. انشا ا... آخرین مشکلتان بوده باشد.:31:

خودتون هم خوب می دونید که این آخرین مشکل من نیست

اما اشکال بعدی
روی فرم من یه تب کنترل و روی تب کنترل 167 تکست باکس و20 تا کمبو هست و علاوه بر اون روی تب کنترل یه دکمه به اسم "جدید" است که هر وقت روی اون کلیک کردی باید تمام تکست و کمبو ها پاک بشن
من تو اینترنت گشتم و کد زیر رو پیدا کردم اما این برای فرم است نه تب کنترل



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


من هم this.Controls رو پاک کردم و به جاش tabcontrol1 رو نوشتم
خطای زیر اومد


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

کدهای دیگه ای رو هم امتحان کردم اما هیچ کدوم جواب نمی داد من باید چه کدی رو بنویسم؟
نمی خوام بشینم واسه تک تک تکست ها و کمبو ها دستور clear بنویسم
:41:

mahdi7s
10-08-2009, 13:06
باسلام


من هم this.Controls رو پاک کردم و به جاش tabcontrol1 رو نوشتم

این کد رو بجاش جایگزین کنید :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در ضمنبجای ایندکس صفر می تونید ایندکس مناسب روقرا بدین.

موفق باشید.

sanam.b
10-08-2009, 14:52
من همون طوری که شما گفتید عمل کردم و درست هم شد ،دستتون درد نکنه ، اما وقتی خواستم همین رو برای کمبو بنویسم


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

خطای زیر رو داد

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


اینو چیکار کنم ؟

_H2_
10-08-2009, 15:00
سلام

Only assignment, call, increment, decrement, and new object expressions can be used as a statement
متد Clear یک function است و در #C اجباراً باید پرانتزهایش تایپ شود!!!

sanam.b
13-08-2009, 00:14
سلام
من دوباره برگشتم:31:
سوال این دفعه منم در مورد پنجره immediate است
من اگه بخواهم مثلا محنویات textbox1 را ببینم در این پنجره باید چه چیزی را تایپ کنم?

_H2_
13-08-2009, 11:39
سلام
گمانم منظورتان پنجره Command است.
چون میخواهید محتویات یک شی جاری برنامه را بخوانید باید به حالت break در کلاس فرم جاری بروید ... مثلاً یک جایی در کدهای فرم جاری نقطه توقف تایین کنید و سپس فرمان زیر را برای مشاهده محتویات textbox تایپ کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sanam.b
16-08-2009, 09:30
سلام

دیروز داشتم با tab order ترتیب کنترلها رو مرتب می کردم متوجه شدم که textbox هایی که خاصیت multi line آنها فعال شده در حالت اجرا نشانگر ماوس به آنها منتقل نمی شود. به نظر شما من چی کار کنم ؟ مثلا textbox ی که قراره آدرس کامل در اون نشون داده بشه را باید چیکار کنم؟

mahdi7s
16-08-2009, 09:44
این ربطی به خاصیت multi line ندارد.
احتمالا TabIndex رو ویرایش کنید مشکل حل می شود.

sanam.b
16-08-2009, 13:07
بازم سلام

فرق بین taborder و tabindex چیه؟


احتمالا TabIndex رو ویرایش کنید مشکل حل می شود.

وقتی خاصیت multiline را false کردم مشکل حل شد، حتی با چند textbox دیگه امتحان کردم .

قضیه خیلی حاد نیست در حالت اجرا وقتی tab میزنی باید علامت ماوس در textbox که focus به اون منتقل شده دیده بشه اما برای من دیده نمیشه می شه ولی میشه در اون تایپ کرد.
من برای کاربری میگم که قراره با این برنامه کار کنه وقتی نبینه علامت ماوس در کدوم textbox هست ازکجا باید بدونه باید عدد وارد کنه یا حرف ؟

سوال بعدی
من تعدا زیادی textbox دارم که نمی خوام خالی بمون چون در بانک اطلاعاتی این فیلدها نباید خالی باشند .
آیا تو سی شارپ این امکان وجود داره به طور خودکار textbox را چک کنه که خالی هست یا نه ؟ و در صورت خالی بودن error بده ؟
یه چیزی معادل validation requrement در asp.net ؟
اینکه بشینی برای همشون کد بنویسی زمان زیادی می گیره.

mahdi7s
16-08-2009, 14:34
فرق بین taborder و tabindex چیه؟


همان طور که می دانید taborder کاری جز ویرایش tabindex ها انجام نمیده.
بنابراین من گفتم شاید شما هنگام استفاده از taborder وقتی به این تکست باکس(که حالا از روی بد شانسی multi line هم شده) رسیدین tabindex رو اشتباه وارد کردین و به این دلیل کلید tab به این کنترل بخت برگشته
focus نمیده.


وقتی خاصیت multiline را false کردم مشکل حل شد، حتی با چند textbox دیگه امتحان کردم
باز هم میگم مربوط به multi line نیست.
الان تستی هم کردم و برای من مشکلی نداشت.


قضیه خیلی حاد نیست در حالت اجرا وقتی tab میزنی باید علامت ماوس در textbox که focus به اون منتقل شده دیده بشه اما برای من دیده نمیشه می شه ولی میشه در اون تایپ کرد.

اگر می توان در ان تایپ کرد پس tab کار خودش را انجام داده و focus را کنترل داده.(مشکل دیده نشدن رو دیگه
نمی دونم. شاید کنترلر دیگری روی تکست باکس باشد و مانع از دیده شدن علامت تایپ شود.)

=============================================

یه چیزی معادل validation requrement در asp.net ؟

تحت ویندوز انطور چیزی نیست. باید تک تک خالی بودن رو تست کنید.(می توانید با یه حلقه بین کنترل های فرم
پیمایش و خالی بودن رو تست کنید و نهایتا از تایپ زیاد جلوگیری کنید.)
در ضمن تا انجا که من می دانم تحت وب هم باید برای تک تک کنترل ها validation requrement استفاده شود.

sanam.b
16-08-2009, 18:11
سلام
من یه متن فارسی می نویسم شما بگید که این دستور رو چه جوری می نویسند

من می خوام وقتی یه دکمه b1 رو در فرم m1 کلیک کردم


فرم t1 رو باز کنه و در اون فرم ، tabpage 4 از tabcontrol 1 فعال باشه یا انتخاب شده باشه

راستش من کدهای زیر رو نگاه کردم


public partial class Form1
: System.Windows.Forms.Form
{

public bool DeleteMode
{
get
{
return this.tabControl1.SelectedTab == this.tabPage1;
}
set
{
this.tabControl1.SelectedTab = value ? this.tabPage1, this.tabPage2
}
}

//... یا ...

public int SelectedTabIndex
{
get { return this.tabControl1.SelectedIndex; }
set { this.tabControl1.SelectedIndex = value; }
}

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

بعد در همه اینها this.tabControl1 استفاده شده ولی من می خوام بره از یه فرم دیگه تب کنترل رو فعال کنه

mahdi7s
16-08-2009, 18:27
ابتدا در رویداد Load فرم t1 کد زیرو وارد کنید تا هنگام باز شدن تپ چهارم انتخاب شده باشه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


من می خوام وقتی یه دکمه b1 رو در فرم m1 کلیک کردم

خصیصه ی KeyPreview فرم m1 رو true کنید و رویداد KeyPress اونو هندل کنید و :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sanam.b
17-08-2009, 15:09
سلام
تو این قضیه دکمه نداریم من برای اینکه مسله رو ساده بگم از دکمه استفاده کردم

1- من یه فرم(به اسم k) دارم که دو تا تب داره یکی درج و دیگری حذف
من می خوام اگه در منو اصلی که در فرم 1قرار دارد گزینه "درج" انتخاب شد فرم k باز بشه بصورتیکه تب" درج" فعال باشه و اگه در منو گزینه "حذف" انتخاب شد فرم k باز شه در حالیکه تب حذف فعال است


ابتدا در رویداد Load فرم t1 کد زیرو وارد کنید تا هنگام باز شدن تپ چهارم انتخاب شده باشه


tabControl1.SelectedIndex = 3;

اگر من این کد رو بنویسم با فعال شدن فرم تب چهارم انتخاب می شه درحالتیکه من اینو نمی خوام

2- در error provider مگه نباید با رفع شدن خطا علامت error از جلوی کنترل کنار بره ولی این برا ی من کار نمی کنه
من از error provider برای چک کردن مقدار ورودی که عدد باشه یا حرف و.... استفاده می کنم
ولی بعد از اینکه مقدار صحیح رو هم وارد کردی باز هم علامت خطا کنار کنترل باقی می ماند ،چه جوری باید آنرا باید کنار ببرم

mahdi7s
17-08-2009, 19:54
1- من یه فرم(به اسم k) دارم که دو تا تب داره یکی درج و دیگری حذف
من می خوام اگه در منو اصلی که در فرم 1قرار دارد گزینه "درج" انتخاب شد فرم k باز بشه بصورتیکه تب" درج" فعال باشه و اگه در منو گزینه "حذف" انتخاب شد فرم k باز شه در حالیکه تب حذف فعال است


خوب شما می تونید در فرم k یه خصوصیت عمومی که کارش عمومی ساختن SelectedTabIndex مربوط به TabPage هست ایجاد کنید و قبل از نشون دادن فرم k مقدار مناسب رو بهش بدین. مثل این


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


2- در error provider مگه نباید با رفع شدن خطا علامت error از جلوی کنترل کنار بره ولی این برا ی من کار نمی کنه
من از error provider برای چک کردن مقدار ورودی که عدد باشه یا حرف و.... استفاده می کنم
ولی بعد از اینکه مقدار صحیح رو هم وارد کردی باز هم علامت خطا کنار کنترل باقی می ماند ،چه جوری باید آنرا باید کنار ببرم

شما باید با رفع شدن خطا متن اررور را خالی کنید.
مثلا کد زیر با تغییر تکست باکس چک می کند اگر سن بالای 15 و کمتر از 50 بود متن اررور را خالی می کند.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sanam.b
19-08-2009, 10:43
با درود به همگی

برنامه من خیلی سنگینه ،باز کردن و اجرا کردنش طول می کشه.
ممکنه به دلیل این باشه که

در بین فرمهامن دو تا فرم دارم که رو هر کدوم 170 textbox و 20 تا combo داره و 14 تا جدول خالی که هیچ data یی توش نیست (من فکر نمی کنم این دلیل باشه)

شما هیچ پیشنهادی برای من ندارید؟
من باید چیکار کنم تا وضعیت یه کمی بهتر بشه؟

mahdi7s
19-08-2009, 11:51
در بین فرمهامن دو تا فرم دارم که رو هر کدوم 170 textbox و 20 تا combo داره و 14 تا جدول خالی که هیچ data یی توش نیست (من فکر نمی کنم این دلیل باشه)
البته بی دلیل هم نیست ولی کاریش نمیشه کرد.


شما هیچ پیشنهادی برای من ندارید؟
من باید چیکار کنم تا وضعیت یه کمی بهتر بشه؟

تا میشه کدهای سنگین را از قسمت شروع برنامه بردارین و نهایتا از یه spalashScreen درابتدای برنامه استفاده کنید تا کاربر مشغول باشه!
(کد نویسی هم خیلی تاثیر دارد که من نمی توانم چیزی بگم و...)

sanam.b
19-08-2009, 13:38
سلام
وقتی در بانک اطلاعاتی به یک فیلد اجازه نمی دی که خالی باشه "allow null" یعنی نمی ذاری تیک داشته باشه این زمان خالی نبودن تا کیه؟
من یه فرم دارم که 4 تا تب داره هر تب هم دکمه ذخیره خودشو داره و یه جدول که تعدادی از فیلدهاش در یک تب و تعدادی دیگر در تب دیگر.
خوب حالا وقتی دکمه ذخیره رو در تب اول زدی و اطلاعات اون ذخیره شد، عناصری از جدول که در تب دوم هستند و هنوز اطلاعات ندارند و اجازه نداده ایم که خالی باشند خطا خواهند داد یا نه ؟

mahdi7s
20-08-2009, 09:15
وقتی در بانک اطلاعاتی به یک فیلد اجازه نمی دی که خالی باشه "allow null" یعنی نمی ذاری تیک داشته باشه این زمان خالی نبودن تا کیه؟
وقتی یه ردیف اضافه می کنید اون فیلدی که allow null را تیک نزدین نمی تونه خالی(null) باشه.


خوب حالا وقتی دکمه ذخیره رو در تب اول زدی و اطلاعات اون ذخیره شد، عناصری از جدول که در تب دوم هستند و هنوز اطلاعات ندارند و اجازه نداده ایم که خالی باشند خطا خواهند داد یا نه ؟

اگر منظورتان از خالی مقدار null باشد بله .

sanam.b
21-08-2009, 19:36
سلام

من اگه فرمی رو که دارای 4 تبه به 4 فرم تبدیل کنم ممکنه که برنامه ام سبک تربشه؟
(من دو تا فرم دارم که 4 تبه هستند)

sanam.b
23-08-2009, 14:04
سلام

ممنون می شم یکی به این سوال بالا جواب بده. خیلی ضروریه

_H2_
23-08-2009, 23:08
سلام
در واقع فرقی نمیکند ولی در عمل میتواند بهتر باشد.
چون احتمال زیادی وجود دارد که کاربر در یک لحظه یک فرم را باز کند که در این شرالیط طبیعتاً تعداد کمتری کنترلر در RAM بارگذاری میشود ولی در ان حالت تب بندی با بارگذاری همان یک فرم کل کنترلرهای چهار تب تان یکجا در RAM لود شده و سنگینی بیشتری را تحمیل خواهد.

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

sanam.b
24-08-2009, 09:35
سلام

1- جناب h2 شما که برنامه رو دیدید از قرار معلوم یه تب هم به اون دو تا فرم چند تبه اضافه می شه. شما هیچ پیشنهادی برای بهبود
این کندی برنامه ندارید؟

2-اگر اطلاعاتی در یک تب فرم وارد می کنیم مربوط به چند جدول باشد از لحاظ connection string یا دستورات sql مشکل پیش نمی یاره؟
مثلا من تب پزشکی فرم رو پر می کنم وقتی من دکمه ذخیره رو زدم باید این اطلاعات در چند جدول پزشکی پیوسته،درمان،تشخیص و آلودگی ذخیره شود

3-چگونه می توان checkedlist box را پاک کرد (هیچ کدام از گزینه هاش انتخاب نشده باشد)؟

checkedListBox1.ClearSelected()

کار نمی کنه

آیا برای پاک کردن اونم باید از حلقه استفاده کرد؟

sanam.b
25-08-2009, 11:45
سلام به همگی


تو سی شارپ چیزی به اسم shape پیدا نمی شه ؟

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

با این دستور محتوای کنترلهای موجود در پانل 1 پاک میشه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اما من 4 تا پانل تو اون فرم دارم خواستم با حلقه forبنویسم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موقع اجرا error زیر رو می ده

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ممنون می شم اگه شما بهم کمک کنید.

_H2_
25-08-2009, 21:37
سلام

شما هیچ پیشنهادی برای بهبودمن حافظه حفظی ام چندان خوب نیست.
میتوانم پیشنهادات کلی داشته باشم.

- از مورد مصرف تمام فیلدها توسط مشتری مطمئن شوید

- به جای ساخت فرمهای بزرگ با کنترلرهای زیاد، آنها را به وحدهای کوچک تر بشکنید

- میتوانید امکاناتی برای مشاهده/ویرایش سریع فراهم کنید که در این حالت مشاهده/ویرایش سریع همه گزینه ها حضور نداشته باشند و فقط موارد پر کاربرد باشند.
(مثلاً به همین ارسال پست های سایت دقت کنید که چطور دو نوع سریع و پیشرفته دارد.)

- کدهای خود را برای رسیدن به حداکثر بازدهی بهینه کنید و ضمن استفاده از اصول شی گرایی و لایه بندی تا حد امکان استفاده از DataSet و DataAdapter را کاهش دهید.

- مواردی در خصوص سرعت و بازدهی از پست 26 به بعد تاپیک زیر مطرح شده که میتوانید در سایر برنامه ها هم کاربرد داشته باشد.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

و...


-اگر اطلاعاتی در یک تب فرم وارد می کنیم مربوط به چند جدول باشد از لحاظ connection string یا دستورات sql مشکل پیش نمی یاره؟
نکته ای که به ذهنم میرسد آن است که هر شی Connection یا Command در هر لحظه میتواند برای یک کار و عمل استفاده شود.
مثلاً اگر با یک Connection یا Command یک DataReader باز کنید و اطلاعات را بخوانید و در همین حین DataReader دیگری با همان Connection یا Command باز کنید با خطا مواجه خواهید شد.

در بقیه حالت نباید مشکلی ایجاد کند.


چگونه می توان checkedlist box را پاک کرد (هیچ کدام از گزینه هاش انتخاب نشده باشد)؟
از همان حلقه استفاده کنید.


تو سی شارپ چیزی به اسم shape پیدا نمی شه ؟
- میتوانید از کنترلر GroupBox استفاده کنید.

- من در ghnet.win.dll خودم یک کنترلر با نام SeparatorLine دارم که یک نوشته و یک خط خدا کننده نسبتاً مناسب نمایش میدهد.

- این قبیل کنترلرها خیلی ساده هستند و با چند خط کدنویسی میتوانید خودتان بسازیدشان و به نوار ابزار اضافه شوند.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


موقع اجرا error زیر رو می ده
آخه شما کی پنلهایتان را آرایه کردید که VS نفهمید!
اگر میخواهید کد خودتان درست کار کنتد باید یک آرایه 4 عنصری از پنلهایتان بسازید و سپس دستور را اجرا کنید وگرنه کد زیر شاید برایتان بد نمباشد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

البته فرض کردم که همه ComboBox هایتان Text شان قابل تغییر است.
موفق باشید.

_H2_
26-08-2009, 12:04
سلام
در کد پست قبلی ام یک ایراد تابلو وجود داشت کهاحتمالاً ناشی از تایپ سریع بوده که رفع شد.
خط قبلی ;(this.ClearAll(root به خط جدید ;(this.ClearAll(cont اصلاح شد.
گفتم اگر پست جدید نزنم هرگز متوجه این اشتباه و اصلاحیه اش نمیشوید.

zerocool.3830
27-08-2009, 08:23
با سلام
برای ذخیره تصاویر در پایگاه داده باید ابتدا در جدول خود فیلدی از نوع Image ایجاد کنید
بعد باید عکستون رو به اطلاعات باینری تبدیل کنید و ذخیره کنید.موقع بازیابی هم باید اطلاعات باینری را به تصویر تبدیل کنید.به زودی نمونه کدش را براتون می ذارم:11::10:

zerocool.3830
27-08-2009, 08:25
سلام
اول باید تو جدولتون یه فیلد از نوع Image ایجاد کنید
بعد تصویر را به اطلاعات باینری تبدیل کنید و در آن ذخیره کنید
برای باز یابی هم باید همان اطلاعات باینری را به تصویر تبدیل کنید و ازش استفاده کنید
به زودی نمونه کدش رو براتون می ذارم:10:

zerocool.3830
27-08-2009, 08:27
نه.استفاده از یه فرم با 4 تب بهتر از 4 فرمه:41:

sanam.b
16-09-2009, 10:56
سلام به همه دوستان

من دوباره برگشتم:31:

اگه یادتون باشه من یه دکمه به اسم جدید داشتم که با کلیک کردن اون تمام text و combo ها پاک می شدند.چون این کدها خیلی تکرار می شد تصمیم گرفتم همه رو تو یه کلاس بنویسم
اما 6 تا error داشت

این کد اصلی


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این هم متد کلاس


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


این هم فراخوانی متد


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این هم error


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



شما بفرمایید من چیکار کنم؟

sanam.b
16-09-2009, 13:04
من هنگام نصب SQL Server برای حالت SQL Server Authentication اسم کاربری و پسورد تعیین کردم اما حالا یادم نمی یاد که چی بودند , راهی برای به دست آوردن اونها است یا باید دوباره نصبش کنم؟

_H2_
16-09-2009, 19:45
سلام

... تصمیم گرفتم همه رو تو یه کلاس بنویسم ...
کد شما چندین مشکل دارد.
اول آنکه کلاس بیچاره شما tabControl را از کجا پیدا کند؟
(خوب چرا از کد پست 69 استفاده نمیکنید؟)

دوم هم آنکه شما حتماً این کلاس را در یک dll جدید قرار داده اید.
شما باید کلاسهای استفاده کرده خودتان را reference کنید ...
یعنی اسمبلی System.Windows.Forms را باید reference کنید.


من هنگام نصب SQL Server برای حالت SQL Server Authentication اسم کاربری و پسورد تعیین کردم اما حالا یادم نمی یاد که چی بودند , راهی برای به دست آوردن اونها است یا باید دوباره نصبش کنم؟
آن رمز که زمان نصب تایین میشود به این راحتی ها قابل صرف نظر و دور زدن نیست.
من راهی نمیدانم و پیشنهادی ندارم.

sanam.b
16-09-2009, 20:59
سلام

یه سوال دیگه
در فرم خّیر من یه کمبو باکس هست که شامل سه گزینه فرد،شرکت،ادارت است
باانتخاب کردن هر یک از این گزینه ها فلید های اضافه شده به جدول عوض میشه:
مثلااگه" فرد" انتخاب بشه نوع عضویت باید مساوی 1 بشه و فیلد کارمندان خیر نباید پر بشه
اگه" شرکت" انتخاب بشه نوع عضویت باید مساوی 2 بشه و فیلد کارمندان خیر باید پر بشه
اگه" ارگان" انتخاب بشه نوع عضویت باید مساوی 3 بشه و فیلد کارمندان خیر باید پر بشه
قابل توجه که دو تافیلد متغیرا ست و حدود 11 فیلد مشترک است
تا اینجا هیچ مشکلی نیست
حالا وارد SQL Server می شیم
برای اضافه کردن این اطلاعات به بانک اطلاعاتی با شرایط بالا باید چیکار کنم؟
اگه من یه switch بر اساس select index کمبو بذارم که اگه 0 بود این فیلدها به بانک اطلاعاتی اضافه شود
اگر 1 بود این سری فیلدها و اگر 2 بود این سری فیلدهاکه در هر3 سری همون طوری که گفتم 11 تا مشترک است درنتیجه 22 خط تکراری است آیا راهی هست که بتونم این خطوط اضافی رو حذف کنم؟

اکرامی فرد
18-09-2009, 10:40
سلام من هم یکسری مشکلات دارم. اگه کمک کنید ممنون میشم. من یک صفحه وب طراحی کردم. پایگاه داده ای که دارم. اکسسه بهنظر شما این خوبه یا sql . دوم اینکه می خوام اگه کاربر اطلاعات تکراری درون فیلدها نوشت پیام خطا بده. چطوری search کنم و پیام خطا بدم.
ممنون.

_H2_
18-09-2009, 17:02
سلام

آیا راهی هست که بتونم این خطوط اضافی رو حذف کنم؟
موارد را در کامبو پر کنید و از ValueMember و DisplayMember برای تمایز نمایش و عدد مقدار داخلی استفاده کنید.


من هم یکسری مشکلات دارم
شما میتوانید سوالات خود را مثل سایر دوستان در تاپیک مجزا در سطح انجمن مطرح نمایید.

البته دوست عزیز فراموش نفرمائید که تاپیک های این تالارها هیچگاه جای آموزش را نمیگیرد و شما خودتان باید با مطالعه کتاب و کار عملی سطح اطلاعاتتان را افزایش دهید و مشکلات و سوالات را در سطح انجمن مطرح کنید.
(چون در هر صورت کسی نمیتواند با یک پست و دو پست و یک تالپیک و دو تاپیک کار انتقال اطلاعات یک کتاب 500 یا 1500 صفحه ای را انجام دهد.


اکسسه بهنظر شما این خوبه یا sql
access که با sqlserver قابل مقایسه نیست ولی اگر پروژه تان خیلی ساده و کوچک است و صرفاً مصرف آموزشی و یادگیری دارد، استفاده از access هم مشکلی ندارد.


دوم اینکه می خوام اگه کاربر اطلاعات تکراری درون فیلدها نوشت پیام خطا بده، چطوری search کنم و پیام خطا بدم
اگر برای جدول مورد نظر فیلد primarykey تعریف کنید خود موتور پایگاه دیتابیس اطلاعات تکراری primarykey را به خطا تبدیل کرده و اطلاع میدهد و شما فقط باید کد لازم را برای نمایش پیغام مناسب اضافه کنید.

sanam.b
18-09-2009, 17:39
سلام


موارد را در کامبو پر کنید و از ValueMember و DisplayMember برای تمایز نمایش و عدد مقدار داخلی استفاده کنید.

من منظور شما رو نفهمیدم من کدوم موارد رو در کامبو پر کنم؟

اگه منظورتون اون 11 تااست که اطلاعات هر کدوم ازا ونها از تکست و کمبو جداگانه ای میاد که توسط کاربر پر می شود

sanam.b
21-09-2009, 00:18
درود به همگی


دوم هم آنکه شما حتماً این کلاس را در یک dll جدید قرار داده اید.
شما باید کلاسهای استفاده کرده خودتان را reference کنید ...
یعنی اسمبلی System.Windows.Forms را باید reference کنید.

اطلاعات من در مورد خطوطی که بالا خیلی کم است می دونم dll چیست اما نمی دونم چه جوری درست میشه.
در مورد reference اصلا چیزی نمی دونم ممنونمی شم یه منبع برای مطالعه معرفی کنید ( البته اگه در فروم باشه خیلی بهتره) یا توضیحاتش رو برام بذارید

_H2_
21-09-2009, 17:56
سلام

اگه من یه switch بر اساس select index کمبو بذارم که اگه 0 بود این فیلدها به بانک اطلاعاتی اضافه شود
اگر 1 بود این سری فیلدها و اگر 2 بود این سری فیلدهاکه در هر3 سری همون طوری که گفتم 11 تا مشترک است درنتیجه 22 خط تکراری است آیا راهی هست که بتونم این خطوط اضافی رو حذف کنم؟
اینجور که من از فرمایشات شما متوجه شدم، شما کامبو دارید که میخواهید چیزی را به کاربر نمایش دهد ولی در برنامه نویسی چیز دیگری را وارد کند یا پس دهد، درست متوجه شده بودم؟؟

پیشنهاد من کدی شبیه این بود:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


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


در مورد reference اصلا چیزی نمی دونم ممنونمی شم یه منبع برای مطالعه معرفی کنید
کار خاصی نیست.
فقط طی عمل reference یک dll را برای دسترسی و ارجاع و استفاده معرفی و اضافه میکنید.

Project->Add Reference
و نام dll را از لیست انتخاب کنید و یا با Browse پیدایش کنید.

موفق باشید.

sanam.b
24-09-2009, 01:06
دوباره سلام

در SQLServer 2005 یه نوع داده داریم به اسم bit در این نوع داده چه چیزی قرار میگیره ؟
0 یا 1
T یا F
و من اگه بخوام یه متغیر در C# تعریف کنم که داده ذخیره شده در اون در انتها به فیلد که نوع اون bitتعریف شده وارد بشه باید اومو چه جوری تعریف کنم منظورم اینکه که نوع معادل bit در سی شارپ چیه؟ Boolean می تونه باشه؟

_H2_
24-09-2009, 01:47
سلام
نوع داده bit معادل bool در #C و یا همان Boolean دات نت است.
نوع bit در SQLServer بسته به شرایط میتواند در دستورات INSERT و UPDATE مقادیر 0 و 1 و 'FALSE' و 'TRUE' بگیرد.
مهم ان است که فقط دو حالت دارد و معادل C#-Bool است

(ولی اگر با SSMS کار کند در جدول دیداری SSMS باید مقادیر True و False را وارد کنید)

=====

اگر تیک Nullable را هم در دیتابیس زده باشید فیلد مذکور علاوه بر مقادیر قبلی میتواند مقدار NULL هم داشته باشد که معادل دقیق #C اش میشود ?bool و استاندارد دات نتی هم ?Boolean

sanam.b
24-09-2009, 09:59
با سلام و درود فراوان


(ولی اگر با SSMS کار کند در جدول دیداری SSMS باید مقادیر True و False را وارد کنید)

این SSMS چیه؟

(ببخشید اگه سوالاتم ابتداییه)

sanam.b
25-09-2009, 08:57
سلام به همگی


تا میشه کدهای سنگین را از قسمت شروع برنامه بردارین و نهایتا از یه spalashScreen درابتدای برنامه استفاده کنید تا کاربر مشغول باشه!

فکر می کنم spalashScreen یک سری فایلهای متحرک باشند.

پسوندشون چیه؟(برایserach می خوام)

با چه نرم افزارهایی درس می شن؟

فرض می کنیم من یه همچین فایلی دارم چه جوری باید اونو به برنامه اضافه کنم؟

با تشکر از همه دوستان

_H2_
25-09-2009, 09:22
سلام
splashscreen معمولاً تحرکی ندارد ! (یا بسیار اندک و ظریف است)
یک فرم ساده بدون عنوان هیچ دکمه و... است که اول شروع برنامه نشان داده میشود و به محظ بارگذاری نهایی فرم اصلی بسته میشود.
به عنوان نمونه میتوانید به برنامه photoshop دقت کنید که splashscreen طولانی تری دارد و البته مجموعه office را هم میتوانید ببینید.

در طول نمایش این فرم معمولاً عملیات های اولیه نرم افزار و بارگذاری ها انجام میشود (و کار بر هم میفهمد برنامه دارد بالا می آید)
=====

اما گمانم چیزی که منظور شما بوده و یک انیمیشن ساده در هنگام کارکرد معمول نرم افزار است (نه زمان بالا آمدن) مثل انیمیشن های کپی فایل خود ویندوز ... درست است؟
اگر منظورتان این مورد بوده، بهتر است از فایلهای gif استفاده کنید.
البته از قدیم معمولاً از فایلهای avi استفاده میشده ولی برای پخش این انیمیشن های کوتاه avi نیاز به یک ActiveX غیر دات نتی دارید در حالی که gif را با یک PictureBox معمولی میتوانید پخش کنید.

نمونه های آماده ای از این انیمیشن ها را میتوانید در دایرکتوری زیر پیدا کنید:
X:\Program Files\Microsoft Visual Studio 9.0\Common7\VS2008ImageLibrary\1033

برای ساخت آنها هم طبیعتاً میتوانید از نرم افزارهای سازنده gif استفاده کنید (که معمولاً بیشتر و ساده تر از avi ها هستند.)
از جستجو در اینترنت هم میتوانید gif های مناسب پیدا کنید.

در مجموعه نرم افزارهای ADobe قبلاً ImageReady (که همراه Photoshop نصب میشد) این قابلیت را داشته و در حال حاضر این قابلیت به Fireworks منتقل شده.
برنامه های ریز و درشت دیگری با امکان ویرایش و تولید gif وجود دارند.

موفق باشید.

sanam.b
25-09-2009, 15:52
با درود فراوان به همه

مخصوصا جناب H2 گرامی :11:


splashscreen معمولاً تحرکی ندارد ! (یا بسیار اندک و ظریف است)


اگر فایل متحرک باشد باعث سنگین شدن برنامه و کند بالا آمدن می شود؟


یک فرم ساده بدون عنوان هیچ دکمه و... است که اول شروع برنامه نشان داده میشود و به محظ بارگذاری نهایی فرم اصلی بسته میشود.

برای بسته شدن این فرم متد خاصی وجود داره یا باید خودمون متدشو بنویسیم؟

sanam.b
26-09-2009, 22:47
با سلام به همه دوستان

تو این کد


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



ودر دستور



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

error زیر می یاد .من نفهمیدم چی میگه.ممنون می شم کمک کنید
چون من تو یه فرم دیگه هم این error رو دارم.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sanam.b
27-09-2009, 17:28
سلام:41:

من الان یه چیزی دیدم که اصلا باور کردنی نیست

تصور کنید یه برنامه سی شارپ داشتید 4 تا text و label داره
2 تا text و label رو حذف می کنید یه دکمه و یه checkbox به فرم اضافه می کنید
پس در حالت design دو تا text و 2 تا label و یه دکمه و یه checkbox داریم خوب حالا برنامه رو اجرا می کنیم

همون 4 تا text و label رو داریم یعنی دکمه و checkbox رو هم نداریم.:18::18:

این یعنی چی؟ :19:

(قابل توجه اینکه منvisible هیچ کنترلی رو عوض نکردم )

تنها چیزی که توجه منو به خودش جلب کرد این بود چون اندازه فرم کوچک بود در حالت run می تونشتم صفحه برنامه رو ببینم که روی تبهای form1.cs و program .cs و form1.cs[design] یه قفل آبی رنگ بود

ممنونم می شم یکی بهم بگه که چه خبره ؟

_H2_
27-09-2009, 18:21
سلام
میبخشید چند روزی سرم خیلی شلوغ بود.



این SSMS چیه؟

(نمیدانم این را چرا دفعه قبل ندیدم!)
SQL Server Management Studio
برنامه ای برای مشاهده و ادیت محتویات دیتابیس



اگر فایل متحرک باشد باعث سنگین شدن برنامه و کند بالا آمدن می شود؟

گمان نمیکنم فرق خاصی بکند.
بالخره در عملیات های زمان بر چیزی به کاربر نشان میدهند تا بداند برنامه کار میکند !



برای بسته شدن این فرم متد خاصی وجود داره یا باید خودمون متدشو بنویسیم؟

مثل یک فرم عادی نمایش میدهید و میبندید !



زیر می یاد .من نفهمیدم چی میگه.ممنون می شم کمک کنید
چون من تو یه فرم دیگه هم این error رو دارم.

اصولاً روش جمع String برای ساخت دستور SQL و اجرای ان روش صحیحی نیست و نباید استفاده شود.
نمونه ای از روش کدنویسی صحیح پارامتری را میتوانید در تاپیک زیر و پست 8 مشاهده کنید:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]



همون 4 تا text و label رو داریم یعنی دکمه و checkbox رو هم نداریم

1) مطمئن شوید برنامه خطا و مشکل سینتکسی ندارد ...
اگر برنامه مشکل و خطایی نوشتاری داشته باشد، کامپایل نخواهد شد و دیالوگ هشداری نمایش داده میشود که Yes و No دارد و میگوید برنامه خطای نوشتاری دارد و کامپایل نشده و اگر میخواهید آخرین نسخه قبلی ان را نمایش دهد.
مطمئن شوید مشکل شما این مورد نبوده

2) کل پروژه را صراحتاً و مستقیم کامپایل کنید.
Build->Build Solution

sanam.b
30-09-2009, 23:59
با سلام دوباره

سلام به همه دوستان مشکل من اینه که حروف فارسی در بانک اطلاعاتی به صورت علامت سوال دیده میشه
برای حل این مشکل دو راه حل به من پیشنهاد کردند:

1- نوع فیلدها را موقع تعریف nvarchar باشد، که من موقع ایجاد جدولها این کار رو کردم
2- در regional and language تب سوم (advance) زبان را فارسی انتخاب کنیم ، که این کار رو هم موقع نصب ویندوز من خودم انجام میدم

مسئله جالب اینجاست که اگه در محیط خود SQLserver در جدولها اطلاعات فارسی وارد میکنی ، درست نوشته میشه و درست هم ذخیره میشه ولی وقتی از طریق فرمها (درC # ) این کار رو انجام می دی به صورت علامت سوال در جدول ذخیره میشه.

ممنون میشم منو راهنمایی کنید

milky way
01-10-2009, 00:08
با سلام دوباره

سلام به همه دوستان مشکل من اینه که حروف فارسی در بانک اطلاعاتی به صورت علامت سوال دیده میشه
برای حل این مشکل دو راه حل به من پیشنهاد کردند:

1- نوع فیلدها را موقع تعریف nvarchar باشد، که من موقع ایجاد جدولها این کار رو کردم
2- در regional and language تب سوم (advance) زبان را فارسی انتخاب کنیم ، که این کار رو هم موقع نصب ویندوز من خودم انجام میدم

مسئله جالب اینجاست که اگه در محیط خود SQLserver در جدولها اطلاعات فارسی وارد میکنی ، درست نوشته میشه و درست هم ذخیره میشه ولی وقتی از طریق فرمها (درC # ) این کار رو انجام می دی به صورت علامت سوال در جدول ذخیره میشه.

ممنون میشم منو راهنمایی کنید
نباید این مشکل بوجود بیاد ولی با گذاشتن N قیل از پارامتر مشکل حل مشه.

_H2_
01-10-2009, 11:14
سلام

مسئله جالب اینجاست که اگه در محیط خود SQLserver در جدولها اطلاعات فارسی وارد میکنی ، درست نوشته میشه و درست هم ذخیره میشه ولی وقتی از طریق فرمها (درC # ) این کار رو انجام می دی به صورت علامت سوال در جدول ذخیره میشه
همانطور که جناب milky way هم متوجه شدند، شما متاسفانه متاسفانه متاسفانه از روش جمع String دستورات SQL استفاده میکنید. (که راه حلش درج N قبل از عبارت است)

ولی راه صحیح و مطلوب آن است که شما باید باید باید از روش ارسال پارامتری مقادیر استفاده کنید، این راه قطعی ارسال همه نوع فیلد بدون نگرانی امنیتی و نیز حضور کاراکترهای خاص تآثیر گذار است.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sanam.b
01-10-2009, 18:12
سلام


همانطور که جناب milky way هم متوجه شدند، شما متاسفانه متاسفانه متاسفانه از روش جمع String دستورات SQL استفاده میکنید.

جناب H2 این جمله شما منو شدیدا تحت تاثیر قرار داد پس رفتم از روش به قول پارامتری استفاده کردم
(من قبلا بی خیال این کار بودم چون می دانستم تایپ خیلی زیادی داره )

بخاطر همه کمکهای شما وسایر دوستان ممنون:11::40:

_H2_
01-10-2009, 22:11
سلام

من قبلا بی خیال این کار بودم چون می دانستم تایپ خیلی زیادی داره
شاید به ظاهر کمی بیشتر باشد ولی مطمئن باشید ارزشش را دارد !

1) جمع String هم زیاد کم نمیشودو ان هم کدنویسی زیادی دارد.
2) جمع String معمولاً بسیار مستعد خطاهی انسانی و تایپی است.
3) جمع String عموماً از چند منظر بازدهی سرعتی پایین تری دارد و اگر در روش پارامتری از SP داخل SQLServer استفاده شود که دیگر نور علی نور خواهد شد!
4) جمع String مستعد ضعف امنیتی و هک برنامه با "تزریق" است
5) جمع String برای مقادیر خاص String با کراکترهای خاص مستعد خطای runtime است.
6) جمع String برای مواردی مثل تاریخ و با توجه به تنظیمات ویندوز میتواند مشکل ساز شود، ضمن اینکه برای همه انواع غیر عددی و متنی (Guid و binary و...) میتواند مشکل ساز شود.


... یه Warning میده ... obsolete ...
این هشدار بیان میکند که متد و overload مورد استفاده شما (متد Add و نام+مقدار) وجود داشته و دارد ولی با توجه به سیاستهای جدید ساختاری این متد دیگر متد مناسبی برای انجام عمل مذکور نیست و حتی امکان دارد در نسخه های آینده Framework این متد کلاً حذف شود.

حلش هم ساده است!
پیشنهاد میکنم از همان overload ای استفاده کنید که من در پست قبلی ام استفاده کردم.
یعنی نام و نوع را بدهید و سپس در مقدار بازگشتی مقدار را تنظیم کنید، هم ساده و کوتاه است و هم به علت مشخص کردن نوع بسیار خوب است و مشخص کردن نوع اصلی ترین معیار پس از نام است.
(البته overload های بهتری وجود دارد ولی کدنویسی بیشتری میخواهد)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
(البته با استفاده از using System.Data تایپتان کمترهم خواهد شد.)

موفق باشید.

sanam.b
02-10-2009, 00:00
بازم سلام

چون من با روش پیشنهادی شما اصلا آشنا نیستم، .یک بار کدها رو نوشتم (به شکل زیر ) اما دو تاerror داشت ممنون میشم کد تصحیح کنید( البته با توجه به برنامه خودم نوشتم)


SqlConnection hemophili = new SqlConnection("Server=.;Database=kanon;User ID=sa; Password=*******");
SqlCommand hcom = new SqlCommand();
hcom.Connection = hemophili;
var dbcom = new System.Data.SqlClient.SqlCommand(sql);

hcom.CommandText = "INSERT INTO Komakhaye_eraeshode( date,numozviyat,noeozviyat,noekomak,numname,dname, dkomak,onvanename,kholasename,shomaresanad,mablaqh ,daryaftkonande,onvanedaryaft)"
+ "VALUES(@date,@numozviyat,@noeozviyat,@noekomak,@nu mname,@dname,@dkomak,@onvanename,@kholasename,@sho maresanad,@mablaqh,@daryaftkonande,@onvanedaryaft)";

dbcom.Parameters.Add("@date", SqlDbType.NVarChar).value = textBox134.Text;



error اول در خط

var dbcom = new System.Data.SqlClient.SqlCommand(sql);


The name 'sql' does not exist in the current context

(sql)رو خودم نوشتن چون در منویی که باز میشه وجود نداشت
Error دوم در خط

dbcom.Parameters.Add("@date", SqlDbType.NVarChar).value = textBox134.Text;

'System.Data.SqlClient.SqlParameter' does not contain a definition for 'value' and no extension method 'value' accepting a first argument of type 'System.Data.SqlClient.SqlParameter' could be found (are you missing a using directive or an assembly reference?)


من چند تا سوال هم داشتم
1- من به غیر از
using System.Data.Sql;
using System.Data.SqlClient;
باید فضای دیگه ای رو هم معرفی کنم
2- اصلا تعریف SqlCommand hcom و پارامترهای اون ضروریه؟

_H2_
02-10-2009, 02:48
سلام

ممنون میشم کد تصحیح کنید
من فقط متوجه نشدم چرا دوتا SqlCommand را دو بار new کرده اید؟؟؟ hcom چیست و dbcom چیست؟



error اول در خط
The name 'sql' does not exist in the current context
(sql)رو خودم نوشتن چون در منویی که باز میشه وجود نداشت

بدون هیچ شک و تردید نماد sql در برنامه شما تعریف نشده و این مشکل شما ربطی به روش پارامتری و غیر پارامتری هم ندارد.
با توجه به سوال بعدیتان من تصور میکنم به کوچکی و بزگی حروف دقت نکرده اید، فراموش نکنید که C#.Net به بزرگی و کوچکی حروف حساس است.



Error دوم در خط
does not contain a definition for 'value' and no extension method 'value' accepting

مشکل ارتباطی به روش پارامتری ندارد !
شما از VS استفاده میکند یا Notepad ؟؟؟؟؟ واقعاً میپرسم؟
وقتی نقطه بزنید باید در لیست Value را ببینید و با یک Tab خودش تایپ کند !!!!
در واقع شما حرف V را کوچک تایپ کرده اید و C#.Net برخلاف VB.Net به بزرگی و کوچکی حروف حساس است ولی برای کسانی که از VS استفاده میکنند با توجه به امکانات عادی تایپ کد معمولاً همچین مشکلاتی به وجود نمی آید !
اگر با VS کار میکنید، نقطه میزنید لیست باز میشود؟ اگر لیستی باز نمیشود احتمالاً تنظیمی را عوض کرده اید ؟!!



1- من به غیر از
using System.Data.Sql;
using System.Data.SqlClient;
باید فضای دیگه ای رو هم معرفی کنم

سلیقه خودتان است.
من شخصاً هیچ فضایی را (بجز using System) وارد نمیکنم و ترجیح میدهم کدهای کامل و یک دست بنویسم !
شما اگر دوست دارید میتوانید هر فضای نامی را با using (یا Imports در VB) در بالای کدتان وارد کند تا در کدنویسی نیاز به تایپ کامل نام اعضای داخل ان فضا نداشته باشید.


2- اصلا تعریف SqlCommand hcom و پارامترهای اون ضروریه؟
اگر منظورتان استفاده نکردن از روش پارامتری و استفاده از جمع String است ... (؟؟؟) به نظر شخصی من و احتمالاً برخلاف نظر شما (!) روش پارامتری خیلی ساده تر است و کدنویسی راحت تری هم دارد ولی اگر برای شما سخت است ...


1) جمع String هم زیاد کم نمیشودو ان هم کدنویسی زیادی دارد.
2) جمع String معمولاً بسیار مستعد خطاهی انسانی و تایپی است.
3) جمع String عموماً از چند منظر بازدهی سرعتی پایین تری دارد و اگر در روش پارامتری از SP داخل SQLServer استفاده شود که دیگر نور علی نور خواهد شد!
4) جمع String مستعد ضعف امنیتی و هک برنامه با "تزریق" است
5) جمع String برای مقادیر خاص String با کراکترهای خاص مستعد خطای runtime است.
6) جمع String برای مواردی مثل تاریخ و با توجه به تنظیمات ویندوز میتواند مشکل ساز شود، ضمن اینکه برای همه انواع غیر عددی و متنی (Guid و binary و...) میتواند مشکل ساز شود.


نمونه اصلاح شده کد خودتان با روش و علایق خودتان ...

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sanam.b
05-10-2009, 16:33
بازم سلام


من فقط متوجه نشدم چرا دوتا SqlCommand را دو بار new کرده اید؟؟؟ hcom چیست و dbcom چیست؟

دوست عزیز من زیاد SQL بلد نیستم و کم دقتی من رو ببخشید
من شک کرده بوده م اما مطمئن نبودم به همین دلیل سوال پایین رو پرسیده بودم.


اصلا تعریف SqlCommand hcom و پارامترهای اون ضروریه؟


اگر منظورتان استفاده نکردن از روش پارامتری و استفاده از جمع String است ... (؟؟؟) به نظر شخصی من و احتمالاً برخلاف نظر شما (!) روش پارامتری خیلی ساده تر است و کدنویسی راحت تری هم دارد ولی اگر برای شما سخت است ...



منظور من استفاده نکردن از روش پارامتری نبود، منظور من از پارامترها این بود که لازمه یه بار hcom رو تعریف کنی یک بار connection رو و یه بار دیگه CommandText اونو معرفی کنی که اونهم جواب سوالم رو گرفتم، ممنون :11:

sanam.b
06-10-2009, 23:20
سلام
من دوباره اومدم و باز هم یه سوال
فیلدهایی که در بانک اطلاعاتی دارای نوع tinyint اینطوری مقدار دهی می شن.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ولی اگه در هنگام ورود اطلاعات اگه چیزی در اونها نوشته نشه این
رو می ده (تو بانک اطلاعاتی اجازه خالی بودن به اونها داده شده است )


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

من دونم چون textbox خالیه هنگام تبدیل اون به int این مشکل پیش می یاد ولی
من چطور باید این مشکل رو حل کنم شاید یکی این مشخصات رو نداشته باشه انوقت باید چی نوشته بشه؟

_H2_
06-10-2009, 23:42
سلام

من دونم چون textbox خالیه هنگام تبدیل اون به int این مشکل پیش می یاد ولی
من چطور باید این مشکل رو حل کنم شاید یکی این مشخصات رو نداشته باشه انوقت باید چی نوشته بشه؟
در بیشتر مواقع شما باید خالی بودن و null بودن اشای را چک کنید.
(اگر کدهای من را ببینید شاید از تعداد خطوط کدهایی که اشای را با null مقایسه کرده اند تعجب کنید !)


ولی چون میخواهید Parse کنید، میتوانید این دستور چک کردن خالی بودن را با TryParse یک تکه کنید !
چون بجز خالی بودن textbox اگر مقادیر ناجور هم وارد شود باز خطا خواهید داشت.

ضمناً معادل tinyint در دات نت byte است پس کلاً این کد را پیشنهاد میکنم.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

فراموش نکنید که همیشه میتوانید تابع تعریف کنید !

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


یکی این مشخصات رو نداشته باشه انوقت باید چی نوشته بشه؟
اگر منظورتان ان است که وقتی خالی باشد یا عبارت صحیح درج نشود چه چیز معادلی باید در دیتابی ذخیره شود، به شما و برنامه تان بستگی دارد که مقدار پیشفرض برای این مواقع دارید یا نه ، مثل صفر که عشق من است (!) و NULL که برخی دوستش دارند ! البته میتوانید هم MsgBox ای نمایش دهید و از کاربر بخواهید مقادیر را صحیح پر کند! تصمیم با برنامه نویس است که شما باشید !

موفق باشید.

sanam.b
08-10-2009, 14:23
سلام

من می خوام وقتی در کمبو باکس "سرپرست" گزینه "سرپرست دارد " انتخاب شد، فرم دیگران باز شود برای این کار من از کد زیر استفاده می کنم


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اما بعدش من " Ndig " رو در لیست پیدا نمی کنم که بقیه کد رو ادامه بدم و در ضمن زیر " digaran "خط قرمز می کشه و error زیر رو می ده


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


ولی اگه در جاهای دیگه برنامه، این کد رو می نویسم درست کار می کنه و هیچ خطای ندارد
به نظر شمامشکل از کجاست؟
و من باید چیکار کنم؟

_H2_
08-10-2009, 15:11
سلام
اگر digaran نام یک فرم است و درست هم تایپش کرده اید این دستور را امتحان کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sanam.b
08-10-2009, 16:09
بازم سلام

دوتا سوال

1- من می خوام وقتی در کمبو باکس "سرپرست" گزینه "سرپرست دارد " انتخاب شد، فرم دیگران باز شود ، در این فرم دو تا textboxدارم و می خوام از محتویات آنها در فرم اصلی استفاده کنیم چطوری باید این کار رو انجام بدم؟

2- تو کتاب deitel&deitel تو بخش چک لیست باکس نوشته شده است:

checkeditem حاوی مجموعه ای از آیتمهای انتخاب شده است(جعبه چک آنها انتخاب شده باشد)
اما با دستور زیر


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اونچه در textbox نمایش داده میشه خط زیره


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

من باید از چه دستوری استفاده کنم که تمام گزینه های چک خورده (جعبه چک آنها انتخاب شده باشد) رو بتونم برگردونم؟

_H2_
09-10-2009, 18:32
سلام

می خوام از محتویات آنها در فرم اصلی استفاده کنیم چطوری باید این کار رو انجام بدم؟
گمانم جواب شما در تاپیک زیر است:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


... اونچه در textbox نمایش داده میشه خط زیره ...
خوب مگه انتظاری غیر از این داشتید؟ یا باید غیر از این باشد؟
CheckedItems یک کلاس برمیگرداند به مسیر System.Windows.Forms.CheckedListBox.CheckedItemCol lection ...
این هم یک کلاس است مثل سایر کلاسها ! حالا شاید حاوی یک مجموعه عنصر هم باشد ! اما دلیلی ندارد متد ToString عناصرش را لیست کند !

اصولاً این امر در کلاسهای مجموعه ها عرف و منطقی نیست ...
(
- اگر تعداد عناصر زیاد باشد این کار زمان بر خواهد بود و شاید اصلاً هدف برنامه نویس هم نبوده.
- فرمت تبدیل یک مجموعه عنصر به String میتواند بسیار متنوع باشد، مثلاً بین عناصر Enter باشد یا کاما و...
- اصلاً تضمینی ندارد عناصر داخل مجموعه خودشان به طرز صحیحی به String تبدیل شوند و ... (مثل همین که به String تبدیل شده)
و...
)


من باید از چه دستوری استفاده کنم که تمام گزینه های چک خورده رو بتونم برگردونم؟
چرا دنبال روشهای عجیب و غریب هستید؟

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید.

sanam.b
10-10-2009, 14:33
دوباره برگشتم
سلام
من اگه می خوام در پروژه م یه فرم جدید بازکنم یه صفحه باز میشه که این error توشه:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
از چند راه مختلف هم رفتم آخرش به همین می رسه، من باید چیکار کنم؟

_H2_
11-10-2009, 00:26
سلام
به نظر میرسد کاری انجام داده اید و بخشی از کدها را تخریب کرده اید.
مثلاً شاید "Form :" را حذف کرده باشید و یا namespace دو فایل اصلی به هم خورده باشد.
سعی کنید تمام پنجره ها را ببندید و یکبار کل پروژه را با فرمان Build Solution کامپایل کنید....
در صورت عدم توانایی در حل مشکل یا باید فرم را از اول تولید کنید یا اگر هر دو فایل فرم را خصوصی آپلود کنید، شاید بتوانم درستش کنم.
موفق باشید.

sanam.b
11-10-2009, 11:58
سلام

آیا می تونیم کدی بنویسیم که در ازای یک شرط قسمتی از کدهای برنامه اجرا نشه؟

تو تب پزشکی یکی از فرمهام، اطلاعات وارد شده مربوط به 3 جدوله یعنی با زدن دکمه" ذخیره " اطلاعات توی فرم باید در سه جدول ذخیره بشه.
حالا من می خوام بگم که اگه text کمبوی 12 مساوی "منفی" بود، در جدول درمان هیچ رکوردی درج نشود یعنی خطوط مربوط به درج رکورد در جدول درمان اجرا نشه.
برای این کار من باید چیکار کنم؟

sanam.b
11-10-2009, 14:11
بازم سلام


من می خوام وقتی در کمبو باکس "سرپرست" گزینه "سرپرست دارد " انتخاب شد، فرم دیگران باز شود ، در این فرم دو تا textboxدارم و می خوام از محتویات آنها در فرم اصلی استفاده کنیم چطوری باید این کار رو انجام بدم؟



گمانم جواب شما در تاپیک زیر است:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید




مثلاً در زبان #C شما میتوانید کدی مثل زیر را در فرم تان تعبیه کنید.
کد:
public string Tel
{
get
{
return this.txtTel.Text;
}
set
{
this.txtTel.Text = value;
}
}

public string FirstName
{
get
{
return this.txtFirstName.Text;
}
set
{
this.txtFirstName.Text = value;
}
}



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


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

فرم اول ، فرم دوم رو فراخوانی میکنه
در فرم دوم یه textbox داریم


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

و در فرم اول هم قرار محتویات textBox1 متعلق فرم دوم در textBox5 که مال فرم یک است نمایش داده بشه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در هر دو فرم به متغییرs1 دسترسی دارم اما در زمان اجرا برای خط


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

errorزیر رو به هم میده


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

فکر نمی کنم تو تعریف کلاس مشکلی باشه

احتمالا تو ارتباط فرمها مشکل باشه .ممنون می شم مثل همیشه کمکم کنید

_H2_
11-10-2009, 14:42
سلام


errorزیر رو به هم میده StackOverflowException

خوب نباید بده ؟؟؟ من خودم داشتم پستتان را میخواندم به ذهنم رسید باید همچین خطایی بدهید که شما در ادامه مطالب پست همین را پرسیدید !!!

property هایی که من در ان تاپیک تعریف کرده بودم و شما هم دیده بودید، اولاً static نبودند و دوماً محتویات یک عنصر کنترلر روی فرم را تنظیم میکردند.
شما یک property به صورت static تعریف کرده اید و در خود s1 دوباره s1 را تغییر میدهید؟؟؟؟
این که یک دور تا بینهایت میشود!!!!
شما نوشتید هر وقت s1 خواست تغییر کند s1 = value !!! این یعنی تا بینهایت ادامه می یابد !!!!

=====


در کل من اصلاً و ابداً متوجه نشدم که این کد را برای چی نوشته اید و یعنی چه(؟) که بتوانم کد بهتری را پیشنهاد کنم.
لطفاً توضیح دهید منظورتان از این دستورات چه بوده و چه قصدی نهایی داشتید:

فرم اول ، فرم دوم رو فراخوانی میکنه
در فرم دوم یه textbox داریم

Class1.s1 = textBox1.Text;
و در فرم اول هم قرار محتویات textBox1 متعلق فرم دوم در textBox5 که مال فرم یک است نمایش داده بشه

textBox5.Text = Class1.s1;

موفق باشید.

sanam.b
11-10-2009, 15:45
سلام


در کل من اصلاً و ابداً متوجه نشدم که این کد را برای چی نوشته اید و یعنی چه(؟) که بتوانم کد بهتری را پیشنهاد کنم.
لطفاً توضیح دهید منظورتان از این دستورات چه بوده و چه قصدی نهایی داشتید:

فرم اول ، فرم دوم رو فراخوانی میکنه
در فرم دوم یه textbox داریم

Class1.s1 = textBox1.Text;
و در فرم اول هم قرار محتویات textBox1 متعلق فرم دوم در textBox5 که مال فرم یک است نمایش داده بشه

textBox5.Text = Class1.s1;


من میخواستم محتویات textbox1 که در فرم دوم بود در textbox5 که در فرم یک قرار داره ببینم


در این فرم دو تا textboxدارم و می خوام از محتویات آنها در فرم اصلی استفاده کنیم چطوری باید این کار رو انجام بدم؟

جناب من چندان تجربه ای در کار با #C ندارم امید وارم که بی سوادی من رو به بزرگی خودتون ببخشید،من هر دفعه که خرابکاری می کنم کلی خجالت می کشم

_H2_
14-10-2009, 02:05
سلام
در فرم دوم (فرزند) کدی شبیه این اضافه میکنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

انگاه در فرم اول و اصلی (والد) هم کدی شبیه این خواهید نوشت:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sanam.b
15-10-2009, 12:51
سلام

این کدی که شما گفتید باید در جای خاصی نوشته بشه ؟


انگاه در فرم اول و اصلی (والد) هم کدی شبیه این خواهید نوشت:
کد:

using(Form2 f = new Form2())
{
f.ShowDialog(this);
this.TextBox5.Text = f.ItemName;
}


چون من اونو درفرم نوشتم اما 2 تا error را داد


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

_H2_
16-10-2009, 15:52
سلام


چون من اونو درفرم نوشتم اما 2 تا error را داد

کد مورد نظر را باید در داخل یک متد و رویدادی بنویسید ...
مثلاً وقتی دکمه ای کلیک میشود و میخواهد در رویداد کلیک ان دکمه فرم دوم باز شود.
نسخه VS چند است؟

sanam.b
17-10-2009, 01:08
سلام


نسخه VS چند است؟

2008


گر منظورتان ان است که وقتی خالی باشد یا عبارت صحیح درج نشود چه چیز معادلی باید در دیتابی ذخیره شود، به شما و برنامه تان بستگی دارد که مقدار پیشفرض برای این مواقع دارید یا نه ، مثل صفر که عشق من است (!)

من برای فیلدهای عددی در sqlserver پیش فرض صفر وارد کردم اما بعد مدتی اتفاقی دیدم که اون مقادیر صفر این جوری نوشته شده اند:

((0))

به نظر شما اشکالی نداره؟ یا یه چیزه عادی که من ازش خبری ندارم؟

_H2_
18-10-2009, 00:26
سلام

به نظر شما اشکالی نداره؟ یا یه چیزه عادی که من ازش خبری ندارم؟کاملاً عادی و بدون مشکل است.

sanam.b
26-10-2009, 18:32
بازم سلام

بعد از قسمت درج اطلاعات به ویرایش میرسم
اما
برای ویرایش ابتدا باید با پرس و جو یک رکورد را پیدا کرده و اطلاعات اون رو در کنترلها نمایش داد
ولی من با متصل کردن کنترلها به بانک اطلاعاتی( از طریق کد نویسی) مشکل دارم
مثلا من می خوام دستور زیر رو در بانک اطلاعاتی اجرا کنم
Select * from hedye
Where id=437
و اطلاعاتش را در فرم نشون بدم (مکانیزم ناوبری برای حرکت جلو و عقب بین پرونده افراد ندارم)
ممنون می شم یه مثال کوجولو برام بذارید
که شامل معرفی کردن DataAdapter و DataSet و DataView و ارتباط دادنش باهم DataBindings کنترلها و نمایش اطلاعات در کنترلها باشد.

با تشکر

sanam.b
27-10-2009, 12:38
با سلام دوباره

برای استفاده از دستور () ReadFile باید چه فضای نامی رو معرفی کنم ؟

چون در دستور زیر

byte[] imageData = ReadFile(txtImagePath.Text);

ReadFile رو نمی تونم در لیست پیدا کنم.

_H2_
27-10-2009, 21:33
سلام


مثلا من می خوام دستور زیر رو در بانک اطلاعاتی اجرا کنم
Select * from hedye
Where id=437
و اطلاعاتش را در فرم نشون بدم (مکانیزم ناوبری برای حرکت جلو و عقب بین پرونده افراد ندارم)
ممنون می شم یه مثال کوجولو برام بذارید
که شامل معرفی کردن DataAdapter و DataSet و DataView و ارتباط دادنش باهم DataBindings کنترلها و نمایش اطلاعات در کنترلها باشد.

اگر در کدتان از DataSet و DataAdapter استفاده میکنید، مورد فوق هم فرق خاصی ندارد.

1)
اگر TypedDataSet دارید به نمایه طراحی ان بروید و روی DataAdapter در بخش پایینی راست کلید و فرمان AddQuery بدهید و ویزارد را پیگیری کنید و دستوری SQL زیر را برای انتخاب وارد کنید.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

آخر سر در TypedDataAdapter تان یک Fill و GetData جدید خواهید داشت که یک پارامتر عددی هم میگیرد و فقط همان یک سطر مربوطه را باز میگرداند.

2)
اگر هم TypedDataSet و TypedDataAdapter ندارید که همینطوری دستور SQL را میدهد و بعد متد Fill را اجرا میکنید، کافی است به جای دستور SQL قبلی دستور جدیدتان را بدهید.


برای استفاده از دستور () ReadFile باید چه فضای نامی رو معرفی کنم ؟
من متدی به این نام در فضای های خود فریم ورک نمیشناسم ولی شاید متد System.IO.File.ReadAllBytes مشکلتان را حل کند.

موفق باشید.

sanam.b
02-11-2009, 18:17
با سلام دوباره


من میخواستم محتویات textbox1 که در فرم دوم بود در textbox5 که در فرم یک قرار داره ببینم

کدی که شما گفتید



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


چیزی که من نوشتم


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


حالا برنامه برای دو تا TextBox1 که تو فرم دوم نوشته شده خطای زیر رو میده


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

نکته : test نام برنامه است

_H2_
03-11-2009, 21:39
سلام
چیزی که مشخص است این است که شما در فرم دومتان TextBox1 ندارید !!!
البته #C به بزرگی و کوچکی حروف حساس است (بر خلاف VB) نتیجتاً شاید شما textBox1 داشته باشید ولی TextBox1 ندارید.

تاجایی که یادم می آید در پست های قبلی هم همچین مشکلاتی داشته اید!
VS باید منوی کمکی و پیشنهادی برای تایپ شما باز کند!


شما از VS استفاده میکند یا Notepad ؟؟؟؟؟ واقعاً میپرسم؟
وقتی نقطه بزنید باید در لیست Value را ببینید و با یک Tab خودش تایپ کند !!!!
در واقع شما حرف V را کوچک تایپ کرده اید و C#.Net برخلاف VB.Net به بزرگی و کوچکی حروف حساس است ولی برای کسانی که از VS استفاده میکنند با توجه به امکانات عادی تایپ کد معمولاً همچین مشکلاتی به وجود نمی آید !
اگر با VS کار میکنید، نقطه میزنید لیست باز میشود؟ اگر لیستی باز نمیشود احتمالاً تنظیمی را عوض کرده اید ؟!!

sanam.b
09-11-2009, 13:22
با سلام دوباره

در برنامه زیر

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در خط

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

خطای زیر رو دارم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


به من گفتند که

object.DataBindings.Add(propertyName,dataSource, dataMember);


dataMember: مشخص کننده ی نام فیلدی از منبع داده ای است که می خواهیم آنرا به خاصیت propertyName از کنترل متصل کنیم

خوب در اینجا "famili" هم نام فیلد جدول است پس من کجا اشتباه کردم؟

(من می خوام با این دستورات اطلاعات یک رکورد در فرم نمایش داده بشه)

sanam.b
09-11-2009, 23:17
با سلام به همه دوستان

به طور پیش فرض وقتی یه برنامه رو اجرا می کنیم فرم اولstartup است ولی اگه بخوایم مثلا فرم 4 startup باشه باید چیکار کنیم؟
در propertise برنامه من و در تب application یه گزینه به اسم object startup بود که شامل دو گزینه no set و test.program است ولی من نتونستم فرمها رو در اون پیدا کنم .

برای تغییر فرم startup باید چیکار کنم؟

sanam.b
10-11-2009, 18:07
دوباره سلام

برنامه ای داریم که دارای 3 فرم است، فرم های 1و 2 هر دو فرم 3 رو جداگانه فراخوانی می کنند
یعنی در هر دو داریم که


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ولی برای من لازمه که بدونم الان f3 از طریق کدام فرم فراخوانی شده است (چون باید یه مقدار به برنامه برگرداند)
ممنون می شم کمکم کنید.

_H2_
11-11-2009, 01:20
سلام


Cannot bind to the property or column famili on the DataSource

متن خطا مشخص است.
فیلدی با نام "famili" را در منبع دیتای شما پیدا نکرده!
- یا dataset را درست پر نکردید ...
- یا دستور SQL-SELECT تان ایراد دارد ...
- یا نام جدول و یا نام فیلدتان غلط تایپی دارد ...
و...



برای تغییر فرم startup باید چیکار کنم؟

فایل کدی به نام Program.cs دارید که در خط آخر این فایل میتوانید نام فرم شروع شونده را تغییر دهید.



ولی برای من لازمه که بدونم الان f3 از طریق کدام فرم فراخوانی شده است

خوب راه های مختلفی دارد ...
ساده ترین راه آن است که برای حالت مختلفی پارامتری را در زمان new کردن به آن پاس بدهید ...

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

که TypeName میتواند هر چیزی باشد که برای کارتان نیاز دارید ... یک bool یا int یا string یا اصلاً یک System.Windows.Forms.Form و...

کد فراخوان هم میتواند شبیه این باشد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

که valuename مقدار ارسالی شما خواهد بود.
(برای ارسال اشاره گر کلاس فراخوان جاری میتوانید از this استفاده کنید در حالیکه مثلاً TypeName یک System.Windows.Forms.Form باشد)

موفق باشید.

sanam.b
12-11-2009, 21:42
بازم سلام


متن خطا مشخص است.
فیلدی با نام "famili" را در منبع دیتای شما پیدا نکرده!
- یا dataset را درست پر نکردید ...
- یا دستور SQL-SELECT تان ایراد دارد ...
- یا نام جدول و یا نام فیلدتان غلط تایپی دارد ...
و...
نمی دونم منظور شما از پر کردن dataset چیه؟

من می دونم با این دستور dataset ایجاد میشه

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

دستورSQL هم فکر نمی کنم ایراد داشته باشه

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نام همه فیلدها و جدول و.. رو از نظر حروف کوچک و بزرگ (چه در بانک و چه در دستور )چک کردم.
فکر می کنم خطا باید از دستورات باشه نه از بانک چون اگه سطر اول که مربوط به فیلد "famili"غیر فعال می کنیم از فیلد بعدی اشکال می گیره

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

من حتی مکان این چند دستور رو هم عوض کردم گفتم شاید در مکان درستی قرار ندارند ما باز هم تاثیری نداشت.

این هم کد


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sanam.b
12-11-2009, 23:17
سلام

شما گفتید

خوب راه های مختلفی دارد ...
ساده ترین راه آن است که برای حالت مختلفی پارامتری را در زمان new کردن به آن پاس بدهید ...
کد:


public partial class Form3
: System.Windows.Forms.Form
{
private TypeName m_ParamName;

public Form3(TypeName ParamName)
{
this.InitializeComponent();
this.m_ParamName = ParamName;
}

//...
}

که TypeName میتواند هر چیزی باشد که برای کارتان نیاز دارید ... یک bool یا int یا string یا اصلاً یک System.Windows.Forms.Form و...

کد فراخوان هم میتواند شبیه این باشد:
کد:


Form3 f3 = new Form3(valuename);
f3.Show();

که valuename مقدار ارسالی شما خواهد بود.
(برای ارسال اشاره گر کلاس فراخوان جاری میتوانید از this استفاده کنید در حالیکه مثلاً TypeName یک System.Windows.Forms.Form باشد)


منهم نوشتم


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

مقدارهای برگشتی درست هستند
ولی بعد از اجرای خط

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اگر از فرم 2 فراخوانی شده باشد به جای فرم سه، فرم 2 نمایش داده می شودو اگر از فرم یک فراخوانی شده باشد به جای فرم سه، فرم 1 نشان داده می شود به نظر شما من باید چیکار کنم؟

sanam.b
12-11-2009, 23:19
یه سوال دیگه هم برام پیش اومده: چرا هیچ یک از دوستان به غیر از H2 به سوالاتم پاسخ نمی دن، اولا mahdi7610 و mahdi7s به سوالام پاسخ می دادند ولی بعدا خبری ازشون نشد. آیا خطایی از من سر زده ؟

naser_feb8646
13-11-2009, 00:16
یه سوال دیگه هم برام پیش اومده: چرا هیچ یک از دوستان به غیر از H2 به سوالاتم پاسخ نمی دن، اولا mahdi7610 و mahdi7s به سوالام پاسخ می دادند ولی بعدا خبری ازشون نشد. آیا خطایی از من سر زده ؟

سلام
دوست عزیزتجربه تقریباً دوساله من اینجوری بهم می گه که توی این بخش اگر کسی زحمت جواب دادن به یه تاپیک رو بکشه بقیه به احترام اون شخص دیگه توی اون بحث شرکت نمی کنن

و اما با اجازه جناب H2 عزیز


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ببین دوست عزیز توی هر دوتا کدی که قرار دادی شما قبل از اینکه دیتاست رو از اطلاعات پر کنی اومدی دیتا ویو خودت رو مقدار دهی کردی و وقتی هم که توی دیتاست جدولی نباشه دیتاویو از هیچی پر می شه پس شما اول دیتاست رو پر کن و بعد به دیتاویو اطلاعات بده

یاعلی

_H2_
13-11-2009, 14:09
سلام

... ولی بعدا خبری ازشون نشد. آیا خطایی از من سر زده ؟
جواب جناب naser_feb8646 در مورد سوالتان کاملاً صحیح بوده.
خوب و بدش را نمیدانم، ولی حالتی که جناب naser_feb8646 بیان کردند در تالار وجود دارد.

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

سایر دوستان که جواب سوالات را هم میدانند اینطور احساس میکنند که گفتگو حالت خصوصی دو نفره پیدا کرده ...
و شاید مشتاق هم باشند که جواب سوالات شما را بدهند و تاپیک را هم پیگیری کننند ولی به دلیل احترام گذاشتن به نوعی حریم صحبت دونفره وارد بحث تاپیک نمیشوند.


حالا انشا ا... با مطلب ارسالی خودتان و نیز جناب naser_feb8646 بقیه دوستان هم احساس گفتگوی جمعی "تالار گفتگویی" نماییند و در تاپیک شما مشارکت بیشتری داشته باشند. :10:

بچه های خوبی در انجمن داریم و در هر صورت به شما قاطعانه تضمین میدهم که دلیل عدم شرکت سایر دوستان فقط و فقط ارزش و احترام است. :10:


اگر از فرم 2 فراخوانی شده باشد به جای فرم سه، فرم 2 نمایش داده می شودو اگر از فرم یک فراخوانی شده باشد به جای فرم سه، فرم 1 نشان داده می شود به نظر شما من باید چیکار کنم؟
درست متوجه نشدم!
یعنی چی؟
یعنی وقتی دستور نمایش فرم 3 را میدهید فرم 2 نمایش داده میشود !!!!


مقدارهای برگشتی درست هستند
این مقدار بازگشتی چیست؟؟؟ ربطی به مشکلی که مطرح کردید دارد؟


موفق باشید.

sanam.b
14-11-2009, 17:53
با سلام دوباره


این مقدار بازگشتی چیست؟؟؟ ربطی به مشکلی که مطرح کردید دارد؟

منظورم از مقدار بازگشتی همون مقداری که مشخص می کنه که از کدوم فرم فراخوانی شده


درست متوجه نشدم!
یعنی چی؟
یعنی وقتی دستور نمایش فرم 3 را میدهید فرم 2 نمایش داده میشود !!!!

راستش من این برنامه رو به دلیلی خط به خط اجرا کردم و نتیجه رو اینجوری دیدم( البته حالا هم این جوری می بینم اما اگه برنامه رو معمولی اجرا می کنم همه چی درسته ) احتمالا من قاطی کردم شما به بزرگی خودتون ببخشید

اما یه سوال دیگه

من اگه بخوام موقعیت یه کنترل رو تغییر بدم باید از چه دستوزاتی استفاده کنم (مثلا textbox از موقعیت 412,71 به موقعیت 412,30 بره)فکر می کنم باید از دستورات location ,move استفاده کنم اما طرز استفاده شو نمی دونم و برنامه بهم خطا داد .








دوست عزیزتجربه تقریباً دوساله من اینجوری بهم می گه که توی این بخش اگر کسی زحمت جواب دادن به یه تاپیک رو بکشه بقیه به
احترام اون شخص دیگه توی اون بحث شرکت نمی کنن

از لطف شما ممنونم

من یه چیز دیگه فکر می کنم : مثلا در همین تاپیک H2عزیز زحمت می کشند و به سوالات جواب می دن اگه یه نفر دیگه که جواب سوال رو می دونه به سوال جواب بده، H2 می تونند اون زمانی رو که برای جواب دادن به این سوالا در این تاپیک صرف می کنند به کارهای دیگه مثل جواب دادن به سایر تاپیک ها یا شایدم کارهای خصوصی خودشون صرف کنن و کم فکر نمی کنم این بی احترامی باشه .( البته این نظر منه ) منهم تابع نظر اکثریت هستم.
با تشکر از همه دوستان

naser_feb8646
14-11-2009, 21:38
سلام
دوست عزیز
شما با دستورات Left و Top می تونید اشیا رو روی صفحه حرکت بدی

TextBox1.Left
TextBox1.Top

یاعلی

sanam.b
14-11-2009, 22:46
با سلام دوباره

ما در یک جدول که مربوط به بیماریهاست 4 بیماری داریم که تامجموعا 7 تا فیلد عکس دارند که اطلاعات آنها آزمایشات اسکن شده است.
خوب حالا اگه یه نفر یه بیماری رو نداشته باشه پس اون فیلد برای اون رکورد خالی می مونه
ولی چون دستور درج اون نوشته شده هنگام درج در بانک اطلاعاتی به دلیل مشخص نبودن مسیر عکس پیغام خطا می ده.

تنها راهی که به نظر من می رسه اینه که یه switch 4 قسمتی بنویسم که مثلا اگر بیماری 1 وجود نداشت (با یه کمبو که گزینه های اون بلی/خیر است ،مشخص می شود) این سری از فیلدها رو درج کم و اگه بیماری 2 وجود نداشت ، این سری از فیلدها رو درج کن و .....

که اون هم بازم مشکل پیدا می کنه به این صورت که ممکنه شخص a بیماری 1 رو داشته باشه ولی بیماری 2و 3 و 4نداشته باشه ولی شخصb بیماری 1 و3 رو داشته باشه ولی 2 و4 رونداشته باشه و ..... که نتیجه اون یه switch تودر تو با چندین سطحه.
ممنون می شم که شما هم در این مورد راهنمایی کنید


اما یه مشکل دیگه هم اینه که وقتی که مراجعه کننده به کاربر این برنامه برای ثبت نام مراجعه می کنه یا علاوه برمدارک لازم عکس پرسنلی (4*3) رو هم می یاره یا نمی یاره که معمولا نمی یارن.
خوب حالا یا کاربر باید منظر بشه که مراجعه کننده عکس رو بیاره یا اطلاعات رو بدون عکس درج کنه که اونهم به همون دلیل بالا (مشخص نبودن مسیر عکس ) خطا می ده.

من این به فکرم رسید که برای درج 2 دکمه یا باتن بزارم یکی با عکس و یکی بدون عکس که این هم باعث میشه حدود 50 خط کد اضافه نوشته بشه.
نظر شما در این مورد چیه؟

naser_feb8646
15-11-2009, 10:17
سلام
دوست عزیز
من دقیقاً سوال شما رو متوجه نشدم ولی تا اونجایی که فهمیدم شما باید اونایی که عکس ندارن رو مثلاً با -1 پر کنید و در موقع فراخوانی چک کنید اگر مقدار -1 بود یعنی عکسی وجود نداره و اگر هم نبود عکس رو نمایش بده

یاعلی

sanam.b
15-11-2009, 11:40
بازم سلام
من متوجه منظور شما نشدم پس سوالاتم رو مرحله به مرحله می پرسم



شما باید اونایی که عکس ندارن رو مثلاً با -1 پر کنید و در موقع فراخوانی چک کنید اگر مقدار -1 بود یعنی عکسی وجود نداره و اگر هم نبود عکس رو نمایش بده

1- من در مرحله درج عکس در بانک اطلاعاتی هستم هنوز به قسمت نمایش نرسیدم
2- من برای درج عکس از دستورات زیر استفاده می کنم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Filep مسیر عکس است که از openFileDialog بر می گردد

فیلد عکس هم در بانک اطلاعاتی (varbinary(MAXاست
خوب من حالا چه چیزی رو باید با -1 پر کنم ؟

sanam.b
15-11-2009, 19:44
با درود فراوان

من می خوام باSQL دستوری بنویسم که نام و نام خانوادگی رو از textbox بگیرم و جدول خیّر بگرده و شماره اونو برگردونه و نمی خوام در هیچ textbox یا datagride نشون داده بشه بلکه در یک متغییر ذخیره بشه ، که بعدا باهاش کار دارم


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

مسئله اینهکه چه طوری باید از این shomare در سی شارپ استفاده کرد(به اون دستیابی داشت)؟آیا اونو باید در ابتدا معرفی کرد؟
اصلا دستور بالا درست هست؟

naser_feb8646
15-11-2009, 21:47
بازم سلام
من متوجه منظور شما نشدم پس سوالاتم رو مرحله به مرحله می پرسم




1- من در مرحله درج عکس در بانک اطلاعاتی هستم هنوز به قسمت نمایش نرسیدم
2- من برای درج عکس از دستورات زیر استفاده می کنم

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Filep مسیر عکس است که از openFileDialog بر می گردد

فیلد عکس هم در بانک اطلاعاتی (varbinary(MAXاست
خوب من حالا چه چیزی رو باید با -1 پر کنم ؟

سلام
دوست عزیز می خواستم یه بار دیگه سوال شما رو به صورت جمله به جمله بنویسم و شما تایید کنید

1-
ما در یک جدول که مربوط به بیماریهاست 4 بیماری داریم که تامجموعا 7 تا فیلد عکس دارند که اطلاعات آنها آزمایشات اسکن شده است.

فیلد های جدول شما 7 عکس هستش یا 4 بیماری
یعنی اطلاعات قرار بر اساس کدومشون وارد بشه عکسها یا بیماری ها

2-
اما یه مشکل دیگه هم اینه که وقتی که مراجعه کننده به کاربر این برنامه برای ثبت نام مراجعه می کنه یا علاوه برمدارک لازم عکس پرسنلی (4*3) رو هم می یاره یا نمی یاره که معمولا نمی یارن.
خوب حالا یا کاربر باید منظر بشه که مراجعه کننده عکس رو بیاره یا اطلاعات رو بدون عکس درج کنه که اونهم به همون دلیل بالا (مشخص نبودن مسیر عکس ) خطا می ده.

خوب برای این مشکلتون شما قبل از اینکه پارامتر دستور INSERT رو وارد کنید با یک دستور If میاید مقدار بازگشتی از کادر openFileDialog رو چک می کنید اگر مقدار پر بود مسیر عکس رو ذخیره می کنید و اگر خالی بود با یک مقدار قراردادی مثل 1- ذخیره می کنید



با درود فراوان

من می خوام باSQL دستوری بنویسم که نام و نام خانوادگی رو از textbox بگیرم و جدول خیّر بگرده و شماره اونو برگردونه و نمی خوام در هیچ textbox یا datagride نشون داده بشه بلکه در یک متغییر ذخیره بشه ، که بعدا باهاش کار دارم

کد:
"SELECT ID AS shomare FROM khayer WHERE name='" + textBox1.Text + "',famili='" + textBox1.Text + "'";
مسئله اینهکه چه طوری باید از این shomare در سی شارپ استفاده کرد(به اون دستیابی داشت)؟آیا اونو باید در ابتدا معرفی کرد؟
اصلا دستور بالا درست هست؟


در مورد این سوال هم شما می تونید از متد ExecuteScalar() مربوط به شی sqlCommand استفاده کنید که فقط یک مقدار را بر می گردونه و در یک متغیر از نوع Object ذخیره می کنه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

یاعلی

_H2_
16-11-2009, 12:46
سلام

ما در یک جدول که مربوط به بیماریهاست 4 بیماری داریم که تامجموعا 7 تا فیلد عکس دارند که اطلاعات آنها آزمایشات اسکن شده است.
خوب حالا اگه یه نفر یه بیماری رو نداشته باشه پس اون فیلد برای اون رکورد خالی می مونه
ولی چون دستور درج اون نوشته شده هنگام درج در بانک اطلاعاتی به دلیل مشخص نبودن مسیر عکس پیغام خطا می ده.

من حدس میزنم شما در NULL در فیلد دیتابیس مشکل دارید.
تفاوتی که وجود دارد انجاست که Null دیتابیس با Null دات نت تفاوت دارد.
(مایکروسافت میتوانست ایت تفاوت رااز بین ببرد!)

اگر شما با روش پارامتری کار کنید و دستوری مثل این برای Null بودن فیلدی در دیتابیس بدهید، نتیجه ان خطا خواهد بود!

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ولی دستورات زیرر صحیح کار خواهند کرد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

نتیجتاً شما باید قبل از ذخیره مقدار پارامترهای null دات نتی را تشخیص داده و با dbnull تعویض کنید ...
مثلاً چیزی شبیه این ها :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

و یا بهتر از کد قبلی: (خودم شخصاً این را ترجیح میدهم!)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

با کدهای فوق باید مشکل خاصی بودن فیلدهایتان و ذخیره انها حل شود.
موفق باشید.

sanam.b
19-11-2009, 13:01
با سلام دوباره به همه دوستان

چند روز بود که به اینترنت دسترسی نداشتم(چقد راحت بودید شما)

1- جناب naser_feb8646 از راهنمایی شما ممنون، فکر می کنم که به کمک شما تونستم یه راه حل واسه مشکلم پیدا کردم.

شما گفتید :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


من نوشتم:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در خط

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خطای زیر رو داد

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اول فکر کردم که خطا مال دستورSQL است اما چیز اشتباهی در اون پیدا نکردم
ممنون میشم کمکم کنید





2- جناب H2
گفتید که :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

فکر می کنم که دستور بالا برای درج عکس در بانک اطلاعاتی است
جلوی خط مقابل باید چه چیزی را بنویسم؟

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

مسیر عکس را باید بنویسم؟ مسیر عکس که بصورت رشته است پس باید چی رو بنویسم؟ ممنون می شم در مورد این خط کمی توضیح بدید.

(من فایلی را که شما قبلا در مورد درج و لود عکس گذاشته بودید دیدم اما برای من سطح بالا بود و چیزهای کمی رو از اون فهمیدم برای همین از یه روش ساده تر استفاده کردم )


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اما بیشتر مایلم از روش بالا که شما نوشته بودید استفاده کنم.

_H2_
19-11-2009, 14:22
سلام

خطای زیر رو داد Incorrect syntax near ','.
من صحبت های قبلی شما را پیگیری نکردم ...
(
شاید هم یکی دیگر از دلایل عدم شرکت سایرین در یک تاپیک همین باشد که کل گفتگو های قبلی و مطالبی که عطف به پست های قبلی میشود را دنبال نکرده باشند و از مطالب قبل و مرتبط این پست و سوال مطلع نباشند.
)

با اجازه دوستان از کدی که الآن در این پست اخری دیدم، کد زیر را فقط پیشنهاد میکنم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
جواب کامل سوالتان را انشا... جناب naser_feb8646 که خودشان در جریان بوده اند خواهند داد)

==============


جلوی خط مقابل باید چه چیزی را بنویسم؟
شما باید عکس را به صورت آرایه بایتی بخوانید و در متغییر value1 بریزید.
برای پر کردن value1 میتوانید از چیزی شبیه یکی از دو تابع زیر کمک بگیرید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اولی آرایه را از مسیر یک فایل بتولید میکند و دومی آرایه را از یک Image موجود تولید میکند.

ضمناً در دستورات پست قبلی ام یک قالب ریزی (object) قبل از مقادیر یادم رفته بود که کد را در همان پست اصلاح کردم، میتوانید از کد اصلاح شده استفاده کنید.

==============

جمیعاً موفق باشید.
:10:

sanam.b
19-11-2009, 18:50
با سلام چند باره

یه سوال

تا الان جستجو فقط بر اساس یه فیلد بود که محتویات اون از textboxگرفته می شد


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اما اگه قرار باشه دستور از or کردن محتویات چند textbox گرفته بشه اون وقت دستور sql رو چه جوری می نویسیم ؟
مثلا برای پیدا کردن مشخصات یک خیّر سه راه داریم:

1- And کردن نام خانوادگی و نوع خیر(فرد است ، شرکت است ، ارگان است که از یک کمبو باکس انتخاب می شود)
2- فقط وارد کردن شماره عضویت
3- Orکردن دوگزینه بالا


من می خوام دستور شماره 3 رو بنویسم که البته بلد نیستم ، ممنون میشم کمکم کنید.

naser_feb8646
19-11-2009, 20:54
با سلام دوباره به همه دوستان

چند روز بود که به اینترنت دسترسی نداشتم(چقد راحت بودید شما)

1- جناب naser_feb8646 از راهنمایی شما ممنون، فکر می کنم که به کمک شما تونستم یه راه حل واسه مشکلم پیدا کردم.

شما گفتید :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


من نوشتم:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در خط

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خطای زیر رو داد

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اول فکر کردم که خطا مال دستورSQL است اما چیز اشتباهی در اون پیدا نکردم
ممنون میشم کمکم کنید

سلام
دوست عزیز مشکل کد شما توی اینه که در دستور SQL که قرار دادین از دو تا شرط استفاده کردین و هیچ عملگری بین اونها نذاشتین.
توی دستورات SQL اگر می خواین از چند شرط استفاده کنید باید از علگرهای AND یا OR کمک بگیرید

کد

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
من در کد بالا از عملگر AND استفاده کردم که شما می تونید از عملگر OR هم استفاده کنید




سلام
نقل قول:
خطای زیر رو داد Incorrect syntax near ','.
من صحبت های قبلی شما را پیگیری نکردم ...
(
شاید هم یکی دیگر از دلایل عدم شرکت سایرین در یک تاپیک همین باشد که کل گفتگو های قبلی و مطالبی که عطف به پست های قبلی میشود را دنبال نکرده باشند و از مطالب قبل و مرتبط این پست و سوال مطلع نباشند.
)

با اجازه دوستان از کدی که الآن در این پست اخری دیدم، کد زیر را فقط پیشنهاد میکنم:
کد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
جواب کامل سوالتان را انشا... جناب naser_feb8646 که خودشان در جریان بوده اند خواهند داد)


من هم با کد بالا که جناب H2 زحمتش رو کشیدن موافق هستم چون باعث استفاده بهینه از حافظه می شود

یاعلی

sanam.b
21-11-2009, 01:13
سلام:41:

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


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در هر دو دستور Khayer نام یک جدول از بانک اطلاعاتی است اما
با دستور اولی اطلاعات در جدول درج می شود ولی در دومی میگه که:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

من برای رفع این اشکال رفتم نام جدول رو از SQL کپی کردم آوردم تو این دستور کپی کردم تاثیر نداشت
بعد همین نام رو از دستور اول کپی کردم و تو دستور دوم پیست کردم هیچ تاثیری نداشته همه چی رو در مورد حروف بزرگ و کوچیک رعایت کردم
این دستور به صورت رشته است و هیچ منویی هم باز نمی شه که تو منو بتونم عناصر رو انتخاب کنم

این هم کد:
قرار نام ونام خانوادگی رو از textbox بگیره و شماره بر گردونه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای هر جدولی درست کار می کنه الا این جدول (اصلا خود کد برای کارکردن با این جدول نوشته شده)
من اینو با یه کد دیگه امتحان کردم دوباره همین خطا رو می ده

خوب اگه خطا از جدوله چرا تو درج مشکلی نداره؟
بنظر شما من باید چیکار کنم؟

naser_feb8646
21-11-2009, 09:31
سلام
دوست عزیز فکر کنم این علامت ; که در کد با رنگ قرمز مشخص کردم برات مشکل ایجاد می کنه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

یاعلی

sanam.b
21-11-2009, 11:55
با سلام دوباره



دوست عزیز فکر کنم این علامت ; که در کد با رنگ قرمز مشخص کردم برات مشکل ایجاد می کنه



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

خط مورد نظر را به این شکل تغییر دادم اما مشکل حل نشد


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

من گفتم، برای جدولهای دیگه درست کار می کنه اما با این جدول مشکل داره

sanam.b
21-11-2009, 12:01
با سلام دوباره



دوست عزیز فکر کنم این علامت ; که در کد با رنگ قرمز مشخص کردم برات مشکل ایجاد می کنه



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

خط مورد نظر را به این شکل تغییر دادم اما مشکل حل نشد


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

_H2_
21-11-2009, 18:58
سلام
سلام


دوست عزیز مشکل کد شما توی اینه که در دستور SQL که قرار دادین از دو تا شرط استفاده کردین و هیچ عملگری بین اونها نذاشتین

اتفاقاً من هم همینطوری دستور خود ایشان را برداشم نوشتم و فقط texbox ها را پارامتری کردم و اصلاً حواسم نبود این ایراد تابلو را اصلاح کنم!!!!!:31::11:
البته فوراً پست قبلی را ویرایش کردم.:11:


با دستور اولی اطلاعات در جدول درج می شود ولی در دومی میگه که
ConnectionString را به دیتابیس دیگری عوض نکرده اید؟
البته یادم نیست ولی من معمولاً از فیلد هایی با نام خاص مثل id استفاده نمیکنم، شاید کلمه رزو شده ای باشد.
دستور زیر را آزمایش کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

حتماً هم یکبار پروژه را کامل از منو Build کامپایل کنید.

hobab1987
22-11-2009, 14:07
سلام
كد فوق(چند شرطي) را با پايگاه Access چطوري بايد نوشت؟
منظور:



SELECT [id] FROM [Khayer] WHERE (([famili] =@famili) AND ([nam]=@nam));

hobab1987
22-11-2009, 14:26
ببخشيد دوستان
وقتي برنامه رو اجرا مي كنم و فيلدها رو پر مي كنم اگر چند تا رو خالي بزارم موقع ثبت داده ها گير ميده كه اين چند تا رو خالي گذاشتي علتش مي دونيد چيه؟
(تنظيمات َپايگاه access رو required=no گذاشتم)

_H2_
22-11-2009, 16:39
سلام

كد فوق(چند شرطي) را با پايگاه Access چطوري بايد نوشت؟
فرق خاصی ندارد.


وقتي برنامه رو اجرا مي كنم و فيلدها رو پر مي كنم اگر چند تا رو خالي بزارم موقع ثبت داده ها گير ميده كه اين چند تا رو خالي گذاشتي علتش مي دونيد چيه؟
اگر در دیتابیس قابلیت NULL و خالی بودن دارند ولی در برنامه خالی باشد، خطا میدهد مشکل شما در پست 138 همین تاپیک جواب داده شده:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

البته به صورت معمول بهتر بود تاپیک جدیدی برای سوالتان ایجاد میکردید.
انشاا... مشکلتان حل شود.

hobab1987
22-11-2009, 22:10
با دستور sql بود متوجه نشدم كه با پايگاه اكسس چطوري پياده سازي كنم، تاپيك جديد زدم .
به هر حال تشكر

sanam.b
23-11-2009, 20:08
باسلام دوباره

اشتباه من در این دو خط چیه که براشون پیغام خطا صادر میشه. ممنون می شم اگه برام درستش کنید.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید



خطاها


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

من می دونم که می گه object رو نمی تونه به string یا long تبدیل کنه و تبدیل صریح می خواد اما من متاسفانه همیشه در تبدیلات مشکل داشتم

sanam.b
23-11-2009, 21:28
سلام



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

با دستوورات زیر قرار است مشخصات یک رکورد از جدول خیّر در فرم نمایش داده شود(مشکل قبلی من با جدول خیّر حل شد)
برنامه بدون هیچ اشکالی اجرا می شود اما هیچ اطلاعاتی در textbox ها نمایش داده نمی شود

مشکل یا از اتصال به بانک اطلاعاتی است یا از اتصال به textbox ها
نظر شما چیه ؟ من کجا اشتباه کردم؟

آیا من می تونم محتویات dataset یا dataview رو ببینم؟
که بفهمم اشکال از مورد اول است یا نه؟

_H2_
24-11-2009, 14:38
سلام


با دستور sql بود متوجه نشدم كه با پايگاه اكسس چطوري پياده سازي كنم، تاپيك جديد زدم .

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



اشتباه من در این دو خط چیه که براشون پیغام خطا صادر میشه. ممنون می شم اگه برام درستش کنید.

خیلی مشخص است.
شما در واقع همچین جدی نوشته اید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
DBNull یک متن نیست که بتوان آن را در یک string جای داد.
DBNull که عدد مشخصی نیست تا بتوان ان را در یک long جای داد.


دلیلی صحیح کار کردن کدی که من نوشتم ان بود که خصیصه Value ای که من این حاصل را در ان ریختم یک object است.
در واقع:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

چون نوع خصیصه Value شی پارامتر object است هر چیزی را میتواند چشم بسته قبول کند و در خود جای دهد.

ولی شما در کد نویسی عادی هیچکجا نمیتوانید یک مقدار غیر عددی را در یک int یا long بریزید، تنها تشابه در ?int و ?long وجود دارد که ربطی به بحث ما ندارد.
شما سعی کنید فقط در قدم اخر و در محل تخصیص Value پارامتر این تخصیص صحیح DBNull را انجام دهید.



مشکل یا از اتصال به بانک اطلاعاتی است یا از اتصال به textbox ها
نظر شما چیه ؟ من کجا اشتباه کردم؟

یکی از مزیت های Binding این است که کدهای تایپی شما را کاهش دهد ...
DataSet کلاً شی سریعی نیست ولی با توجه به اختلاف سرعت کم بین DataSet عادی و TypedDataSet پیشنهاد میکنم یک TypedDataSet بسازید و به جای DataView از BindingSource استفاده کنید و Binding ها را هم در همان نمایه طراحی انجام دهید.

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

حقیقتش زمانم بسیاتر بسیار اندک است و کار بسیار دارم، ولی شما با مطالبی که گفتم یک تستی کنید، اگر نشد، سعی میکنم یک سمپل ساده برایتان حاضر کنم.:11:



آیا من می تونم محتویات dataset یا dataview رو ببینم؟
که بفهمم اشکال از مورد اول است یا نه؟

میتوانید با QuickWatch در زمان دیباگ و یا گذاشتن یک DataGridView محتویات را مشاهده کنید.

موفق باشید.

sanam.b
27-11-2009, 23:34
سلام

عید قربان رو به همه دوستان تبریک میگم


مشکل یا از اتصال به بانک اطلاعاتی است یا از اتصال به textbox ها

یه چیزی برای من معلوم شد و اونم اینکه مشکل نه از اتصال به بانک اطلاعاتی است نه از اتصال به textbox ها

مشکل اینه که رکوردهایی که با حروف فارسی باشند نمایش داده نمیشه و فقط رکوردهایی که با انگلیسی(لاتین) نوشته شده باشه نمایش داده می شه

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

_H2_
29-11-2009, 01:20
سلام
به هر نوعی اگر مشکلی با فارسی در دیتابیس دارید ...
1) حتماً از فیلدهای یونیکدی مثل nchar و nvarchar و ntext استفاده کنید.
2) در ارسال پارامترها نوع انها را قید کنید.
3) اصلاً از جمع String برای ساخت دستورات SQL استفاده نکنید و اگر خدایی ناکرده از دستتان در رفت و استفاده کردید یک N قبل از شروع کتیشن قرار دهید.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sanam.b
06-12-2009, 11:55
سلام به همه دوستان

تصور کنید که برنامه یه سیستم دوقسمت شده یه قسمت قراره با سی شارپ و یه قسمت قراره با ویژوال سی پلاس پلاس 2008 نوشته بشه .

آیا در آخر موقع ادغام دوبرنامه یا وقت ارتباط دو برنامه مشکل پیش نمی یاد ؟
اصلا کلی در نظر بگیریم ،با شرایط بالا کی و کجا ممکنه مشکل پیش بیاد؟

_H2_
06-12-2009, 13:29
سلام

تصور کنید که برنامه یه سیستم دوقسمت شده یه قسمت قراره با سی شارپ و یه قسمت قراره با ویژوال سی پلاس پلاس 2008 نوشته بشه.
میتوانید به سادگی برنامه را به لایه های مختلف و بلوک های مختلف بشکنید و هر کدام را در یک dll جداگانه مستقر کنید.
هر dll را میتوان با هر زبان دات نتی نوشت و نباشد مشکلی وجود داشته باشد.
فقط در متدهای Public در چهارچوب استانداردهای CLS همه زبانهای دات نتی عمل کنید.

تنها نکته مهم آنجا است که سینتکس VC++.Net2008 نسبت به VC++.Net2005 تفاوت زیادی کرده و اگر مشکلی با نوشتن کدهای دات نتی در VC++.Net2008 نداشته باشید و برایتان سخت نباشد، نباید مشکلی هم با مچ شدن قطعات برنامه تان با C#.Net داشته باشید.

نکته کوچک دیگر هم ان است که اگر در VC++.Net برنامه شما در حالت pure کامپایل نشود برای حالت و ویندوز 32 بیتی و ویندوز 64 بیتی باید دو نسخه جدا از dll (یا exe) را فقط برای همان پروژه کامپایل کنید.
(یعنی یک dll برای کار کردن در ویندوز 32 بیتی و یکی برای 64 بیتی و...)

sanam.b
12-06-2010, 12:15
سلام به همه دوستان

دو تا سوال دارم

1- تو سی شارپ می تونیم تعیین کنیم که فرم به چه شکلی باز شه؟
من می خوام یک فرم به هنگام باز شدن به شکل کشویی باز بشه.
چه جوری این کار رو انجام بدم؟

2-تو فرم معمولا برای دریافت اطلاعات از textbox و combo و بقیه کنترلها استفاده می کنند آیا میشه به جای استفاده کردن از این کنترلها از جدولهای اکسس استفاده کنیم ؟
یعنی وقتی فرم ورود اطلاعات باز بشه تو اون یه جدول باشه که اطلاعات رو تو اون واردکنیم و بعد باز زدن دکمه ای بتونیم اطلاعات وارد شده رو در بانک اطلاعاتی ذخیره کنیم
اصلا امکان استفاده از اکسس در سی شارپ هست ؟

L u K e !
13-06-2010, 09:57
1 - این امکانو نداره مگه اینکه خودتون اینکارو کنید با یه تایمر به تغییر عرض و طول فرم می شه اینکار کرد
2 - جدول اکسس ؟ یعنی چی ؟ ( خوب Grid هست که ؟ )
امکان استفاده از اکسس هست ولی نه به این شکلی که شما می گی
اینجوری می تونی از Grid استفاده کنی

sanam.b
13-06-2010, 10:25
سلام


- این امکانو نداره مگه اینکه خودتون اینکارو کنید با یه تایمر به تغییر عرض و طول فرم می شه اینکار کرد

خیلی جالبه که سی شارپ همچین امکانی نداره


امکان استفاده از اکسس هست ولی نه به این شکلی که شما می گی
اینجوری می تونی از Grid استفاده کنی
ممنون میشم، کمی بیشتر توضیح دهید.

daniyal mirzai
14-06-2010, 21:15
سلام
من با کریستال ریپورت یه صفحه طراحی کردم ولی وقتی اجرامی کنم می گه که دیتا ست یا دیتا تیبل شما خالی هست
ممنون می شم اگه کسی کمکم کنه

_H2_
28-06-2010, 23:02
سلام

1- تو سی شارپ می تونیم تعیین کنیم که فرم به چه شکلی باز شه؟
من می خوام یک فرم به هنگام باز شدن به شکل کشویی باز بشه.
چه جوری این کار رو انجام بدم؟


خیلی جالبه که سی شارپ همچین امکانی نداره
!!!!!!!!!

یعنی چی همچین امکانی ندارد؟؟؟؟
خوب مفهوم زبان برنامه نویسی چیست؟
مثلاً چطور باید این امکان را میداشید؟
شما فارسی میگفتید و ان انجام میداد؟؟؟!!! :31:

شما دستورات خود را با زبان برنامه نویس تان به رایانه میگویید و ان انجام میدهد.
واقعاً متوجه نمیشوم که چطور میخواهید در یک محیط برنامه نویسی، کدی ننویسید و چیزی به رایانه نگویید و کاری برایتان انجام دهد!!!!

حلقه ای قرار دهید و کد و افکت دلخواه را بنویسید.


2-تو فرم معمولا برای دریافت اطلاعات از textbox و combo و بقیه کنترلها استفاده می کنند آیا میشه به جای استفاده کردن از این کنترلها از جدولهای اکسس استفاده کنیم ؟
یعنی وقتی فرم ورود اطلاعات باز بشه تو اون یه جدول باشه که اطلاعات رو تو اون واردکنیم و بعد باز زدن دکمه ای بتونیم اطلاعات وارد شده رو در بانک اطلاعاتی ذخیره کنیم
اصلا امکان استفاده از اکسس در سی شارپ هست ؟

امکان استفاده از فرم ها و دکمه ها و فرمهای نمایشی طراحی شده داخل خود Access وجود ندارد ولی به سادگی میتوانید از جداول آن با کنترلر های خود محیط و هر زبان برنامه نویسی استفاده کنید.
مثلاً در دات نت، با کنترلر DataGridView و حتی DataGrid قدیم میتوانید اطلاعات را جدولی نمایش داده و ویرایش و ذخیره کنید.

==============



من با کریستال ریپورت یه صفحه طراحی کردم ولی وقتی اجرامی کنم می گه که دیتا ست یا دیتا تیبل شما خالی هست

ضمن تبریک عضویت شما ...
بهتر است سوالات خودتان را در تاپیک های مجزا در سطح انجمن مطرح کنید تا یک تفکیک نسبی وجود داشته باشد.

به عنوان کمک و جواب باید عرض کنم، طبیعتا یا DataSet را با کمک DataAdapter پر یا Fill نکرده اید.
یا
ارتباط Crystal با DataSet درست برقرار نشده.

موفق باشید.

یاس گلی
05-07-2012, 14:15
Form2 frm=New Form2();
frm.Show();




با سلام دوباره
من یه فرم به اسم form2 ایجاد کردم و روی اون چند تا منو و....دارم
می خوام با کلیک کردن روی form1 فرم دو باز بشه
در قسمت کدش هم نوشتم



اما هنگام اجرای برنامه به جای فرم 2، یه فرم خالی واسه م میاره
لطفا روش صحیح ایجاد فرم و نمایش فرم جدید رو بهم یاد بدید

اگه لطف کنید بگید که دستورات بالا چه اشکالی دارد که درست جواب نمی دهد؟