PDA

View Full Version : مشکل در کار با دیتابیس access از طریق vb



mahdyari77
پنج شنبه 23 دی 1389, 11:54 صبح
سلام
آقا اول از همه بگم نگین سرچ میکردی بود چون 3 هفته اس دنبالشم یک سورس کد میخوام البته به صورت کد چون با باز کردنش در ویژوال استودیو مشکل دارم ترجیحا به صورت کد (البته سورس کد هم بود یه جوری سر میکنم) که
اینگونه باشه 4 تا تکست باکس که داشت هیچی مثلا تو یکیش نام
تو یکیش نام خوانوادگی تو یکیش هم نام و توی اون یکی مثلا یه اطلاعات دیگه بدین خلاصه این ها زیاد مهم نیست از این جا به بعد مهمه میخوام هنگامی که دکمه ثبت رو زد توی دیتابیس اکسس به همون نام و نام خانوادگی ثبت شه که بعد هم هرموقع که خواست بره مثلا تو یک جایی از برنامه لیست تمام افراد اونجا باشه بعد یه دکمه سرچ هم برنامه داشته باشه تو دیتابیس بگرده دنبالش من همش رو میتونم انجام بدم جز این که 1- دیتابیس رو بخونه2- سرچ کنه3- اضافه کنه به دیتابیس
و کلا کار کردن با دیتابیس اکسس با vb رو مشکل داشته بیدم
اگر کد رو که نوشتین توضیحشم بدین در حد یک خط ممنون میشم واقعا:D
ببخشید مزاحم شدم

mahdyari77
پنج شنبه 23 دی 1389, 13:41 عصر
آقا تورو خدا کمک کنید
من تمام راه رو رفتم فقط نمیدونم چطوری وقتی یارو رو دکمه ثبت کلیک کرد اطلاعاتی که تو تکست باکس ها داده اضافه بشه به دیتابیس
تورو خدا کمک کنید لطفاااااااااااااااااااااا اااااااااااااااا
مثلا یچیزی مثل این کد ولی در vb باشه این در c# هست


OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"provider=microsoft.jet.oledb.4.0;" + @"data source=db1.mdb";
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = "insert into phone ([Name],[Family],[Phone])values(@Name,@Family,@Phone)";
cmd.Parameters.AddWithValue("@Name", txtname.Text);
cmd.Parameters.AddWithValue("@Family", txtfamily.Text);
cmd.Parameters.AddWithValue("@Phone", long.Parse(txtphone.Text));
cmd.ExecuteNonQuery();

this.Close();

sina_saravi1
پنج شنبه 23 دی 1389, 14:00 عصر
سلام

کد بالا تو VB :



Dim conn As New OleDbConnection
conn.ConnectionString = "provider=microsoft.jet.oledb.4.0;" + "data source=db1.mdb"
conn.Open()
Dim cmd As New OleDbCommand
cmd.Connection = conn
cmd.CommandText = "select * from phone"
Dim dt As New DataTable
Dim adapter As New OleDbDataAdapter
adapter.SelectCommand = cmd
adapter.Fill(dt)
dataGridView1.DataSource = dt
dataGridView1.Visible = True
conn.Close()

sina_saravi1
پنج شنبه 23 دی 1389, 14:02 عصر
در ضمن باید System.Data.OleDb رو ایمپورت کنی



Imports System.Data.OleDb

mahdyari77
پنج شنبه 23 دی 1389, 14:07 عصر
سلام
من گفتم که از یه تکست باکس یه مقادیری بگیره و به دیتابیس ببره
ولی با این کار شما فکر کنم اطلاعات فقط خونده شه
ویرایش :
-------
آخ ببخشید این کد رو اشتباه گزاشتم پست رو ویرایش کردم ولی ببخشید این یکی چی میشه ؟

sina_saravi1
پنج شنبه 23 دی 1389, 14:29 عصر
اینم کد جدید :



Dim conn As New OleDbConnection
conn.ConnectionString = "provider=microsoft.jet.oledb.4.0;" + "data source=db1.mdb"
conn.Open()
Dim cmd As New OleDbCommand
cmd.Connection = conn
cmd.CommandText = "insert into phone ([Name],[Family],[Phone])values(" & Name.ToString & "," & Family.ToString & "," & Phone.ToString & ")"
cmd.Parameters.AddWithValue(Name, txtname.Text)
cmd.Parameters.AddWithValue(Family, txtfamily.Text)
cmd.Parameters.AddWithValue(Phone, Long.Parse(txtphone.Text))
cmd.ExecuteNonQuery()
Me.Close()


فقط یه چیزی :
شما باید متغیر هایی با نام Name و Family و Phone داشته باشید

sina_saravi1
پنج شنبه 23 دی 1389, 14:30 عصر
من کد هایی که شما دادید رو تست نمی کنم
فقط به VB تبدیل میکنم ، چون با C# هم کار میکنم

mahdyari77
پنج شنبه 23 دی 1389, 14:45 عصر
Error 1 Name 'Family' is not declared.
Error 2 Name 'phone' is not declared.
این ارور هارو میده البته دوبار هر کدومو
متغیر هایی به این نام ها؟
خوب معلومه ندارم اینا اسم فیلد های access هست
این vb.net هم عجب زبون نفهمه ها

