PDA

View Full Version : سوال: افزودن رکورد توسط حلقه



ali190
جمعه 18 آذر 1390, 10:40 صبح
با سلام و عرض خسته نباشید
در نمونه زیر که از یک پروژه Vb6 نشئت گرفته شده است رکودها توسط یک حلقه به دیتابیس افزوده میشود
بیایید نگاهی به این کد بندازیم:
Dim i As Integer
For i = 1 To 100
Adodc1.Recordset.AddNew()
Me.Adodc1.Recordset.Fields("name").Value = "m" & i
Me.Adodc1.Recordset.Fields("famil").Value = "f" & i
Me.Adodc1.Recordset.Fields("sen").Value = i
ز()
Next i
توسط یک حلقه مقادیری به فیلدهای name ، famil، sen اضافه میشود
همانطور که مشاهده میشود ابتدا توسط دستور Adodc1.Recordset.AddNew ابتدا یک رکورد جدید در جدول ایجاد میگردد ، سپس فیلدهای name ، famil، senمقدار دهی میگردند و در آخر توسط دستور Adodc1.Recordset.Update جایگاه رکوردها در دیتابیس تثبیت میگردد(Save)
در حین عمل عملیات ثبت رکورد ملاحظه میکنید که اسکرول DataGrid به سمت پایین حرکت میکند
حال اگر بخواهیم این عملیات رو در .Net پیاده سازی کنیم قضیه چظور میشود؟
آیا حتماً میبایست توسط یک Insert Query رکوردها در هر بار به بانک تزریق شود؟(آیا متدی شبیه به Add New در Ado.net هم وجود دارد؟)
آیا دستوری مشابه Adodc1.Recordset.Fields("name").Value جهت دسترسی به هر فیلدی از یک رکوردست وجود دارد؟
آیا در هر بار عملیات افزودن رکورد
dt.Clear()
ad.Fill(dt, "table1")
DataGrid .DataSource = dt
DataGrid .DataMember = dt.Tables(0).TableName
آیا استفاده از این دستور به لحاظ برنامه نویسی به صرفه هست؟
یعنی ابتدا دیتاست خالی شود و سپس مجدداً توسط آداپتر پر گردد؟
در این حالت حالت Auto Scroll حفظ نمیشود
چون در هر بار گرید توسط دستور بالا رفرش میگردد و فوکوس به روی اولین رکورد میرود.
آیا این عملیات اسکرول هم باید توسط خودمان شبیه سازی گردد؟
ممنون
یاعلی

mgh64120
جمعه 18 آذر 1390, 15:50 عصر
سلام دوست عزيز
آيا لازمه كه پس از افزودن هر ركورد، ديتاگريد رو بازسازي كنيد؟(جنبه ي نمايشي داره؟)
شما ميتوني توسط يه حلقه، اطلاعات رو درون بانك اطلاعاتي ذخيره و پس از اتمام كار حلقه، ديتاگريد رو بازسازي(Refresh) كنيد.

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

براي فرستادن فوكوس به آخرين ركورد :
Grid.CurrentCell = Grid.Item(0, Grid.RowCount - 1)
موفق باشيد.

ali190
جمعه 18 آذر 1390, 17:17 عصر
منظورم در کل اینه که میگن متدهای کار با دیتابیس در .net بهتر و راحتتر شده ولی بنظرم اینکار در ado و در vb6 خیلی خیلی راحتتر بود
ممنون میشم در این مورد و حول محور مثالی که گذاشتم بحث کنیم
یاعلی

mgh64120
جمعه 18 آذر 1390, 20:01 عصر
سلام دوست عزيز

منظورم در کل اینه که میگن متدهای کار با دیتابیس در .net بهتر و راحتتر شده ولی بنظرم اینکار در ado و در vb6 خیلی خیلی راحتتر بود

بالاخره دات نت هم چارچوب كاره خودش رو داره ولي به نظر من خيلي جامع تر از VB6 هست.
به يه نمونه كار با SqlDataAdapter كه قبلا خودم در ادرس زير گذاشتم يه نگاهي بيندازيد:
پست 7# :
http://barnamenevis.org/showthread.php?315669-کار-با-دیتا-اداپتور
موفق باشيد.