پیغام There is already an open DataReader ...

nafiseh_hch

Member
سلام
من تکه کد زیر رو نوشتم ولی هر کاری می کنم این error رو میده
There is already an open DataReader associated with this Command which must be closed first.

کد:
کد:
[SIZE=2][COLOR=black]Dim count As Int32 = 0[/COLOR][/SIZE]
[SIZE=2][COLOR=black]Dim MySqlCount AsNew SqlCommand("SELECT Count(*) FROM Comission01", MySqlConnection)[/COLOR][/SIZE]
[SIZE=2][COLOR=black]MySqlConnection.Open()[/COLOR][/SIZE]
[SIZE=2][COLOR=black]count = Convert.ToInt32(MySqlCount.ExecuteScalar())[/COLOR][/SIZE]
[SIZE=2][COLOR=black]MySqlConnection.Close()[/COLOR][/SIZE]
[SIZE=2][COLOR=black]Dim MySqlSelect AsNew SqlCommand("SELECT Id,CoLatterNo,CoLatterDate,comptxt FROM Comission01", MySqlConnection)[/COLOR][/SIZE]
[SIZE=2][COLOR=black]MySqlConnection.Open()[/COLOR][/SIZE]
[SIZE=2][COLOR=black]Dim DataReader As System.Data.SqlClient.SqlDataReader = MySqlSelect.ExecuteReader()[/COLOR][/SIZE]
[COLOR=black][SIZE=2]Dim finaltxt As[/SIZE][SIZE=2]String[/SIZE][/COLOR]
 
[SIZE=2][COLOR=black]For a AsInteger = 0 To count - 1[/COLOR][/SIZE]
[COLOR=black][SIZE=2]If (DataReader.Read()) [/SIZE][SIZE=2]Then[/SIZE][/COLOR]
 
[SIZE=2][COLOR=black]id = DataReader("id").ToString()[/COLOR][/SIZE]
[SIZE=2][COLOR=black]Dim str1 AsString = DataReader("comptxt").ToString()[/COLOR][/SIZE]
[COLOR=black][SIZE=2]Dim str2 AsString = [/SIZE][SIZE=2]" "[/SIZE][/COLOR]
 
[SIZE=2][COLOR=black]Dim pos AsInteger = InStr(str1, str2)[/COLOR][/SIZE]
[SIZE=2][COLOR=black]Dim res AsString = str1.Substring(pos - 1)[/COLOR][/SIZE]
[SIZE=2][COLOR=black]finaltxt = " " & DataReader("CoLatterNo").ToString() & " " & DataReader("CoLatterDate").ToString() & res[/COLOR][/SIZE]
[SIZE=2][COLOR=black]Dim MySqlUpdate AsNew SqlCommand("UPDATE Comission01 SET comptxt2=@comptxt2 where id=" + "'" + id + "'", MySqlConnection)[/COLOR][/SIZE]
[SIZE=2][COLOR=black]MySqlUpdate.Parameters.Add("@comptxt2", SqlDbType.NText)[/COLOR][/SIZE]
[SIZE=2][COLOR=black]MySqlUpdate.Parameters("@comptxt2").Value = finaltxt[/COLOR][/SIZE]
[SIZE=2][COLOR=black]MySqlUpdate.ExecuteNonQuery()[/COLOR][/SIZE]
[SIZE=2][COLOR=black]Label1.Text = finaltxt[/COLOR][/SIZE]
[COLOR=black][SIZE=2]End[/SIZE][SIZE=2]If[/SIZE][/COLOR]
 
[SIZE=2][COLOR=black]Next[/COLOR][/SIZE]
 
[SIZE=2][COLOR=black]MySqlConnection.Close()[/COLOR][/SIZE]
ممنون می شم اگه کسی بتونه کمکم کنه
 
آخرین ویرایش:

the_king

مدیرکل انجمن
سلام
من تکه کد زیر رو نوشتم ولی هر کاری می کنم این error رو میده
There is already an open DataReader associated with this Command which must be closed first.

لطفا برای قرار دادن کد در متن پست تان از دکمه
code.gif
استفاده کنید.

زمانی که در حال Update کردن هستید نباید یک SqlDataReader باز روی Query مورد نظر داشته باشید. شما در حالی
که DataReader بازه می خواهید با MySqlUpdate عملیات Update انجام دهید.
معمولا از SqlDataReader زمانی استفاده میشه که Query ای با حجم بالا دارید که قراره به تدریج خوانده بشه
و در حین عملیات هم قصد ویرایش کردن یا حذف کردن شون رو هم ندارید.