sina_saravi1
پنج شنبه 23 دی 1389, 14:55 عصر
نه اون که جای خود داره که اسم فیلد هاست
تو خط 6 ام کد نگاه کنید
گفته که فیلد هایی با نام های Name , Family , Phone رو با متغیر هایی با نام های Name , Family , Phone پر کنه
یعنی شما باید متغیر هایی با اون اسم ها داشته باشید یا جای متغیر ها ( یی که تو کد بعدشون .ToString خورده ) متغیر های خودتونو بزارید

mahdyari77
پنج شنبه 23 دی 1389, 14:59 عصر
آهان هیچ مقداری هم برای متغیر ها نزارم ؟
ممنون واقعا
از همه پست هاتون تشکر کردم
یک سوال اون متغیر ها دقیقا کارشون چیه
برا چی باید باشن
یا من زبون نفهمم یا vb.net
(به احتمال زیاد من)

sina_saravi1
پنج شنبه 23 دی 1389, 15:06 عصر
اون متغیر ها ، ظرفی هستن تا موقتا اطلاعاتی که باید تو بانک اطلاعاتی ذخیره بشن رو نگه میدارن
پس باید اطلاعاتی که شما میخواین تو بانک بریزید رو تو اون متغیر ها بریزید و یا مستقیما اطلاعات رو تو دستور به کار ببرید
ولی برای خوانایی بیشتر باید از متغیر استفاده کرد

mahdyari77
پنج شنبه 23 دی 1389, 23:41 عصر
خوش بختانه برنامه بدون ارور اجرا شد ولی کار خود را درست انجام نداد اینم کدی که زدم

Dim lname As String
Dim fname As String
Dim chairnum As String
Dim flightdate As String
Dim flightnum As String
lname = txtlname.Text
fname = txtfname.Text
chairnum = txtchairnum.Text
flightdate = txtfldate.Text
flightnum = txtflnum.Text
Dim conn As New OleDbConnection
conn.ConnectionString = "provider=microsoft.jet.oledb.4.0;" + "data source=db1.mdb"
conn.Open()
Dim cmd As New OleDbCommand
cmd.Connection = conn
cmd.CommandText = "insert into t1 ([lname],[fname],[chairnum],[flightnum],[flightdate],)values(" & lname.ToString & "," & fname.ToString & "," & chairnum.ToString & "," & flightnum.ToString & "," & flightdate.ToString & ")"
cmd.Parameters.AddWithValue(lname, txtlname.Text)
cmd.Parameters.AddWithValue(fname, txtfname.Text)
cmd.Parameters.AddWithValue(chairnum, Long.Parse(txtchairnum.Text))
cmd.Parameters.AddWithValue(flightnum, txtflnum.Text)
cmd.Parameters.AddWithValue(flightdate, txtfldate.Text)

mahdyari77
جمعه 24 دی 1389, 14:33 عصر
یعنی من از شما یک سوال دارم
تو یک وب سایت به این گندگی 1 نفر فقط یک نفر وجود نداره که به من بگه چطوری از یه تکست باکس یه متن رو ببرم به دیتابیس ؟
با vb

reza_edu
جمعه 24 دی 1389, 15:15 عصر
سلام اول اینکه چزا از دیتابیس اکسس استفاده میکنی ؟ البته این به من ربطی نداره ولی دوست گرامی بهتر هست تا از sqlserver یا sql express استفاده کنی دلایل زیاده که نمیخوام بحث کنم . جزئیا رو ول میکنم میرم سر اصل مطلب کد شما :
این کد شما بود

OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = @"provider=microsoft.jet.oledb.4.0;" + @"data source=db1.mdb";
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
cmd.CommandText = "insert into phone ([Name],[Family],[Phone])values(@Name,@Family,@Phone)";
cmd.Parameters.AddWithValue("@Name", txtname.Text);
cmd.Parameters.AddWithValue("@Family", txtfamily.Text);
cmd.Parameters.AddWithValue("@Phone", long.Parse(txtphone.Text));
cmd.ExecuteNonQuery();

this.Close


حالا این کد من که برگردان اون کد هست :

imports system.data.OleDb
Dim conn As new OleDbConnection("provider=microsoft.jet.oledb.4.0;" + @"data source=db1.mdb")
Dim cmd as OleDbCommand()
Dim str as string="insert into phone (Name,Family,Phone) values (@Name,@Family,@Phone) "
cmd= new OleDbCommand(str,conn)
with cmd
.Parameters.AddWithValue("@Name", txtname.Text)
.Parameters.AddWithValue("@Family", txtfamily.Text)
.Parameters.AddWithValue("@Phone", txtphone.Text)
end with
conn.open()
cmd.ExecuteNonQuery()
conn.close()
اونی که بارنگ قرمز مشخص شده رو باید بالای کلاس فرم بنویسی اگه مشکل داشتی بگو اگه توضیح برای نحوه عملکرد کدا میخوای بگو تا بگم.

