PDA

مشاهده نسخه کامل : پروژه ي پايگاه داده ي اكسس با سي شارپ



delroya
16-07-11, 13:40
دوستان خوبم سلام، امیدوارم که حالتون خوب باشه و ذهنتون یاری کنه که به من که تازه وارد هم هستم در مورد پروژه ی پایانیم کمک کنید.
راستش موضوع پروژه ی من سیستم های اطلاعات آماری دانشگاه پیام نور قم هست که پایگاه داده ی اون Access هست و باید به زبان سی شارپ نوشته بشه!
راستش من جداولم رو تشکیل دادم؛ یک سری از ارتباطاتش رو هم مشخص کردم؛ ویژوال استدیو رو هم نصب کردم؛ یک سری از فرم هام رو هم طراحی کردم؛ اما متاسفانه چون زبان سی شارپ کار نکردم؛ استاد محترم فرمودند میرید یاد میگیرید؛ و پایان نامه رو انجام میدید و میارید!:wink:
حالا؛ من توی اولین فرمم، جوری طراحی کردم که کاربری که از طرف admin تعریف شده؛ باید userو pass ش رو وارد کنه تا بعد بتونه بر حسب واحدی که انتخاب میکنه؛ آمار قسمت های مختلف رو مشاهده کنه!
می خوام با کمک شما دوستان عزیز؛ قدم به قدم پیش برم؛ بنابراین از دوستانی که این قطعه کد رو برای شروع کار دارن؛ کمک میخوام!:1. (35):
لطفا راهنماییم کنید
ممنون و مچکرم

ravegoat
16-07-11, 15:54
با سلام!
دوست گرامي عضويت شما رو در PCN تبريك مي گم.:party:

شما مشخص نكرديد كه صحت Username و Password به چه شكل مشخص ميشه؟! آيا اين مقادير با نام كاربري و گذر واژه هاي موجود در يك بانك اطلاعاتي جداگانه مقايسه ميشن؟ و يا از روش ديگه اي استفاده كرديد؟
در اين بخش مي تونيد از اين سورس (Only the registered members can see the link)كمك بگيريد.

براي نمايش داده هاي جداول مي تونيد از DataGridView استفاده كنيد كه يك پروژه ي كامل در رابطه از اين لينك (Only the registered members can see the link) قابل دريافته.

براي آشنايي با شيوه هاي گزارش گيري در Access هم مي تونيد به اين مقاله ي مايكروسافت (Only the registered members can see the link) مراجعه كنيد.

موفق باشيد
آرمين

delroya
18-07-11, 10:49
با سلام و عرض ادب و سپاس از پاسخ دوست محترم آقا آرمین
راستش در مورد سوال اولتون این یوزر و پس؛ همون یوزری هست که مدیر برای کاربر تعریف میکنه، و ممکنه که در دسترسی هایی که مدیر داره بخواد اون رو تغییر بده! اما با هیچ بانک دیگه ای مقایسه نمیشه!
راستش من از DataGrideView استفاده کردم؛ اما استاد قبول نمیکنه که من بخوام کانکشن و دیتا ستم رو به صورت ویزاردی تشکیل بدم؛ ایشون می فرمایند که باید حتما برنامه ی اون رو بنویسید!
به نظر شما من برای شروع پروژه باید چه کار کنم؟
در ضمن؛ اگه من در یه فرم از یه دیتا گرید ویو استفاده کردم؛ و داده های یه جدول رو به کار بردم، برای فرم بعدی دوباره بخواد دیتا گریدویو جدید بیارم، پیغام ساخت مجدد کانکشن میاد که من این رو نمی خوام؛ آیا باید برنامه ی ساخت dataset رو در یه تابع بنویسم و در موارد مختلف فراخوانی کنم؟

ravegoat
18-07-11, 17:00
خواهش مي كنم...

در مورد بخش اول منظورم اين بود كه چگونه صحت گذرواژه تاييد ميشه نه اينكه فلسفه ي اين رمزگذاري چيه؟ قاعدتا" گذرواژه ي ورودي كاربري بايد با مقداري مقايسه بشه تا درستي اون تاييد بشه! در صورتي مشكلتون همچنان در اين بخش باقي هست، لطفا" ساز و كار سنجش درستي پسورد رو تشريح كنيد تا دوستان و بنده بهتر بتونيم كمكتون كنيم.

در مورد بخش بعدي بايد بگم كه معرفي يك پايگاه چه با Wizard و چه با كد نويسي هر دو سبب تشكيل يك ConnectionString تقريبا" مشابه ميشه! با اين حال در سورس هايي كه در پست اول معرفي شده بود عموما" از روش تعريف ConnectionString با كد نويسي استفاده شده بود كه مي تونيد از اون ها كمك بگيريد. در صورتي هم كه موفق نشديد، بفرماييد تا خود ConnectionString رو براتون قرار بدم.

در مورد بخش آخر سوالتون هم بايد عرض كنم كه كامپوننت غالبا" بايد در كلاس يك فرم تعريف بشه و اثرات اون كامپوننت تنها به فرمي بر ميگرده كه كامپوننت در اون فرم تعريف شده. پس عناصر ارتباطي پايگاه داده چون Dataset كه يك كامپوننت محسوب ميشه تنها در يك فرم قابل استفاده هستش و منطقي هست كه در فرم جديد، يك ارتباط جديد تعريف بشه. فكر كنم عملي باشه كه شما تابع Share شده اي تعريف كنيد كه در صورت اجرا شدن روي هر فرم تنها در كلاس اون فرم يك شي Dataset ايجاد كنه كه زمينه ساز ارتباط شما با پايگاه بشه. البته با نحوه ي كدنويسي آن در سي شارپ آشنايي ندارم كه اگه تونستم سعي مي كنم سورس هاشو پيدا كنم. به علاوه گمان مي كنم بتونيد بدون Dataset هم چنين ارتباط هايي رو پيكره بندي كنيد كه در اين صورت بايد بر اساس منطق سورس هايي كه در پست اولم قرار دادم عمل كنيد.

نظرم اينه كه از سورس هايي كه در بخش تاپيك هاي مرجع كد سي شارپ و تاپيك پايگاه داده ي Step by Step قرار داده شده براي شروع كمك بگيرد. در ضمن مي تونيد از كتاب آموزش Visual C# جناب هاشميان؛ فصول برنامه نويسي پايگاه داده هم كمك بگيريد.

موفق باشيد
آرمين

delroya
20-07-11, 08:51
بچه ها سلام!
راستش از استادم، پرسیدم که تعیین یوزر و پسورد بر چه مبنایی باشه؟ که گفت: این میتونه دست خودت باشه؛ اینکه رقم باشه یا حرف؛ حساس باشه به حروف بزرگ و کوچیک یا نه؟ اینکه تعدادش چند رقم باشه به خودم بستگی داره!
فقط این یوزر و پسورد؛ باید بشه که توسط مدیر عوض بشه!
پس حالا، لطفا یه برنامه برام بنویسید!
مرسی!
و لطفا در مورد نحوه ی ساخت دینا ست و کانکشن استرینگ به صورت برنامه نویسی هم برام کد نویسی بفرمایید، ممنون میشم!

ravegoat
20-07-11, 11:46
براي ساخت DataSet به اين لينك (Only the registered members can see the link) مراجعه كنيد. همچنين دانستن نكاتي پيرامون DataTable (Only the registered members can see the link)ها مي تونه مفيد باشه.