توصیه می کنم که برای خواندن و ویرایش کردن همزمان از DataTable استفاده کنید.
این کد رو ببینید، ساده تر نیست؟
کد:
Imports System.Data
Imports System.Data.SqlClient
.
.
.
        Dim adapter As New SqlDataAdapter("SELECT * FROM Comission01", MySqlConnection)
        adapter.UpdateCommand = New SqlCommand("UPDATE Comission01 SET comptxt2 = @comptxt2 WHERE id = @oldid", MySqlConnection)
        adapter.UpdateCommand.Parameters.Add("@comptxt2", SqlDbType.NVarChar, -1, "comptxt2")
        Dim parameter As SqlParameter = adapter.UpdateCommand.Parameters.Add("@oldid", SqlDbType.NVarChar, -1, "id")
        parameter.SourceVersion = DataRowVersion.Original
        Dim table As New DataTable
        adapter.Fill(table)
        Dim count As Long = table.Rows.Count
        For Each row As DataRow In table.Rows
            Dim id As String = row("id").ToString()
            Dim str1 As String = row("comptxt").ToString()
            Dim str2 As String = " "
            Dim pos As Integer = InStr(str1, str2)
            Dim res As String = ""
            If pos > 0 Then res = str1.Substring(pos - 1)
            Dim finaltxt As String = " " & row("CoLatterNo").ToString() & " " & row("CoLatterDate").ToString() & res
            row.BeginEdit()
            row("comptxt2") = finaltxt
            row.EndEdit()
            Label1.Text = finaltxt
        Next
        If table.Rows.Count > 0 Then adapter.Update(table)
 

nafiseh_hch

