PDA

View Full Version : مشکل update یک table از طریقdatagridview



anooshiran
جمعه 19 بهمن 1386, 12:55 عصر
سلام دوستان
من اطلاعاتی را درون table می ریزم که دارای 10 fild است. حالا می خواهم فقط روی 2 fild تغییراتی بدهم و آن زا Update کنم. ابتدا دو فیلد را با فرمان select انتخاب می کنم و درون یک dataset قرار می دهم وبعد یک datagridview را با محتویات dataset پر می کنم و آنگاه درون datagridview مبادرت به تصحیح و ویرایش فیلد ها میکنم. در انتها وقتی می خواهم آن را update کنم از طریق add watch مراحل update را کنترل می کنم. به ظاهر که همه چیز درست انجام میشود و update صورت می گیرد ولی در عمل هیچ اتغاقی برای table نمی افتد.و update نمی شود. من کدهای خود را در این جا می نویسم. اگر کمک کنید که این مشکل را حل کنم ممنون و شرمنده خواهم بود


Dim sqlCon AsNew SqlClient.SqlConnection("Integrated Security=SSPI;Data Source=SERVER ;Initial Catalog='BasisInfo'")
Dim sqlDtA AsNew Data.SqlClient.SqlDataAdapter("", sqlCon)
Dim dSet AsNew DataSet
Dim dTable AsNew DataTable
Dim sqlCom AsNew SqlClient.SqlCommand("", sqlCon)

With sqlDtA
.SelectCommand = sqlCom
.SelectCommand.Connection = sqlCon
.SelectCommand.CommandText = "SELECT Name , Description FROM BasisMainDetail WHERE ConToMaster=" + conToDetail.ToString.Trim
If dSet.Tables.Contains("BasisMainDetail") Then dSet.Tables.Remove("BasisMainDetail")
.Fill(dSet, "BasisMainDetail")
.Dispose()
EndWith
dTable = dSet.Tables("BasisMainDetail")
' sqlCom.CommandText = "UPDATE BasisMainDetail SET Name=@Name,Description=@Description WHERE ConToMaster=@ConToMaster AND Row=@Row"
sqlCom.CommandText = "UPDATE BasisMainDetail SET Name=@Name,Description=@Description WHERE Row=@Row AND ConToMaster=" + conToDetail.ToString.Trim
For i AsInteger = 0 To dgvAdvDoc.Rows.Count - 1
With sqlCom.Parameters
.Clear()
.AddWithValue("@Name", dgvAdvDoc.Rows(i).Cells(0).Value)
.AddWithValue("@Description", dgvAdvDoc.Rows(i).Cells(1).Value)
.AddWithValue("@ConToMaster", conToDetail)
.AddWithValue("@Row", i + 1)
EndWith
sqlCom.ExecuteNonQuery()
Next i
sqlCon.Close()


با تشکر از دوستانی که به این نوشته توجه و مرا یاری می فرمایند.

چشم ها را باید شست/جور دیگر باید دید.

anooshiran
شنبه 20 بهمن 1386, 01:45 صبح
واقعا کسی نمی تواند در این مورد به من کمک کند
هنوز هم منتظر الطاف دوستان هستم

anooshiran
شنبه 20 بهمن 1386, 07:33 صبح
سلام دوستان
بالاخره مجبور شدم کد ها را عوض کنم و از متد دیگری استفاده کنم
در ضمن نمی دانم چرا دوستان معمولا تاپیک های مرا بی پاسخ می گذارند.به هر حال هر کسی از این سایت بهره می گیرد جهت حل مشکلی است و چه بهتر که اگر روزی مشکلی از خودش حل شده به یاری دیگران هم بشتابد.


Dim sqlCon AsNew SqlClient.SqlConnection("Integrated Security=SSPI;Data Source=SERVER ;Initial Catalog='BasisInfo'")
Dim sqlDtAdp AsNew Data.SqlClient.SqlDataAdapter("", sqlCon)
Dim dSet AsNew DataSet
Dim dTable AsNew DataTable
Dim sqlCom AsNew SqlClient.SqlCommand("", sqlCon)


sqlDtAdp.SelectCommand.CommandText = "SELECT Name , Description ,IsValid ,Code FROM BasisMainDetail WHERE ConToMaster=" + conToDetail.ToString.Trim
If dSet.Tables.Contains("BasisMainDetail") Then dSet.Tables.Remove("BasisMainDetail")
sqlDtAdp.Fill(dSet, "BasisMainDetail")
sqlCon.Close()
dTable.Clear()
dTable = dSet.Tables("BasisMainDetail").Copy

PrivateSub Update_DetailTable(ByVal Selection AsString)
If sqlCon.State = ConnectionState.Closed Then sqlCon.Open()
Dim sqlComBld AsNew SqlClient.SqlCommandBuilder()
sqlComBld.DataAdapter = sqlDtAdp
sqlDtAdp.UpdateCommand = sqlComBld.GetUpdateCommand
sqlDtAdp.InsertCommand = sqlComBld.GetInsertCommand
sqlDtAdp.DeleteCommand = sqlComBld.GetDeleteCommand
sqlDtAdp.Update(dTable)
EndSub