كد زير هم كه از MSDN (Only the registered members can see the link) گرفته شده نحوه ي ساخت ConnectionString رو بيان مي كنه (لطفا" به جاي مسير مشخص شده در كد، مسير پايگاه مورد نظر خودتون رو قرار بديد):





public void ConnectToAccess()
{
System.Data.OleDb.OleDbConnection conn = new
System.Data.OleDb.OleDbConnection();
// TODO: Modify the connection string and include any
// additional required properties for your database.
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
@"Data source= C:\Documents and Settings\username\" +
@"My Documents\AccessFile.mdb";
try
{
conn.Open();
// Insert code to process data.
}
catch (Exception ex)
{
MessageBox.Show("Failed to connect to data source");
}
finally
{
conn.Close();
}
}




با سپاس
آرمين

delroya
23-07-11, 09:24
آقای آرمین عزیز؛ واقعا ممنونم که اینقدر دلسوزانه دارید راهنماییم می کنید.
ولی چقدر این انجمن و شاید هم موضوع من سوت و کوره! انگار هیچ کسی این طرف ها نمیاد یا جوابی برای پرسش های من نداره؛ به غیر از شما عزیز!
به هر حال ممنونم از شما.
راستش کد ها رو برداشتم؛ و اگر لطف کنید در مورد کدهای ساخت یوزر و پسورد هم راهنماییم کنید.
ممنون و سپاسگذارم.

ravegoat
24-07-11, 14:59
براي آشنايي با فرم هاي Login در سي شارپ مي تونيد از اين سورس (Only the registered members can see the link) كمك بگيريد.

همچنين براي افزايش امنيت مي تونيد گذرواژه ها رو به صورت رمز شده در بانك ذخيره كنيد. براي آشنايي با نحوه ي پياده سازي اين عمل به اين مقاله (Only the registered members can see the link) مراجعه كنيد.

موفق باشيد
آرمين

delroya
25-07-11, 11:26
واقعا کمال تشکر رو از راهنمایی های دلسوزانه شما دارم.
اما لینک مقاله ای که گذاشتید متاسفانه مشکل داره!
همچنین کدهایی برای حذف و اضافه و ویرایش میخواستم.
ممنونم

ravegoat
25-07-11, 23:44
دوست گرامي هر دو لينك موجود در پست 8 بررسي شد. لطفا" كوكي مرورگر خود رو موقتا" خاموش و قابليت جاوا اسكريپت را فعال كنيد و لينك ها را مجددا" باز نماييد.

منظورتان از حذف، اضافه و ويراش چيست؟ آيا اين عمل گر ها براي كنترل كاربري مي خواهيد؟!

با سپاس
آرمين

delroya
26-07-11, 09:54
5611
دوستان خوبم سلام و البته آقا آرمین گرامی و محترم؛ سلام. امیدوارم از اذیت هایی که میکنم ناراحت نشده باشید و من رو کمک کنید که بتونم این پروژه رو تمومش کنم.
راستش تصمیم گرفتم قدم به قدم فرمهام رو بذارم و از شما در مورد کدنویسی اون کمک بگیرم. فرم بالا اولین فرم پروژه ی منه!
راستش کدی میخوام که وقتی روی set user زدم در منو؛ برم فرم بعدیم. چی بنویسم برای رفتن به فرم بعدیم؟
این هم فرم بعدیم هست!
5610
البته من یه tooltip در textbox1 قرار دادم که توضیح میده، لطفا نام کاربری و رمز خود رو به صورت 8 رقم و با حروف و اعداد تعریف نمایید. (یعنی میخوام قرار بدم؛ اما نمی دونم این متن رو کجای tooltip می نویسند که قبل از نوشتن متن در تکس باکس نمایش داده بشه!) در این مورد یه کد میخوام.
در مورد کدنویسی برای کلیدهایی پایین؛ ok cancel next و preview هم راهنمایی میخوام، چی بنویسم که وقتی کنسل زد، اون یوزر و پسورد پاک شده باشه؟

delroya
26-07-11, 10:09
یا وقتی ok زدم؛ اطلاعات ذخیره شده باشه؟
فرم بعدیم مربوط به تغییر و ویراش یوزر و پسورد هست؛ لطفا چه کدی بنویسم که وقتی applay رو زد؛ ادمین! یوزر و پسورد قدیم حذف شده باشه و به جای اون new username و پس قرار گرفته باشه؟این هم شکل فرم اون!
5612
فرم بعدیم هم فرم login هست که وقتی ادمین در منوی اصلیم در قسمت view، login رو بزنه باز میشه و میتونه با یوزر و پسورد تعریف شده وارد بشه!
فکر کنم اون کدی که شما در مورد login بهم دادید اینجا به دردم بخوره!

5614 منتها چون کدنویسی قسمت های قبلی رو انجام ندادم، میخوام بعد از اون قسمت ها بیام سراغ این! اما من اینجا میخوام login رو که زد بره وارد این صفحه بشه! نگاه کنید!
5613
اینجا هم میخوام در قسمت کشویی، فقط رکورد نام واحد از جدول واحد رو قرار بدم که توی لیست نمایش داده بشه! باید چی کار کنم؟

لطفا به راهنمایی های ارزشمند شما به صورت گام به گام نیاز دارم! ممنون میشم که کمکم کنید!
با تشکر

delroya
26-07-11, 12:07
آقا آرمین راستش من طبق اون لینکی که برام گذاشته بودید، یه جدول login درست کردم توی اکسس، بعد هم یه دیتا گرید ویو قرار دادم که به صورت ویزاردی کانکشن استرینگ رو درست کردم؛ منتها در اون قسمت؛ user , pass تعیین میشه که من یوزر رو همون admin قرار دادم و رمز رو هم خودم دادم. بعد از تست کانکشنم، دو تا گزینه yes , no البته با توضیحات داره که من گزینه ی yes رو زدم. پایین برای من آورد که
provider=microsoft.jet.oledb.4.0; ... تا آخر جمله که حتی اینکه پسوردم چیه رو برام نوشت! بعد هم سیو کردم کانکشن رو و تمام.
حالا سوالم اینه که من در فرم login ام وقتی بخوام کد نویسی کنم باید دقیقا کجا این کدها رو قرار بدم؟
یعنی در حالت click بنویسم یا در حالت load ؟ توی لینک داده شده مشخص نیست که در چه حالتی این کدها رو قرار داده؟
لطفا راهنماییم کنید.

ravegoat
27-07-11, 20:51
براي رفتن به فرم جديد مثلا" از Form1 به Form2 بايد در فرم اول يك متغير از نوع فرم دوم تعريف كنيد و سپس با دستور Show يا ShowDialog مربوط به اين متغير وارد فرم دوم بشيد.
براي Tooltip مي تونيد يك كامپوننت Tooltip رو روي فرم مورد نظر قرار بديد و بعد به طور خودكار يه خاصيت Tooltip به كنترل هاي textBox اضافه مي شه (در پنجره ي Properties) كه مي تونيد با متن خودتون رو در اون وارد كنيد.
براي ويرايش نام كاربري بايد از دستور SQL به نام UPDATE استفاده كنيد.
براي وارد كردن مقادير يك جدول در يك ComboBox بايد با دستور SQL به نام SELECT داده ها رو بخونيد و تك تك با فرمان Add مربوط به آيتم هاي ComboBox اين مقادير رو اضافه كنيد.
در مورد سوال آرخرتون...مي تونيد اون رشته رو هم در رويداد FormLoad قرار بديد و هم ButtonClick . كه فعلا" بهتره كه اون رو در رويداد كليك دكمه هاتون قرار بديد.

تمام موارد بالا رو مي تونيد در پروژه ي پيوست شده در همين پست مشاهده كنيد كه اميدوارم كمكتون كنه. متاسفانه تنها فرمان UPDATE پايگاه داده ي اون مشكل داره (در VB.NET به درستي كار مي كرد نمي دونم چرا در C# كار نمي كنه شايد به دليل خود فايل MDB باشه.)

موفق باشيد
آرمين

delroya
30-07-11, 11:21
آقا آرمین بی نهایت ممنونم از شما.
به خاطر پاسخ های عالی تون و زحمتی که میکشید.
راستش من توی فرم ورود ادمین؛ کدهایی که در فرم اول فایل زیپ شده بود رو نوشتم!
منتها با خطاهای زیر مواجه شدم.
لطفا در مورد رفع این خطاها کمکم کنید!

Error 1 'jafariamar.MD5' does not contain a definition for 'ComputeHash' and no extension method 'ComputeHash' accepting a first argument of type 'jafariamar.MD5' could be found (are you missing a using directive or an assembly reference?)
Error 2 'jafariamar.MD5' does not contain a definition for 'create'
Error 3 The name 'md5Hash' does not exist in the current context
Error 4 'jafariamar.MD5': type used in a using statement must be implicitly convertible to 'System.IDisposable'

ممنون میشم کمکم کنید که من حداقل اجرای یه فرمم رو ببینم و پیش برم.
و یه سوال دیگه اینکه آیا در زمان اجرا وقتی user رو میخوام بزنم که همون ادمین میزنم که در جدول لاگینم جزو جداول پایگاهم هست! اما در قسمت رمز باید چی بزنم؟
آیا اون رو هم باید یه رمزی که در فیلد پسورد جدول لاگینم پر کردم رو در زمان اجرا برای بار اول بزنم؟

ravegoat
30-07-11, 12:33
خواهش مي كنم دوست گرامي...

من فكر مي كنم كه شما كلاس رمز نگاري رو اصلا" وارد برنامه ي خودتون نكرديد. استفاده از اين كلاس اجباري نيست اما باعث حفظ امنيت گذرواژه ها ميشه كه من طبق عادت از اون استفاده مي كنم. اگه تمايل داشتيد مي تونم اين كلاس رو از پروژه حذف كنم.

تمام خطا هاي شما هم مربوط به همين بخش رمزنگاري هستش. فكر مي كنم اگه كلاس زير را وارد كنيد:



using System.Security.Cryptography;
بعد تابع زير رو به صورت استاتيك تعريف كنيد:





static string GetMd5Hash(MD5 md5Hash, string input)
{

// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input)) ;

// Create a new Stringbuilder to collect the bytes
// and create a string.
StringBuilder sBuilder = new StringBuilder();

// Loop through each byte of the hashed data
// and format each one as a hexadecimal string.
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}

// Return the hexadecimal string.
return sBuilder.ToString();
}



مشكل رفع بشه. همچنين براي استفاده از تابع در هر روال بايد كد زير رو در روال قرار بديد:



using (MD5 md5Hash = MD5.Create())



اما در مورد بخش دوم سوالتون بايد عرض كنم كه من به طور پيش فرض يه كاربر تعريف كردم با مشخصات زير:

username: admin
password: admin


شما مي تونيد اول با اين كاربر وارد شيد. سپس با تعريف كاربر جديد، در مراحل بعد قادر خواهيد بود با كاربر تعريف شده هم وارد بشيد؛ البته متاسفانه همون جور كه گفته بودم هنوز فرمان اين بخش مشكل داره كه در اولين فرصت سعي مي كنم يه بار ديگه بررسيش كنم.

اين نكته رو هم اضافه كنم كه اگه بانك UsersDB رو باز كنيد متوجه ميشد كه نام كاربري ها در اون موجوده اما گذرواژه ها به شكل كد شده درون بانك ذخيره ميشه كه اين امر سبب ميشه كه كسي نتونه با داشتن محتويات بانك مذكور رمز عبور رو كشف كنه.

موفق باشيد
آرمين

delroya
31-07-11, 08:41
آقا آرمین گرامی سلام
ممنونم از محبت های بی دریغتون!
راستش من همه ی اون کدها بعلاوه ی کلاس رمزنگاری رو هم تعریف کرده بودم؛ اما بازم پیغام میداد؛ اما به هر حال مشکلم از بابت برنامه نویسش رفع شد و دیگه پیغامی دریافت نکردم. اما حالا وقتی میخوام برنامه رو اجرا کنم؛ وقتی برنامه ی شما رو اجرا می کنم، این پیغام رو میده!
5634اما وقتی برنامه ی خودم رو اجرا می کنم؛ اصلا قسمت رمز اون به صورت مخفی ظاهر نمیشه!
ببینید!
5635لطفا راهنماییم بفرمایید.

ravegoat
31-07-11, 22:01
دوست گرامي، به دليل كوچك بودن عكس ها اصلا" مقدور نيست كه بشه متن خطا رو قرائت كرد؛ پس لطفا" خود متن خطا را تايپ كنيد تا مشكل بررسي بشه.

اما دليل اينكه گذرواژه ي دورن تكست باكس شما به صورت ستاره نمايش داده نميشه اينه كه خاصيت UserSystemPasswordChar تكست باكس شما در حالت False قرار داره. با انتخاب تكست باكس مربوط به گذرواژه و ست كردن اين خاصيت به مقدار True از طريق پنجره ي Properties مشكل رفع ميشه.

موفق باشيد
آرمين

delroya
01-08-11, 13:21
سلام و عرض ادب خدمت شما و سپاس بخاطر کمک های فوق العاده تون!
راستش در مورد پیغام ها؛ وقتی پروژه ی شما رو اجرا می کنم پیغام زیر رو بهم میده!
The ' microsoft.jet.oledb.4.0' provider is not registered on the local machine.
در مورد برنامه ی خودم هم وقتی یوزر و پسوردم رو؛ admin می زنم پیغام
database erorr: Not a Valid file name.
و یه سوال؟ در فیلد پسورد جدول لاگین دیتابیسم چی باید بنویسم؟ نیازی به پرکردن این فیلد هست؟ مثل فیلد یوزرنیم که ادمین نوشته شده درون آن؟

delroya
01-08-11, 13:21
و یه سوال دیگه !
برای اینکه اجرای تنها همون صفحه ای رو که دارم باهاش کار میکنم ببینم نه؛ اجرای کل صفحات رو، باید چی کار کنم؟

ravegoat
01-08-11, 23:46
با سلام!



The ' microsoft.jet.oledb.4.0' provider is not registered on the local machine

دليل اصلي اين خطا رو نمي دونم ولي معمولا" با طي مراحل زير حل ميشه:
پروژه رو با Visual Studio باز كنيد. از منوي Project گزينه ي يكي مونده به آخر يعني Properties مربوط به پروژه رو انتخاب كنيد. سپس در پنجره ي باز شده، وارد مجموعه ي Build بشيد. بعد در بخش General همين زبانه به دنبال گزينه ي Platfrom Target بگرديد و از طريق منوي كركره اي روبروش گزينه ي x86 رو انتخاب كنيد. در آخر تغييرات رو ذخيره كنيد و پروژه رو مجددا كامپايل كنيد. اميدوارم كه حل بشه. اگر هم نشد بفرماييد تا نسخه ي 2010 x86 پروژه رو در اختيارتون بذارم.


database erorr: Not a Valid file name

فكر كنم شما فايل UsersDB.mdb رو در مسير bin پروژه ي خودتون قرار نداديد. اگه شما از همون ConnectionString اي كه بنده استفاده كردم، استفاده كنيد آن گاه فايل هاي MDB حتما" بايد در در محل اجراي برنامه ي اصلي (همون فايل EXE) قرار داشته باشند. در غير اين صورت بايد مسير دقيق بانك ها رو در ConnectionString قرار بديد.



فیلد پسورد جدول لاگین دیتابیس

اگه منظورتون فیلد پسورد در داخل فايل UsersDB.mdb هست بايد عرض كنم در اين فيلد مقدار MD5 Hash رمز عبور (رمز عبور كد شده با MD5 كه شامل 32 كاركتر است) قرار مي گيره. شما بايد با سورس داخل پروژه و تابع مربوطه، مقدار رمز عبور رو كد كنيد و اين عبارت كد شده رو داخل فيلد مذكور درون پايگاه قرار بديد.



سوال آخر؟

فكر كنم منظورتون از كل صفحات همون فرم ها باشه. يعني شما تمايل داريد كه تنها يك فرم براي تست برنامه اجرا بشه و بقيه ي فرم ها بارگذاري نشن؟!
تا اونجايي كه من مي دونم چنين چيزي امكان نداره. هر برنامه ي شي گراي جرياني (Flow) داره كه با يك StartUp Form شروع ميشه و در نهايت با بسته شدن همين فرم خاتمه پيدا مي كنه. پس به دليل كامپايل كلي برنامه و لود فايل اجرايي به منظور اشكال زدايي، اين امكان وجود نخواهد نداشت كه بشه در جريان برنامه اختلال ايجاد كرد و به طور مستقيم تنها يك فرم دلخواه رو باز كرد. اما ميشه با فشردن كليد F8 در هر خط از سورس برنامه مرحله به مرحله به روند اجراي اون خط رو مشاهده كرد.

موفق باشيد
آرمين

delroya
02-08-11, 13:33
دوست خوبم آقا آرمین من هر کاری کردم که درست بشه؛ متاسفانه نشد؛ شما نوشته بودید که:
"فكر كنم شما فايل UsersDB.mdb رو در مسير bin پروژه ي خودتون قرار نداديد. اگه شما از همون ConnectionString اي كه بنده استفاده كردم، استفاده كنيد آن گاه فايل هاي MDB حتما" بايد در در محل اجراي برنامه ي اصلي (همون فايل EXE) قرار داشته باشند. در غير اين صورت بايد مسير دقيق بانك ها رو در ConnectionString قرار بديد."

منظور شما از userdb.mdb بانک اطلاعاتی تون هست دیگه؛ درسته؟ اگه اینجور باشد، من چک کردم، من یک نسخه از بانکم رو در پوشه ی bin دارم؛ یه نسخه هم در بیرون این پوشه، جایی که فرمهام هم هست! من دقیقا از روش ساخت کانکشن استرینگ شما استفاده کردم؛ و در قسمت آدرس، آدرس دقیق بانک اطلاعاتیم رو قرار دادم!
اما یه موضوعی رو میخواستم بگم، من چون دیتا ست و دیتا سورس و اینها رو قبلا به روش ویزاردی ساختم، احساس می کنم چون قبلا دیتا کانکشن استرینگی داشتم؛ الان که این برنامه ی شما رو می نویسم برای ساخت کانکشن استرینگ؛ مثلا کلمه ی oledbconnection برای ساخت، وقتی شما نوشتید به صورت سیاه بوده؛ اما من که می نویسم این کلمه به صورت آبی رنگ ظاهر میشه! به نظر شما این دلیل نمیشه که من قبلا یه کانکشن استرینگ داشتم؟
و یه سوال دیگه؛ شما چرا دو تا پایگاه داده درست کردید، و در هر کدام یک جدول تعریف کردید؟
من یه پایگاه داده دارم به نام univercity amar که تمام جداولم و ارتباطات بین اونها؛ در آن وجود داره! پس من باید در هر دو قسمت برای فرم لاگین و همین طور فرم combobox ام از همین نام در قسمت provider بنویسم دیگه درسته؟
خواهشا کمکم کنید که مشکل فرم اولیه و اصلیم حل بشه!
من باید هر چه زودتر پروژه ام رو تحویل بدم!
ممنون و سپاسگذارم

ravegoat
02-08-11, 16:01
دوست گرامي...

بله منظور من همون بانك بود + ساير فايل هاي MDB...

بايد عرض كنم كه شما يك بانك رو يا بايد با Wizard وارد كنيد و يا به صورت مستقيم ConnectionString مربوط به اون رو توليد كنيد. تركيب هر دو تاي اين ها موجب بروز مشكل ميشه. پس پيشنهاد مي كنم تنها از يكي از اين روش ها استفاده كنيد و پروژه ي خودتون رو از روش ديگري به طور كامل پاك سازي كنيد.
نمايش يك عبارت به رنگ آبي بيان گر يه عبارت كليدي هست. در اين صورت شما حتما" بايد نام متغير خودتون رو تغيير بديد و از نام هاي ديگري براي متغير هاي OLEDB استفاده كنيد. اميدوارم مشكل حل بشه.

استفاده از دو پايگاه جدا دليل خاصي نداره. فقط براي وضوح بهتر سورس كد اين كار رو كردم.

و در مورد سوال آخر...بله شما بايد همون پايگاه رو در فرم هاي مختلف لود كنيد و بر حسب نياز از جداول مختلفش استفاده كنيد.

موفق باشيد
آرمين

delroya
03-08-11, 11:18
دوست عزیز با سلام و عرض ادب
راستش من data source رو که به صورت ویزاردی ساخته بودم رو حذف کردم؛ اما سوالی داشتم، اینکه با روش ساخت کانکشن استرینگ شما، به صورت برنامه نویسی من چطوری می تونم دیتا ست؛ دیتا تیبل آدابتر داشته باشم؟
آخه! من در فرم های بعدیم، از dataset ای که ویزاردی ساخته بودم، استفاده کرده بودم، که حالا با حذف اون، تمام فرم های بعدیم هم دچار مشکل شده اند!

delroya
03-08-11, 11:42
ببینید من وقتی این جملات رو می نویسم به چه شکلی هستند.
5648

delroya
03-08-11, 11:52
یکبار دیگه واضح تر می فرستم؛ می خوام بدونید که چه اتفاقی توی خطوط پروژه ام افتاده!
با همه ی این تفاسیر من هنوز هم همون پیغام not a valid file name رو دریافت می کنم.
5649

ravegoat
03-08-11, 22:47
با سلام!

نحوه ی ایجاد DataSet و نحوه ی ایجاد DataTable رو با کد نویسی فکر کنم قبلا" خدمتتون توضیح داده بودم. لطفا" به لینک های زیر مراجعه کنید:

How to create a DataTable programmatically (Only the registered members can see the link)

How to create a DataSet with DataRelations Programmatically (Only the registered members can see the link)

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

و اما خطای not a valid file name:
بنده مشکل خاصی در ساختار سورس شما مشاهده نمی کنم. اما دو اشکال عمده در تعریف ConnectionString شما وجود داره!
در واقع شما مسیر پایگاه داده رو کاملا" غلط وارد کردید؛ به همین دلیل خطای نامعتبر بودن مسیر رو دریافت می کنید!!!

Application.StartupPath.ToString() نماینده ی مسیری است که برنامه ی شما در درون اون در حال اجرا شدن است و شما مجددا" این مسیر رو با مسیر دیگری پیوند زدید که حاصل یک مسیر غلط خواهد بود. برای رفع مشکل بانک univercity amar.mdb رو در مسیر bin کپی کنید. فکر کنم وجود فاصله ی خالی در نام پایگاه داده مشکل ساز بشه. پس نام فایل رو به univercityamar.mdb تغییر بدید (rename). سپس ConnectionString رو به صورت زیر تعریف کنید:


myConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" + Application.StartupPath.ToString() + "/univercityamar.mdb";


اشکال بعدی در اون مسیری هستش که به StartUpPath پیوند زدید. فکر می کنم عبارت C:/ صحیح نباشه و باید از C:\ استفاده کنید (به تفاوت خطوط مورب دفت کنید.) این امر احتمالا" برای سایر خطوط مورب به کار برده شده هم صدق می کند. دقیقا" اطلاع ندارم ولی گمان کنم به دلیل وجود فضای خالی در مسیر باید کل مسیر رو در داخل کارکتر های ' قرار بدید. گرچه استفاده از این مسیر در رشته ی اتصال لزومی نداره اما در زمان کاربرد آن باید به این نکات توجه شود.

موفق باشید
آرمین

delroya
04-08-11, 12:23
آقا آرمین من فاصله ی خالی در نام پایگاهم رو از بین بردم؛ اون رو در قسمت bin/Debug کپی کردم؛ بنابراین من الان یه کپی از پایگاهم رو در اینجا دارم؛ یه کپی هم در قسمت پوشه ی اصلیم که پوشه هایی مثل bin و فرمهام در اون قرار دارند، وجود داره!
بعد هم آدرس رو به صورت univercityamar.mdb / وارد کردم.
بعد که برنامه رو اجرا کردم، پیغام خطایی که دریافت کردم این بود:
error database: No Value given for one or more required parameters
در ضمن من وقتی خطوط مورب رو به صورت درست آدرس وار وارد میکنم این خطا رو بهم میده! unrecognized escape sequence
و سوال آخر اینکه من وقتی dataset رو به صورت ویزاردی ساخته بودم، در قسمت solution Explorer نام دیتا ست و دیتا آداپترم ظاهر شده بود که می تونستم از اونها استفاده کنم، یا در پنجره ی data source هم نام اون اومده بود.
من الان که میخوام برنامه نویسی کنم، نمی دونم دقیقا باید اینها رو در کدوم فرم و دقیقا چه قسمتی تعریف کنم که درست و به جا باشه!
اگه لطف کنید زمینه ی کاربرد اینها رو برام توضیح بدید ممنون میشم!

ravegoat
04-08-11, 23:10
من در مورد نحوه ی تعریف آدرس ConnectionString اشتباه کردم. اصلا" به یاد نداشتم که در سی شارپ چنین تعریفی باعث بروز خطای unrecognized escape sequence میشه که به همین خاطر عذر خواهی می کنم. شما می تونید آدرس رو به صورت های زیر تعریف کنید:



myConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=F:/Documents and Settings/Internet/My Documents/Visual Studio 2008/Projects/DelroyaProj/DelroyaProj/bin/Debug/UsersDB.mdb";

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



myConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=F:\\Documents and Settings\\Internet\\My Documents\\Visual Studio 2008\\Projects\\DelroyaProj\\DelroyaProj\\bin\\Deb ug\\UsersDB.mdb";

و اما سوال اول شما:
در واقع خطای No Value given for one or more required parameters اصلا" مربوط به ConnectionString نیست بلکه مربوط به فرمان cmd هست که احتمالا" به دلیل به کار بردن کلمه ی کلیدی login هست. فکر کنم اگه Cmd رو به یکی از دو شکل زیر تعریف کنید مشکل حل بشه:


OleDbCommand cmd = new OleDbCommand("select * from [login] where username='" + textBox1.Text + "'", myConnection);

و یا



OleDbCommand cmd = new OleDbCommand("select * from [login] where [username]='" + textBox1.Text + "'", myConnection);

به کاربرد [] برای تمایز نام جدول از کلمه ی کلیدی دقت کنید.

و در مورد سوال آخر باید عرض کنم: کد های مربوط به DataSet که در بخش Main تابع کنسولی قرار داشت، هسته ی اصلی به کارگیری دیتاست است که می تونید از اون در روال ها و رویداد های مختلف استفاده کنید. در واقع شما باید از این قطعه کد با اعمال تغییرات مورد نظر خودتون در رویداد هایی نظیر کلیک Button در فرم های مختلف استفاده کنید. برای آشنایی بیش تر با این کار پیشنهاد می کنم که سورس این برنامه (Only the registered members can see the link)رو مشاهده کنید.

موفق باشید
آرمین

delroya
06-08-11, 11:26
آقا آرمین عزیز؛ بی نهایت از پاسخگویهاتون ممنونم!
راستش امروز لب تابم رو نیاورده ام که همین جا تست کنم و پاسخش رو براتون بنویسم! امیدوارم وقتی رفتم خونه و تست کردم؛ این دفعه برای تشکر از اجرای اون خدمتتون برسم!
چون فکر میکنم دارم زمان زیادی رو از دست میدم.
فقط از خداوند متعال میخوام که توی این ماه عزیز، هر جایی که هستید، همیشه شاد و سلامت باشید و به آرزوهایی که به صلاحتون هست برسید! ان شاء ا...

delroya
07-08-11, 09:50
سلام، آقا آرمین راستش فکر میکردم امروز با خبر خوش اجرای فرم ورودیم برگردم؛ اما واقعا هر کاری که می تونستم انجام دادم و متاسفانه باز هم همون پیغام No Value given for one or more required parameters رو بهم میده!
ببینید از روش شما استفاده کردم نشد، رفتم اصلا نام جدول login رو تغییر دادم و اجرا کردم که هر دفعه پیغام میداد که جدول یا quary شما وجود نداره و login از دسترس خارج شده است یا اشتباه تایپ کرده اید!
لطفا اگه مطلبی مونده که بهم بگید، لطف می کنید، در غیر این صورت فعلا بی خیال این فرمم بشم و برم سراغ فرم بعدیم که واقعا دیگه دارم زمان رو از دست میدم!
ممنونم

ravegoat
07-08-11, 14:04
با سلام!

دوست عزيز هر كاري سختي مخصوص به خودش رو داره و همين مشكلات هستش كه سبب پيشرفت و كسب تجربه ميشه...:wink:

احتمال مي دم كه خطاي شما شايد ناشي از سختار پايگاه داده تون باشه. پيشنهاد مي كنم نوع تمامي فيلد هاي پايگاه رو Text قرار بديد و دستورات رو مجددا" اجرا كنيد.

من مجددا" يك پايگاه يك پارچه درست كردم و تمامي جداول رو درون اون قرار دادم. همچنين يك Relation هم بين دو جدول برقرار كردم. به علاوه براي ساخت پايگاه داده از Microsoft Access 2010 استفاده كردم و برنامه رو مستقيما" با Visual Studio 2010 كامپايل كردم كه خوشبختانه مشكل UPDATE و INSERT كه در پروژه ي پيوست شده ي قبلي وجود داشت در اين نسخه رفع شد. نسخه ي جديد پروژه رو چندين بار تست كردم كه خدا رو شكر بدون هيچ مشكلي كار مي كرد. لطفا" پروژه ي جديد پيوست شده رو مطالعه كنيد و براساس اون، ساختار برنامه خودتون رو اصلاح كنيد تا شايد مشكل رفع بشه :cool:.

پيشنهاد مي كنم قسمت هاي مختلف پروژه ي خودتون رو تا حد امكان به صورت موازي پيش ببريد تا از زمان بهتر استفاده كنيد.اين كد (Only the registered members can see the link)هم تا حدي مي تونه شما رو در تكميل ساير بخش هاي پروژه تون ياري كنه.

موفق باشيد
آرمين

delroya
08-08-11, 12:19
آقا آرمین راستش از شما بی نهایت سپاسگذارم.
امروز و فردا یه مقدار سرم شلوغه و مهمون دارم؛ تصمیم گرفتم توی اولین فرصت تمام پایگاه داده ام رو به همراه، جداول اون و ارتباطاتش، یه بازسازی دوباره انجام بدم، و کد نویسی و پروژه ی جدید شکل بدم، امیدوارم که این دفعه جواب بگیرم.
فقط خواهشا فردا نه، پس فردا بهم حتما سر بزنید!
به کمکتون احتیاج دارم!
ممنونم

delroya
09-08-11, 09:52
سلام، راستش امروز فکر کردم شاید ارتباط جدول لاگینم مشکل داره که جواب نمی گیرم؛ وقتی بررسی کردم پایگاه داده ام رو متاسفانه ارتباطات هیچ کدوم از جداولم وجود نداشت؛ یعنی وقتی Resolation رو در اکسس می زنم، فقط ارتباط دو تا از جدولهام رو نشون میده!
من راستش توی پایگاه داده ام حدودا ده الی یازده جدول دارم، که ارتباطات اونها رو کاملا مشخص کرده بودم؛ بر اساس خواسته ی استاد!
اما امروز که دیدم، هیچ کدوم از جداولم به غیر از دو تا از اونها در ارتباطات وجود نداشت!
فکر می کنم باید پایگاه هم رو به همراه ارتباطات و همین طور فرم های سی شارپم رو دوباره تشکیل بدم و دوباره شروع کنم!
خدایا! به حق این روزهای عزیز، کمکم کن که بتونم هر چه زودتر پایان نامه ام رو به خوبی و خوشی تموم کنم و تحویل بدم!

delroya
13-08-11, 13:03
با سلام و آرزوی قبولی طاعات و عباداتتون.
راستش من تمام پایگاه هم رو پاک کردم و دوباره تمامی جداولم رو به همراه ارتباطاتتون او ساختم.
اومدم پروژه ی جدید ایجاد کردم؛ همه ی فرم های قبلیم رو کلا پاک کردم. و دوباره فرم ورودم رو بر مبنای برنامه ی شما نوشتم؛ اما باز هم پیغام could not find file'c;\users\my documents\... \system amar.mdb رو میده! البته من چک میکنم؛ می بینم چه نسخه از پایگاهم در debug یه نسخه هم در پوشه ای که فرم هام هستند؛ وجود داره! اما باز هم پیغام میده!
می خواستم بدونم اینکه ورژن اکسسم 2007 و ویژوالم 2010 هست مشکلی ایجاد نمیکنه؟
در ضمن من فرم چهارمم رو به نام ویرایش کاربران قرار دادم و در اون یه دیتا گرید ویو به همراه دو تا تکس باکس و دکمه های add. delete. edit. refresh.cancel. search و save رو قرار دادم و می خوام بر اساس، کدی که در آدرس زیر قرار داده بودیم و دانلود کردم، برنامه اش رو بنویسم!
یعنی میخوام وقتی add رو زدم؛ یه کاربر جدید به دیتا گرید ویو ام اضافه بشه!
با انتخاب هر نام کاربری در دیتا گرید ویو و زدن دکمه ی حذف، اون کاربر تعریف شده حذف بشه!و همین طور تا آخر! تغییرات در جدول لاگینم به وجود بیارم!
اما سوالاتی داشتم! در تاپیک بعدی می پرسم! اگه لطف کنید و سری به این کد بزنید، ممنون میشم!

delroya
13-08-11, 13:18
Only the registered members can see the linkمی خوام بدونم، books نام پایگاه داده می باشد؟
آیا Autthors نامی جدولی ست که عملیات بر روی آن انجام میشود؟
cmbAutthors نام چه شی ء می باشد و چه کاری انجام میدهد؟
کاربرد selAutthors چیست؟ و من به جای آن باید چی قرار بدم؟
کاربرد SchBooks چیست و من به جای آن باید چی قرار بدم؟
tblbooks نام کدام جدول است؟
cmbCriteria چه شی ء می باشد و کاربرد آن چیست؟
شناسه های قرمز رنگ در قسمت search برنامه؛ فیلدهای کدام جدول می باشند؟
می تونم بجای datagrideviewlist که در اینجا به کار برده شده؛ دیتا گرید ویو استفاده کنم؟
titel و price نام فیلدهای جدول هستند؛ یا خود جدول جداگانه ای هستند؟ و من در جدول لاگینم باید چی رو جانشین کنم؟
و اینکه خاصیت یا حالت های setbuttons یا setenabled رو چه جوری باید بیارم؟
با تشکر از پاسخ تون!
راستش من چون هفته ی آینده میخوام برم دانشگاه تا فرم هام رو و همین طور فرم اولم رو به استاد نشون بدم؛ میخواستم اگه فرم اولم درست شد؛ حداقل فرم های دیگه ام هم برنامه نویسی شده و تا حدودی آماده باشند که میخوام به استاد نشون بدم!
بنابراین به نظر شما کل برنامه نویسی این کد؛ میتونه تا آخر به من در قسمت های مختلف پایان نامه ام کمک کنه؟
با سپاس فراوان

ravegoat
13-08-11, 23:23
با سلام!

خطاي Could not find به دليل پيدا نشدن فايل MDB هستش. لطفا" نام فايل و مسير اون رو با مسير موجود در ConnectionString تطابق بديد. در صورت صحت مسير، خود كد مربوط به رشته ي اتصال رو اينجا قرار بديد؛ شايد مشكل از سورس باشه.

من تا حالا با اكسس 2007 كار نكردم ولي اكسس 2003 و اكسس 2010 معمولا" بدون مشكل با VS 2010 كار مي كنند و احتمالا" مشكل شما از اين بخش نيست.

سورسي اولي كه براتون قرار داده بودم قابليت Delete كردن رو داشت ولي فرمان هاي Add و Edit اون مشكل داشت. در سورس بعدي دستورات Add و Edit رو توش امتحان كردم كه درست كار كرد:





سورس ويراش نام واحد
OleDbCommand cmd = new OleDbCommand("update units set unitname = 'third' where unitid = '1001'", myConnection);

سورس افزودن واحد جديد
OleDbCommand cmd = new OleDbCommand("insert into units (unitid, unitname) values('1004', 'New Unit')", myConnection);



كافيه پارامتر هاي جدول رو با پارامتر هاي جدول login جايگزين كنيد.

ادامه ي جواب ها به دليل طولاني بودن در پست بعدي...

ravegoat
13-08-11, 23:29
سورسي كه شما قرار داديد براي SQL هست نه اكسس. به علاوه پايگاه داده اون قرار داده نشده و يا اطلاعاتي پيرامون اون وجود نداره كه بشه بهتر تر كد رو تحليل كرد. در نتيجه اگه بخواهيد صرفا" با تغيير پارامتر هاي سورس قرار داده شده، پروژه ي خودتون رو تكميل كنيد از نظر بنده كار سختي پيش رو خواهيد داشت.



می خوام بدونم، books نام پایگاه داده می باشد؟

نه. dbBooks نام پايگاه هست.



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

چنين جدولي وجود نداره (حداقل من نديدم) ولي اكثر فرآيند ها روي جدول tblbooks اعمال ميشه.



cmbAutthors نام چه شی ء می باشد و چه کاری انجام میدهد؟

نام ComboBox است و براي نمايش ليست نويسندگان يك كتاب (ركورد) به كار مي رود.



کاربرد selAutthors چیست؟ و من به جای آن باید چی قرار بدم؟

احتمالا" نام جدولي است كه مشخصات نويسندگان را در بر مي گيرد. بخش دوم سوال رو متوجه نمي شم.



کاربرد SchBooks چیست و من به جای آن باید چی قرار بدم؟

احتمالا" نام جدولي است كه مشخصات كتب را در بر مي گيرد. بخش دوم سوال رو متوجه نمي شم.



tblbooks نام کدام جدول است؟

سوال رو متوجه نمي شم. ولي اين يك schema هست كه جدولي را درون DataSet پديد مي آورد و بنده تا حالا از اين روش براي Fill كردن استفاده نكرم.



cmbCriteria چه شی ء می باشد و کاربرد آن چیست؟

يك ComboBox هست كه فيلتر جست و جو را تعيين مي كند.



شناسه های قرمز رنگ در قسمت search برنامه؛ فیلدهای کدام جدول می باشند؟

بيان گر پارامتر هايي هستند كه جست و جو بر اساس آن ها صورت مي گيرد.



می تونم بجای datagrideviewlist که در اینجا به کار برده شده؛ دیتا گرید ویو استفاده کنم؟

چنين چيزي رو پيدا نكردم و گمان نكنم چنين كنترلي اصلا" باشه. با اين حال در سورس برنامه از DataGridView استفاده شده كه شما هم مي تونيد به همون طريق عمل كنيد.



titel و price نام فیلدهای جدول هستند؛ یا خود جدول جداگانه ای هستند؟ و من در جدول لاگینم باید چی رو جانشین کنم؟

نام فيلد هستند. بخش دوم سوال رو متوجه نمي شم.



و اینکه خاصیت یا حالت های setbuttons یا setenabled رو چه جوری باید بیارم؟

اين دو روال سابروتين هستند كه مورد اول براي نمايش/عدم نمايش دكمه هاست و دومي براي فعال/غير فعال كردن فيلد هاست.


موفق باشيد
آرمين

delroya
14-08-11, 10:05
ممنونم آقا آرمین
در مورد کد سورسهام؛ من تصاویر اونها رو میذارم؛ امیدوارم بتونید کمکم کنید که به نتیجه برسم.
5698
5699
و آخرین تصویر:
5700
فکر میکنم خود اکسس؛ خود بخود موقع ایجاد دیتا بیس، پسوند آن رو mdb میذاره، درسته؟
در غیر این صورت من خودم، در قسمت propertis فایل رفتم و mdb رو گذاشتم.

delroya
14-08-11, 10:16
و اما در مورد سورسی که شما برای add و edit قرار دادید؛ ببینید من نمی خوام که دستی هر مقداری رو به برنامه ام با کد نویسی وارد کنم!
من میخوام در زمان اجرا؛ وقتی دکمه ی add رو زدم؛ مثلا یوزرنیم و پسورد جدید رو از من بگیره و اون رو به دیتا گرید ویوی که در فرم ظاهر است، اضافه کنه!
یا برای edit پنجره ای باز بشه که username , pass قدیمی رو در دو تا تکس باکس بگیره؛ یوزرنیم و پس جدید رو هم در دو تا تکس باکس دیگه بگیره و جایگزین کنه! یا اونها رو آپدیت کنه!
بنابراین در این مورد راهنمایی ام بفرمایید، ممنون میشم!

delroya
14-08-11, 10:32
ببینید پس با این وجود؛ این کد هم از دور خارج میشه و من برمیگردم، سرخونه ی اولم!
یعنی کد نویسی برای جداولی که میخوام در هر فرم در قسمت datagridview نمایش بدم و یک سری عملیات رو روی اون جدول انجام بدم!
مثل add,edit,search,refresh,del که روی رکوردهای جدولم میخوام انجام بشه!
مثلا میخوام با کلیک و انتخاب سطر مورد نظر از دیتا گرید ویو و زدن دکمه ی حذف اون سطر اطلاعات از جدولم حذف بشه!

ravegoat
14-08-11, 11:51
دوست گرامی؛ در پست های قبلی عرض کرده بودم که عکس قرار ندید و تنها قطعه سورس مربوط به رشته ی اتصال رو در قالب متن اینجا بذارید. متاسفانه بنده نمی تونم بر اساس تصاویری که قرار دادید شما رو راهنمایی کنم.

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

در سوال آخر شما باید مقادیر سطر انتخاب شده رو استخراج کنید. در واقع در سوال های قبلی، شما مقادیر رو از جعبه های متنی دریافت می کردید ولی در اینجا باید از خاصیت SelectedRows مربوط به DataGridView استفاده کنید.

موفق باشید
آرمین

delroya
15-08-11, 10:55
ببینید آقا آرمین؛ من در هیچ یک از قطعه سورس ها به طور کامل متوجه نشدم که برای ساخت یه data source و کانکشن استرینگ باید چی بنویسم که بعد وقتی یه دیتا گرید ویو میذارم روی فرمم؛ به راحتی جدول موردنظرم رو از طریق اون data source در برنامه نویسی انتخاب کنم و اطلاعات جدولم رو در فرمم ببینم؛ بعد حالا عملیات add , del و غیره رو روی اطلاعات جدولم انجام بدم!

ravegoat
15-08-11, 22:18
شما هنگامي كه يك DataSource ايجاد مي كنيد، با رشته ي اتصال اون رو به يك پايگاه داده متصل مي كنيد. حالا مي تونيد اين ديتا سورس رو به خاصيت DataSource كنترل DataGridView نسبت بديد. براي آشنايي بيش تر با اين كار مي تونيد از سورس هاي زير كمك بگيريد:

Only the registered members can see the link

Only the registered members can see the link

Only the registered members can see the link

Only the registered members can see the link

موفق باشيد
آرمين

lilyum
19-07-13, 17:32
با سلام
برای اضافه کردن اطلاعات در برنامه به زبان سی شارپ از کد زیر استفاده میکنم ولی برای قسمت insert into و cmd.exectuenonquery به مشکل بر میخورم. خطای Syntax error
دارد. لطفا راهنمایی فرمایید.


OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=|DataDirectory|\\Zinks.mdb";
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO zink([shomareh],[name ketab],[abade form],[tedae safahate ketab],[tedade form],[tedade form rangi],[formhaye kharab(zinkhaye eslahi)],[tarikhe bardasht],[tavasote],[shomare formha],[tarikhe odat],[vaziate film],[tozihate film],[mavarede khas])"+ "values(shomareh,name ketab,abade form,TEDae safahate ketab,TEDade form,TEDade form rangi,formhaye kharab(zinkhaye eslahi),tarikhe bardasht,@tavasote,shomare formha,tarikhe odat,vaziate film,@tozihate film,mavarede khas)";
da.InsertCommand.ExecuteNonQuery();
cmd.Parameters.AddWithValue("shomareh", textBox3.Text);
cmd.Parameters.AddWithValue("name ketab", textBox4.Text);
cmd.Parameters.AddWithValue("abade form", textBox6.Text);
cmd.Parameters.AddWithValue("TEDae safahate ketab", textBox5.Text);
cmd.Parameters.AddWithValue("TEDade form", textBox7.Text);
cmd.Parameters.AddWithValue("TEDade form rangi", textBox8.Text);
cmd.Parameters.AddWithValue("formhaye kharab(zinkhaye eslahi)", textBox9.Text);
cmd.Parameters.AddWithValue("tarikhe bardasht", dateTimePicker1.Value);
cmd.Parameters.AddWithValue("@tavasote", textBox1.Text);
cmd.Parameters.AddWithValue("shomare formha", textBox2.Text);
cmd.Parameters.AddWithValue("tarikhe odat", dateTimePicker2.Value);
cmd.Parameters.AddWithValue("vaziate film", comboBox1.DataSource);
cmd.Parameters.AddWithValue("@tozihate film", textBox10.Text);
cmd.Parameters.AddWithValue("mavarede khas", textBox11.Text);
//cmd.ExecuteNonQuery();
this.Close();

ravegoat
19-07-13, 19:59
با سلام
برای اضافه کردن اطلاعات در برنامه به زبان سی شارپ از کد زیر استفاده میکنم ولی برای قسمت insert into و cmd.exectuenonquery به مشکل بر میخورم. خطای Syntax error
دارد. لطفا راهنمایی فرمایید.
...

با سلام!
دوست گرامی عضویت شما رو در شهر سخت افزار تبریک می گم.:party:

کد شما چندین اشکال داره:
1- کارکتر فاصله، & و ^ در نام پارامتر مجاز نیست. پس فرضا" باید پارامتر name ketab رو به name_ketab تغییر بدید. همچنین باید در پایگاه داده تون (Zinks.mdb) نام ستون name ketab رو با name_ketab جایگزین کنید. ترجیحا" در جدول تون تمام ستون ها رو هم از نوع Text انتخاب کنید؛ حتی ستون های مربوط به تاریخ رو.

2- بعد از هر ویرگول (,) یک فاصله قرار بدید.

3- نیازی به گذاشتن علامت @ به هنگام اضافه کردن پارامتر نیست.

4- comobBox1.DataSource باعث ایجاد خطا میشه. اگه می خواهید مقدار انتخاب شده ی باکس رو به پارامتر تخصیص بدید باید از comboBox1.SelectedItem استفاده کنید.

سورس تون اصلاح و فایل پروژه اش هم پیوست شد.


OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data Source=|DataDirectory|\\Zinks.mdb";
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO zink([shomareh], [name_ketab], [abade_form], [tedae_safahate_ketab], [tedade_form], [tedade_form_rangi], [formhaye_kharab_zinkhaye_eslahi], [tarikhe_bardasht], [tavasote], [shomare_formha], [tarikhe_odat], [vaziate_film], [tozihate_film], [mavarede_khas])" + " values (shomareh, name_ketab, abade_form, TEDae_safahate_ketab, TEDade_form, TEDade_form_rangi, formhaye_kharab_zinkhaye_eslahi, tarikhe_bardasht, @tavasote, shomare_formha, tarikhe_odat, vaziate_film, @tozihate_film, mavarede_khas)";
cmd.Parameters.AddWithValue("shomareh", textBox3.Text);
cmd.Parameters.AddWithValue("name_ketab", textBox4.Text);
cmd.Parameters.AddWithValue("abade_form", textBox6.Text);
cmd.Parameters.AddWithValue("TEDae_safahate_ketab", textBox5.Text);
cmd.Parameters.AddWithValue("TEDade_form", textBox7.Text);
cmd.Parameters.AddWithValue("TEDade_form_rangi", textBox8.Text);
cmd.Parameters.AddWithValue("formhaye_kharab_zinkhaye_eslahi", textBox9.Text);
cmd.Parameters.AddWithValue("tarikhe_bardasht", dateTimePicker1.Value);
cmd.Parameters.AddWithValue("tavasote", textBox1.Text);
cmd.Parameters.AddWithValue("shomare_formha", textBox2.Text);
cmd.Parameters.AddWithValue("tarikhe_odat", dateTimePicker2.Value);
cmd.Parameters.AddWithValue("vaziate_film", comboBox1.SelectedItem);
cmd.Parameters.AddWithValue("tozihate_film", textBox10.Text);
cmd.Parameters.AddWithValue("mavarede_khas", textBox11.Text);
cmd.ExecuteNonQuery();
this.Close();



موفق باشید
آرمین

cnmeysam
12-06-15, 18:45
سلام میدونم مطلب قدیمیه ولی من تازه کارم و به کمک نیاز شدید دارم
من یه دیتا گرید ساختم که بدون استفاده از ویزارد به دیتا بیس SQL وصلش کردم با استفاده از کلاس Connection
خیلی هم سرچ کردم به خدا. کسی میدونه چطوری و با چه کدی باید bindingSource رو به کلاس کانکشنم وصل کنم وبعد اون رو به bindingNavigator و در آخر به dataGridView ؟
اگه میشه یه قطعه کد با توضیح بذارید ممنون میشم

ravegoat
13-06-15, 21:50
سلام میدونم مطلب قدیمیه ولی من تازه کارم و به کمک نیاز شدید دارم
من یه دیتا گرید ساختم که بدون استفاده از ویزارد به دیتا بیس SQL وصلش کردم با استفاده از کلاس Connection
خیلی هم سرچ کردم به خدا. کسی میدونه چطوری و با چه کدی باید bindingSource رو به کلاس کانکشنم وصل کنم وبعد اون رو به bindingNavigator و در آخر به dataGridView ؟
اگه میشه یه قطعه کد با توضیح بذارید ممنون میشم
با سلام!

به سه پیوند زیر مراجعه فرمایید:
C# Tutorial - Binding a DataGridView to a Database - Tech.pro (Only the registered members can see the link)
Only the registered members can see the link
Only the registered members can see the link

موفق باشید
آرمین

cnmeysam
15-06-15, 09:28
من یه نمونه از برنامه اینجا گذاشتم که ویژوال استدیو 2013 و اس کیو ال 2014 هستش مشکل اینجاست bindingNavigator که باید تو DataGridView بعدی و قبلی و آخری و اولی بره کار نمیکنه و DataGridView هم صفحه بندی نداره کسی میتونه کمکم کنه DataGridView رو صفحه بندی کنم مثلا تو هر صفحه 10 تا آیتم لود بشه و با زدن یک باتن بره صفحه بعد و یا صفحه قبل و DataGridView رو به bindingNavigator درست اتصال بده؟ با ویزارد نمیخوام با کد نویسی میخوام این مشکل رو حل کنم تو همین برنامه ممنون از کمک و راهنماییتون


Only the registered members can see the link