PDA

View Full Version : دسترسی به فیلدهای مورد نظر جدول



reza1357
یک شنبه 19 فروردین 1386, 09:36 صبح
سلام دوستان
راستش رو بخواهید چند جا شبیه این تاپیک رو دیدم ولی هیچ کدوم به درد کارم نخورد مجبور شدم این تاپیک رو ایجاد کنم.
مشکل من اینکه میخوام به فیلد های یک جدول دسترسی داشته تا عملیات ریاضی و بخصوص مقایسه مقادیر با Textbox ها داشته باشم.
اگه دوستان لطف کنند و کمک کنند ممنون میشم.

با تشکر

Alireza_Salehi
یک شنبه 19 فروردین 1386, 11:05 صبح
بیشتر توضیح بده ، می خوای به اسم خود فیلد ها دسترسی داشته باشی یا مقادیر داخلش؟

reza1357
یک شنبه 19 فروردین 1386, 13:02 عصر
به اسم و هم به مقادیر انها میخوام دسترسی داشته باشم.
مثلا اگر یک Textbox داشته باشم که حاوی مقداری باشه با مقدار فیلد جدول مورد نظر اگه مقایسه کنیم به هر دو (نام فیلد و مقدار) احتیاج پیدا میکنیم.
البته از دستورات SQl-Select نمیخوام از کدنویسی VB میخوام باشه همانند Vb6 که از راه adodc.recordset.field

با تشکر

Alireza_Salehi
یک شنبه 19 فروردین 1386, 13:13 عصر
با توجه به این که نمی خوای از دستورات SQL استفاده کنی:
خوب کاری نداره اول داده ها رو از دیتابیس بخون(اگر در این مورد مشکلی داری بگو مثال بزنم) و در یک DataTable قرار بده ، بعد از طریق خاصیت Columns به خود فیلد ها (اسمشون ، نوع داده شون و ..) دسترسی داری و از طریق خاصیت Rows به رکورد ها!

با هر دوی این خاصیت ها مثل آرایه میشه کار کرد.

reza1357
یک شنبه 19 فروردین 1386, 13:30 عصر
امکان داره یک مثال بزنید ؟

Alireza_Salehi
یک شنبه 19 فروردین 1386, 14:02 عصر
این طوری DataTable رو پر می کنند (مثلا اطلاعات جدول City از دیتابیس Sql server):


Dim da As New SqlClient.SqlDataAdapter()
da.SelectCommand = New SqlClient.SqlCommand("SELECT * FROM city", New SqlClient.SqlConnection("کانکشن استرینگ دیتابیس"))
Dim dt As New DataTable()
da.Fill(dt)


بعد با دستوری مثل :


dt.Rows(شماره رکورد).Item("اسم ستون")

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

تقریبا این طوری میشه. یه کم از MSDN کمک بگیر چیزها بیشتری متوجه میشی!

DataTable Members (http://msdn2.microsoft.com/en-us/library/system.data.datatable_members.aspx)

reza1357
سه شنبه 21 فروردین 1386, 09:07 صبح
دوستان یک مشکلی هنگام ذخیره اطلاعات dataset در DataAdapter دارم ذخیره میشوند پیغام خاصی هم نشون نمیده ولی وقتی فرم مجدد لود کنم اطلاعات قبلی بدون ویرایش نشون داده میشه.
بنظر دوستان مشکل کجاست ؟

با تشکر

مهدی نان شکری
سه شنبه 21 فروردین 1386, 12:49 عصر
شما با چه روشی این کار رو انجام می دید؟
آیا با SqlCommandBuilderاین کار رو می کنید؟
آیا اطلاعات در بانک اطلاعاتیتون بعد ذخیره سازی , آپدیت می شوند؟

reza1357
سه شنبه 21 فروردین 1386, 13:10 عصر
SqlCommandBuilder با این کنترل ذخیره نمیکنم. میشه بگین چجوری با این عمل ذخیره رو انجام داد.
در بانک اصلی ذخیره سازی نمیشه.

مهدی نان شکری
سه شنبه 21 فروردین 1386, 16:00 عصر
شما با استفاده Commandbuilder می تونید کلیه تغییرات دیتاستتون اعم از Update و یا Insert و یاDelete یک جا وارد دیتابیس کنید. یعنی ابتدا تغییراتتون رو فقط در دیتاست اعمال کنید بعد با commandbuilder کلیه تغییراتتون را با دیتابیس همزمان کنید.


Dim cb1 As New SqlClient.SqlCommandBuilder(Me.MyDataAdapter)
Me.MyDataAdapter.Update(dsData.Tables("cod_Coding_T"))


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

reza1357
چهارشنبه 22 فروردین 1386, 08:03 صبح
دوست عزیز شما اینجا یک متغییر cb1 تعریف کردین جایی باید از آن استفاده کنم؟
دستور دومی هم قبلا من از آن استفاده کرده بودم ولی باز اطلاعات ذخیره نمیشوند.

با سپاس

مهدی نان شکری
جمعه 24 فروردین 1386, 11:50 صبح
با سلام
می بخشید دیر جواب می دم.
با Commandbuilder برای ایجاد دستورات Update و ... به صورت اتوماتیک استفاده می شه.
برای این منظور قسمتی از msdn رو براتون قرار می دم.
When an application calls the Update method, the DataAdapter examines the RowState property, and executes the required INSERT, UPDATE, or DELETE statements iteratively for each row, based on the order of the indexes configured in the DataSet. For example, Update might execute a DELETE statement, followed by an INSERT statement, and then another DELETE statement, due to the ordering of the rows in the DataTable.

It should be noted that these statements are not performed as a batch process; each row is updated individually. An application can call the GetChanges method in situations where you must control the sequence of statement types (for example, INSERT before UPDATE). For more information, see Updating Data Sources with DataAdapters.

If INSERT, UPDATE, or DELETE statements have not been specified, the Update method generates an exception. However, you can create a SqlCommandBuilder or OleDbCommandBuilder object to automatically generate SQL statements for single-table updates if you set the SelectCommand property of a .NET Framework data provider. Then, any additional SQL statements that you do not set are generated by the CommandBuilder. This generation logic requires key column information to be present in the DataSet. For more information see Automatically Generating Commands.

reza1357
شنبه 25 فروردین 1386, 08:02 صبح
درود و سپاس بیکران بر همه دوستان عزیز

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