mahdyari77
جمعه 24 دی 1389, 19:09 عصر
این ارور ها رو داد عزیز
Error 1 Value of type 'System.Data.OleDb.OleDbCommand' cannot be converted to '1-dimensional array of System.Data.OleDb.OleDbCommand'
Error 2 'Parameters' is not a member of 'System.Array'.
Error 3 'Parameters' is not a member of 'System.Array'.
Error 4 'Parameters' is not a member of 'System.Array'.
Error 5 'ExecuteNonQuery' is not a member of 'System.Array'.
وای اعصابم خورد شد از بس گشتم

sina_saravi1
جمعه 24 دی 1389, 22:27 عصر
سلام اول اینکه چزا از دیتابیس اکسس استفاده میکنی ؟ البته این به من ربطی نداره ولی دوست گرامی بهتر هست تا از sqlserver یا sql express استفاده کنی دلایل زیاده که نمیخوام بحث کنم . جزئیا رو ول میکنم میرم سر اصل مطلب کد شما :
این کد شما بود


حالا این کد من که برگردان اون کد هست :

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


سلام دوست عزیز

شما اشتباه ترجمه کردید
کارکتر @ در C# رزرو شده و کارش اینه که تو رشته ای که بعد از اون میاد ، / میاد بغلش یه / دیگه بزراه .
چون / هم یه کارکتر رزرو شده است باید این کارو انجام داد.

reza_edu
جمعه 24 دی 1389, 23:37 عصر
ببین دوست گرامی mahdyari77 من اینو بگم که بهتر شما نمونه کد ببینی اینجوری بهتر متوجه میشی من یه نمونه تو sql نوشتم برا همه دوستان گذاشتم هر دو حالت رو ساپورت میکنه هم sqlexpress هم sql server اونو نگاه کن شاید متوجه شدی که چیکار باید انجام بدی البته ممکنه بگی خوب این اسکیوال من اکسس میخوام ! اما دوست خوبم اسکیوال - اکسس که از یه خانواده هستن شما حتی اگه بخوای این برنامه رو رو "اوراکل " هم پیاده سازی کنی فرقی نداره فقط فضای نامت فرق میکنه(همون imports) امیدوارم به درد بخوره.
http://barnamenevis.org/showthread.php?254514-%DB%8C%DA%A9-%D9%86%D9%85%D9%88%D9%86%D9%87-%D9%86%DB%8C%D9%85%D9%87-%DA%A9%D8%A7%D9%85%D9%84-%D8%A7%D8%B2-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%A7-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3&highlight= (http://barnamenevis.showthread.php?254514-%DB%8C%DA%A9-%D9%86%D9%85%D9%88%D9%86%D9%87-%D9%86%DB%8C%D9%85%D9%87-%DA%A9%D8%A7%D9%85%D9%84-%D8%A7%D8%B2-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%A7-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3&highlight=)
اما شما دوست گرامی sina_saravi1 من هیچ ادعای ندارم که همچی بارم هست اما تا این حد رو بلدم شما هم یکم درمورد نقش کارکتر "@" تو این رشته تحقیق کن متوجه میشی این کارکتر اصلا به دستورات هیچ ارتباطی نداره چه تو #C و چه تو vb.net و چه تو MFC من خودم به همه این زبون ها نگم تسلط کامل اما آشنای دارم حداقل دو تا چندین پروژه با این زبون ها نوشتم (البته از کم به زیاد میشه (vb.net-#c-MFC) ) اگه دارم مینویسم چیزی رو میدونم چی هست و چه کار میکنه ولی ممنون از اینکه خواستید ایراد من رو بگیرید.
راستی این مطلب رو جای دیگه نگید بهتره واسه خودتون میگم.

شما اشتباه ترجمه کردید
کارکتر @ در C# رزرو شده و کارش اینه که تو رشته ای که بعد از اون میاد ، / میاد بغلش یه / دیگه بزراه .
چون / هم یه کارکتر رزرو شده است باید این کارو انجام داد.

reza_edu
جمعه 24 دی 1389, 23:43 عصر
ببخشید اینجوری نمایش داده شده گیر از سایت هست.

TOWHEN
یک شنبه 26 دی 1389, 15:02 عصر
همون ارور هایی که مستر mahdyari77 گفتند رو میده.

reza_edu
دوشنبه 27 دی 1389, 13:06 عصر
سلام اولن که دیر جواب دادم بخشیش بخاطر مشکل پیش اومده برام بود دوست گرامی اگه ممکنه براتون برنامه رو بزار تا برات اصلاح کنم البته اگه مایلی !

9175966
شنبه 21 خرداد 1390, 19:41 عصر
سلام.
من یه صفحۀ Login درست کردم ، اما نمیدونم چه جوری باید به پایگاه ارتباط بدم ، تا با زدن دکمه login ، مقدار user , pass ای که کاربر وارد کرده را از text box ها گرفته و با مقادیر موجود در پایگاه که user pass هستند، مقایسه کنه و در صورت یکی بودن آنها، عمل Login انجام بشه.
خواهش میکنم در این زمینه اگه کسی میدونه کمکم کنه:ناراحت: