PDA

View Full Version : سوال: مشکل در اضافه کردن به پایگاه داده اکسس



armin8651
یک شنبه 09 مرداد 1390, 23:49 عصر
سلام
من از یک نمونه کد برای اضافه کردن یک فیلد به یک جدول از پایگاه داده اکسس استفاده میکردم که تو برنامه های قبلی که نوشتم کار می کرد، ولی توی برنامه جدیدی که نوشتم کار نمی کنه، کد رو گذاشتم، لطفآ ببینید میفهمید که مشکل از کجاست؟!
در ضمن اگه برای ارتباط با پایگاه داده اکسس نمونه کد بهتری دارین ممنون میشم اینجا بذاریدو
ممنون

mohsencom
دوشنبه 10 مرداد 1390, 03:03 صبح
سلام استاد :لبخند:

توی فانکشن add دستور sql باید اینطوری باشه ... تک کوتیشن یاد رفت :


Dim str As String = "Insert INTO " & Table & " ('" & Filds & "') VALUES (" & Valus & ")"

اینکارو کنی بعدش پیغام خطا میده که تعداد کوئری با فیلدای دیتابیست همخوانی نداره چون :

.تو حلقه ی For هربار تو متغیر Filds و Valus داره یک مقدار ریخته میشه در حالی که این دو متغیر از جنس آرایه نیستند و در بار آخر حلقه For باز یک مقدار دارند
باید این دو متغیر رو از جنس آرایه درست کنی تا 13 تا مقدار مطابق با فیلدای دیتابیست بگیرند

در ضمن برای دیتابیس Access روشی که واسه ارتباط با دیتابیس بکار بردی فکر نکنم مناسب باشه و وقتی دیتابیس سنگین بشه سرعت اجرای کوئری ها میاد پایین در نتیجه سرعت برنامت کاهش پیدا میکنه.... این روش بیشتر به درد همون پایگاه داده های sql میخوره

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

با تشکر استاد گرامی :لبخند:

armin8651
دوشنبه 10 مرداد 1390, 09:11 صبح
سلام محسن
من این کد رو تو چند تا برنامه استفاده کردم و کار کرد ولی با این جدول نمی دونم چرا مشکل داره
اون حلقه For که نوشتم داره دستور command برای اضافه کردن رو می سازه نیازی نداره آرایه باشه، باید String باشه.
تو sql هم از stored procedure برای اضافه کردن استفاده می کردم، از این روش استفاده نمی کردم.
استاد هم که مال دانشگاهه :لبخند:

armin8651
دوشنبه 10 مرداد 1390, 14:13 عصر
مشکل رو خودم متوجه شدم
اسم یکی از فیلد های جدول رو Desc گذاشته بودم که گویا یه کلمه کلیدی تو اکسس هستش که این اسم رو تغییر دادم
مشکل بعدی هم برای فیلد عددی سال تولد بود که در صورتی که توسط کاربر مقداری براش وارد نشه باید مقدار Null برای ذخیره تو دیتابیس فرستاده بشه
به خاطر این دو تا مورد پیش پا افتاده یک روز عقب افتادم!
در ضمن ممنون محسن ولی اون چیزهایی که گفتی در مورد کدهای من درست نیست.

mohsencom
دوشنبه 10 مرداد 1390, 14:26 عصر
دقت کن فیلد چهارم دیتابیست از نوع عددی هست،در صورتی تمام فیلدای عددی مثل شماره تلفن و ... از نوع text انتخاب کردی...وقتی برنامه رو اجرا میکنی و ارور میده ... اگه به جزئیات ارور دقت کنی میبینی که فیلد چهارم یعنی Birth رو بصورت عددی برگردونده...نه رشته ای در صورتی که تو متغیر Filds رو از نوع رشته ای تعریف کردی
یا اون حلقه ی for مشکل داره یا مشکل از دیتابیسته...آره خوب که دقت کردم امروز اون متغیر ها کل فیلدارو میگیرن....این روش که بکار بردی بعد تو خطایابیش خیلی به مشکل بر میخوری...از همون دستورات بر پایه دیتاست یا دیتاریدر استفاده کن....هم کارکردش نسبت به این کدها راحت تره و هم خطایابیش آسون تره......
شما هم که چه داخل چه خارج از دانشگاه استادی،استااااد :لبخند:

اا با هم پست گذاشتیم که

خوشحالم که مشکلت حل شد :لبخند:

Programmer3
دوشنبه 10 مرداد 1390, 17:14 عصر
منم مشکل اضافه کردن اطلاعاتو دارم به sql اضافه میکنه اما به access error میده

کدام ایناس:



Dim strsql, strcon As String
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\Database.mdb"
Dim con As New OleDb.OleDbConnection(strcon)
strsql = "select * from kharide_kala insert into kharide_kala (namef,names,noek,namek,tedad,gheymat,bedehkar,bes tankar,takhfif,tarikh) values ('" & _T1.Text & "','" & _T2.Text & "','" & _T5.Text & "','" & _T6.Text & "','" & _T7.Text & "','" & _T8.Text & "','" & _T3.Text & "','" & _T4.Text & "','" & _T9.Text & "','" & _T10.Text & "')"
Dim ds As New DataSet
Dim da As New OleDb.OleDbDataAdapter(strsql, con)
da.Fill(ds, "kharide_kala")