Member
با تشکر از راهنماییتون
من یه مشکل دیگه هم دارم
توی همین صفحه که page load آن دیتابیس رو تغییر میده من یه دیتا گرید دارم
که با کلید روی هر سطر داخل textbox میتونیم اونو تغییر بدیم
ولی حالا من هر کاری میکنم توی دیتابیس ثبت نمیشه
قبلاً با استفاده از MySqlUpdate.ExecuteNonQuery() ثبت می شد ولی حالا اصلاً هیچ عکس العملی نشون نمیده
میشه دوباره راهنماییم کنید؟
کد دکمه ثبت رو این گذاشتم البته طبق گفته شما هم هرکاری کردم واسه edit نشد
کد:
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Dim[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] MySqlUpdate [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]New[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] SqlCommand([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"UPDATE pausr.Comission01 SET comptxt2=@comptxt2 where id="[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + [/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"'"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + hide.Text.Trim() + [/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"'"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2], MySqlConnection)[/SIZE]
[SIZE=2]MySqlUpdate.Parameters.Add([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"@comptxt2"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2], SqlDbType.NText)[/SIZE]
[SIZE=2]MySqlUpdate.Parameters([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"@comptxt2"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]).Value = txt.Text.Trim()[/SIZE]
[SIZE=2]MySqlUpdate.ExecuteNonQuery()[/SIZE]
 
آخرین ویرایش:

nafiseh_hch

Member
من نمیدونم این فروم چه مزیتی داره که تا من مشکلمو مطرح می کنم دو دقیقه بعدش حل می شه :green:

کدش اینجوری شد :
کد:
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Dim[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] adapter [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]New[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] SqlDataAdapter([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"SELECT * FROM pausr.Comission01"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2], MySqlConnection)[/SIZE]
[SIZE=2][COLOR=#008000][SIZE=2][COLOR=#008000]' adapter.UpdateCommand = New SqlCommand("UPDATE pausr.Comission01 SET comptxt2 = @comptxt2 WHERE id=" + "'" + hide.Text.Trim() + "'", MySqlConnection)[/COLOR][/SIZE]
[/COLOR][/SIZE][SIZE=2]adapter.UpdateCommand = [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]New[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] SqlCommand([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"UPDATE pausr.Comission01 SET comptxt2 = "[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + [/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"'"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + txt.Text.Trim() + [/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"'"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + [/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]" WHERE id="[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + [/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"'"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] + hide.Text.Trim() + [/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"'"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2], MySqlConnection)[/SIZE]
[SIZE=2]adapter.UpdateCommand.Parameters.Add([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"@comptxt2"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2], SqlDbType.NText, -1, [/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"comptxt2"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Dim[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] parameter [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] SqlParameter = adapter.UpdateCommand.Parameters.Add([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"@id"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2], SqlDbType.Int, -1, [/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"id"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])[/SIZE]
[SIZE=2]parameter.SourceVersion = DataRowVersion.Original[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Dim[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] table [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]New[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] DataTable[/SIZE]
[SIZE=2]adapter.Fill(table)[/SIZE]
[SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]Dim[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] R [/SIZE][SIZE=2][COLOR=#0000ff][SIZE=2][COLOR=#0000ff]As[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] DataRow = table.Rows(0)[/SIZE]
[SIZE=2]R([/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]"comptxt2"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) = txt.Text.Trim()[/SIZE]
[SIZE=2]adapter.Update(table)[/SIZE]

حالا فقط مشکلم اینه که توی دیتاگرید وقتی ویرایش مشه میره دوباره سط اولش
اگه بخواهیم همون خطی که ویرایش کردیم بمونه چیکار باید بکنیم؟
برای refreshe دیتاگرید باید چیکار کنیم که بعد تغییر دوباره اطلاعات آن لود بشه؟
 
آخرین ویرایش:

the_king

مدیرکل انجمن
من نمیدونم این فروم چه مزیتی داره که تا من مشکلمو مطرح می کنم دو دقیقه بعدش حل می شه :green:

کدش اینجوری شد :
کد:
Dim adapter AsNew SqlDataAdapter("SELECT * FROM pausr.Comission01", MySqlConnection)
' adapter.UpdateCommand = New SqlCommand("UPDATE pausr.Comission01 SET comptxt2 = @comptxt2 WHERE id=" + "'" + hide.Text.Trim() + "'", MySqlConnection)
adapter.UpdateCommand = New SqlCommand("UPDATE pausr.Comission01 SET comptxt2 = " + "'" + txt.Text.Trim() + "'" + " WHERE id=" + "'" + hide.Text.Trim() + "'", MySqlConnection)
adapter.UpdateCommand.Parameters.Add("@comptxt2", SqlDbType.NText, -1, "comptxt2")
Dim parameter As SqlParameter = adapter.UpdateCommand.Parameters.Add("@id", SqlDbType.Int, -1, "id")
parameter.SourceVersion = DataRowVersion.Original
Dim table AsNew DataTable
adapter.Fill(table)
Dim R As DataRow = table.Rows(0)
R("comptxt2") = txt.Text.Trim()
adapter.Update(table)

حالا فقط مشکلم اینه که توی دیتاگرید وقتی ویرایش مشه میره دوباره سط اولش
اگه بخواهیم همون خطی که ویرایش کردیم بمونه چیکار باید بکنیم؟
برای refreshe دیتاگرید باید چیکار کنیم که بعد تغییر دوباره اطلاعات آن لود بشه؟

به این عادت کنید که وقتی که فیلد های DataRow رو ویرایش می کنید ()BeginEdit و ()EndEdit رو بنویسید.

اصولا داده هایی که در صفحات وب نشون می دهید زیاد نیستند، می توانید درجا داخل همون GridView
فقط مقادیر مورد نظر رو که ویرایش کرده اید تغییر دهید، نه اینکه کل محتویاتش رو از نو پر کنید، مثلا :
کد:
        For Each row As GridViewRow In GridView1.Rows
            If row.Cells(0).Text = hide.Text Then
                row.Cells(2).Text = txt.Text.Trim
                Exit For
            End If
        Next
 

nafiseh_hch

Member
منظورتون اینه که ()BeginEdit و ()EndEdit رو قبل و بعد این کد بذارم؟
کد:
For Each row As GridViewRow In GridView1.Rows
            If row.Cells(0).Text = hide.Text Then
  ()BeginEdit 
                row.Cells(2).Text = txt.Text.Trim
()EndEdit 
                Exit For
            End If
        Next

برنامه من windows application هستش
روی خط اول GridViewRow ، پیغام خطا می ده
 

the_king

مدیرکل انجمن
منظورتون اینه که ()BeginEdit و ()EndEdit رو قبل و بعد این کد بذارم؟
کد:
For Each row As GridViewRow In GridView1.Rows
            If row.Cells(0).Text = hide.Text Then
  ()BeginEdit 
                row.Cells(2).Text = txt.Text.Trim
()EndEdit 
                Exit For
            End If
        Next
نه، منظورم اینجا است :
کد:
Dim R As DataRow = table.Rows(0)
[COLOR="Blue"]R.BeginEdit()[/COLOR]
R("comptxt2") = txt.Text.Trim()
[COLOR="Blue"]R.EndEdit()[/COLOR]

اینطوری گرداننده بانک اطلاعاتی متوجه میشه که شما در حال ویرایش اطلاعات هستید و تا زمانی که ویرایش
اطلاعات تموم نشده نباید صحت شون رو بررسی کنه.

برنامه من windows application هستش
به خاطر اون کد های SqlDataAdapter و نوشتن SqlCommand ها و hide.text گمان کردم برنامه تحت وب می نویسید،
شما اگه از کلاس های آماده ای استفاده می کردید که موقع Add New Data Source کردن داخل ویژوال استدیو
ایجاد شده اند کد تون خیلی ساده و خیلی تمیز تر می شد. وقتی از TableAdapter های آماده ای که داخل
DataSetTableAdapters اش ایجاد میشه استفاده کنید دیگه اصلا نیازی به مشخص کردن SqlCommand و پارامتر هایش
نیست. تمامی فیلد های جداول بانک اطلاعاتی تون رو هم با اسم فیلد می شناسه.
امکان اشتباه هم از بین میره چون از Table و Adapter و Row ای استفاده می کنید که منحصرا برای بانک اطلاعاتی تون
ایجاد شده و تمامی مشخصات بانک اطلاعاتی شما رو می دونه و با شرایط اش کاملا مطابقت داره.

روی خط اول GridViewRow ، پیغام خطا می ده
در برنامه های تحت وب از GridView استفاده می کنند و اون کد مربوط به اون بود.
کد:
        Dim hide As New TextBox, txt As New TextBox
        For Each row As DataGridViewRow In DataGridView1.Rows
            If row.Cells(0).Value.Equals(hide.Text) Then
                row.Cells(2).Value = txt.Text.Trim()
                Exit For
            End If
        Next
 

nafiseh_hch

Member
میشه بیشتر درباره کلاسهای آماده توضیح بدید یا یک راهنما بهم معرفی کنید که بتونم از اونجا بخونم؟؟؟
من با vb اصلاً کار نکردم بر حسب نیازی که الان دارم مجبورم از اواسطش یاد بگیرم
به کوچکترین مشکلی که بر میخورم توش میمونم
راهنمایی های شما واقعاً مفید هستند.
ممنونم
 

the_king

مدیرکل انجمن
میشه بیشتر درباره کلاسهای آماده توضیح بدید یا یک راهنما بهم معرفی کنید که بتونم از اونجا بخونم؟؟؟
من با vb اصلاً کار نکردم بر حسب نیازی که الان دارم مجبورم از اواسطش یاد بگیرم
به کوچکترین مشکلی که بر میخورم توش میمونم
راهنمایی های شما واقعاً مفید هستند.
ممنونم

بعد از اینکه بانک اطلاعاتی رو به پروژه تون متصل کردید (در منوی Data، گزینه Add New Data Source)
و Table و Query های مورد نظرتان را تیک زدید، ویژوال استدیو بانک اطلاعاتی رو بررسی می کنه و یکسری
کلاس آماده رو برای مواردی که داخلش انتخاب کردید می سازه، Adapter و DataTable و DataRow و ...
این کلاس ها از کلاس های استاندارد ارث بری کرده اند و چون مشخصات بانک اطلاعاتی تون رو بصورت کامل
دارند کار کردن باهاشون خیلی ساده تر از کلاس های اصلی است که هیچ اطلاعات پیشفرضی ندارند.

اسم این کلاس ها بستگی به نام بانک اطلاعاتی تون داره. مثلا اگه اسم بانک اطلاعاتی تون MyDB باشه،
در اینصورت MyDBDataSetTableAdapters مجموعه آداپتور های بانک اطلاعاتی خواهد بود و MyDBDataSet
مجموعه جداول بانک اطلاعاتی. شما می توانید برای دسترسی به یک جدول، کلاس آداپتور و کلاس جدول
مورد نظرتون رو توی این دو مجموعه پیدا کنید.

مثلا اگه در بانک اطلاعاتی یک جدول به اسم MyTB دارید. در اینصورت اسم آداپتور این جدول
MyDBDataSetTableAdapters.MyTBTableAdapter خواهد بود و MyDBDataSet.MyTBDataTable
کلاس این جدول.

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

قدم اول برای دسترسی به یک جدول در بانک اطلاعاتی ایجاد کردن آداپتور اون جدوله. مثلا :
کد:
        Dim adapter As New MyDBDataSetTableAdapters.MyTBTableAdapter
الان آداپتور adapter برای استفاده آماده است، مشخصات Connection رو هم بصورت پیشفرض می دونه.

قدم دوم ایجاد کردن یک شیء از کلاس جدول مورد نظر است :
کد:
        Dim table As MyDBDataSet.MyTBDataTable = adapter.GetData()
با همین یک سطر کد بالا، محتویات جدول table پر شده و آماده استفاده است.

اگر خواستید با همه سطر های جدول کار کنید، table.Rows مهیا است، فرضا مقدار فیلد FirstName را نمایش دهید :
کد:
        For Each row As MyDBDataSet.MyTBRow In table.Rows
.
.
.
            MessageBox.Show(row.FirstName)
.
.
.
        Next

اما اگر خواستید دستور Select بکار ببرید، می توانید یک آرایه Rows جدید بسازید که بعضی سطر ها را فیلتر کند :
کد:
        Dim rows() As MyDBDataSet.MyTBRow = table.Select("LastName='saeid'")
        For Each row As MyDBDataSet.MyTBRow In rows
            MessageBox.Show(row.FirstName)
        Next
دقت کنید که بجای DataRow از MyDBDataSet.MyTBRow استفاده می کنم چون اینطوری نام فیلد کاملا
مشخص و ثابت است و احتمال اشتباه تایپی وجود ندارد.

اضافه کردن دو سطر به جدول :
کد:
        Dim row As MyDBDataSet.MyTBRow = table.NewRow()
        row.BeginEdit()
        row.FirstName = "ali"
        row.LastName = "asadi"
        row.EndEdit()
        table.Rows.Add(row)

        row = table.NewRow()
        row.BeginEdit()
        row.FirstName = "babak"
        row.LastName = "karimi"
        row.EndEdit()
        table.Rows.Add(row)

        adapter.Update(table)
اون سطر Update کردن جدول رو فراموش نکنید، اگر adapter رو Update نکنید فقط table داخل حافظه Ram
تغییر می کنه و در بانک اطلاعاتی ذخیره نمیشه.

حذف کردن سطر هایی که FirstName شون ali است :
کد:
        Dim rows() As MyDBDataSet.MyTBRow = table.Select("FirstName='ali'")
        For Each row As MyDBDataSet.MyTBRow In rows
            row.Delete()
        Next
        If rows.Length > 0 Then adapter.Update(table)

تعویض مقدار FirstName به reza در تمامی سطر هایی که FirstName شون ali بوده :
کد:
        Dim rows() As MyDBDataSet.MyTBRow = table.Select("FirstName='ali'")
        For Each row As MyDBDataSet.MyTBRow In rows
            row.BeginEdit()
            row.FirstName = "reza"
            row.EndEdit()
        Next
        If rows.Length > 0 Then adapter.Update(table)

در جدول تعداد سطری هایی که FirstName شان و LastName شان یکسان باشد چند تا است؟
کد:
        Dim rows() As MyDBDataSet.MyTBRow = table.Select("FirstName=LastName")
        MessageBox.Show(rows.Length)

در کنترل DataGridView1 سطر هایی را نشان بده که LastName شان karimi است :
کد:
        Dim rows() As MyDBDataSet.MyTBRow = table.Select("LastName='karimi'")
        DataGridView1.DataSource = rows
 

nafiseh_hch

Member
واقعاً ممنونم
این همه تو نت گشتم و توضیحی به این کاملی و به درد بخور پیدا نکردم

کارم راه افتاد
 

mdo64a

New Member
ویژال بیسیک 2010

سلام خدمت دوست عزیزم..من یک تکس باکس دارم و یک بانک sql که به اسم ecl هستش. که به عنوان مثال یک ستون نام داره یه ستون کد داره و یه ستون قیمت ...بانکم با برنامه ارتباط داره اطلاعات رو اضافه حذف یا ویرایش هم میکنم اما میخوام وقتی کد مربوط به هر نام رو توی تکس باکس بزنم نام مربوط به اون کد در تکس باکس مقابلش بیاد و اگه دکمه اینتر رو بزنم همون نام با کدش و قیمتش توی یه لیست باکس بیاد..ممنون میشم راهنمایی کنید..
 

جدیدترین ارسال ها

بالا