PDA

View Full Version : مشکل در اضافه کردن رکورد



alex_kh58
چهارشنبه 05 اردیبهشت 1386, 16:48 عصر
موقع اضافه کردن رکورد به Datatable پیغام زیر رامی دهد
there is norow at position 0
در حالی که بقیه فرم ها مشکلی ندارد و با روش یکسانی نوشته شده اند.
گفتم شاید این خطارو دیده باشید و به نظرتون آشنا باشه. اگر کد هم لازم باشد بگید که اضافه کنم


private void NbtnSave_Click(object sender, EventArgs e)
{
try
{

switch (_CurrentMode)
{
case ManipulationMode.Edit:
this.Validate();
this.trHesabBankiBindingSource.EndEdit();
if (dpDataSet.trHesabBanki[trHesabBankiBindingSource.Position].RowState == DataRowState.Modified)
{
//gGeneralDPFacade.HesabBanki_Update(dpDataSet.trHes abBanki[trHesabBankiBindingSource.Position]);
//gGeneralDPFacade.HesabBanki_Update(dpDataSet.trHes abBanki);
}
break;
case ManipulationMode.New:
this.Validate();
this.trHesabBankiBindingSource.EndEdit();
gGeneralDPFacade.HesabBanki_Update(dpDataSet.trHes abBanki[trHesabBankiBindingSource.Position]);
//gGeneralDPFacade.HesabBanki_Update(dpDataSet.trHes abBanki);
break;
default:
MessageBox.Show("BAD STATE");
break;

}
_CurrentMode = ManipulationMode.Normal;
EnableControls(ManipulationMode.Normal);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}


کد HesabBanki_Update

public void HesabBanki_Update(dpDataSet.trHesabBankiRow trHesabBankiRow)
{
try
{
_trHesabBankiTableAdapter.Update(trHesabBankiRow);
}
catch (Exception ex)
{
throw ex;
}
}

release2008
چهارشنبه 05 اردیبهشت 1386, 17:16 عصر
کد بزاری راحت تر می شه خطا را بررسی کرد!

choobin84
جمعه 07 اردیبهشت 1386, 15:57 عصر
نوع دستوراتی که به کار برده اید برای من چندان آشنا نیستند و اولین بار است که با اونها برخورد می کنم.
اما...
پیغامی که دریافت می کنید (There is no row at position 0. ) برای اینست که رکوردی با مشخصاتی که برای انتخاب آن در نظر گرفته اید وجود ندارد و شما اصرار دارید بر روی رکوردی که وجود ندارد عملیات انجام بدهید.(عرض کردم ، نوع عملیات شما را در کد های بالا متوجه نمی شوم)
میشه کد اس کیو ال رو بذارید؟

alex_kh58
شنبه 08 اردیبهشت 1386, 16:33 عصر
با استفاده از Wizard خودNet
BindingSource, BindingNevigator
تولید می شود که دیگر کد SQL وجود ندارد.
در این کد ها هم از Tableadapterاستفاده شده و از خود متدهای DataSet
که وقتی در فرم دکمه جدید را میزنم و اطلاعات را وارد می کنم بعدش دکمه ذخیره را میزنم این پیغام را می دهد.

ly.comeng
یک شنبه 17 شهریور 1387, 18:31 عصر
نوع دستوراتی که به کار برده اید برای من چندان آشنا نیستند و اولین بار است که با اونها برخورد می کنم.
اما...
پیغامی که دریافت می کنید (There is no row at position 0. ) برای اینست که رکوردی با مشخصاتی که برای انتخاب آن در نظر گرفته اید وجود ندارد و شما اصرار دارید بر روی رکوردی که وجود ندارد عملیات انجام بدهید.(عرض کردم ، نوع عملیات شما را در کد های بالا متوجه نمی شوم)
میشه کد اس کیو ال رو بذارید؟

با سلام
من هم در برنامم همچین error ای دارم.با اینکه کدی که دارم در فرم های دیگه درست کار میکنه.کد فرم را براتون اینجا میذارم.



Private Sub frm_karkard_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
cmd_add.Enabled = True
cmd_save.Enabled = False
cmd_del.Enabled = False
cmd_edit.Enabled = False
cmd_undo.Enabled = False

If cn.State = ConnectionState.Closed Then
cn.Open()
End If
ds = New DataSet
Try
If str_mahal = "" Then
If modir = True Then
da = New SqlDataAdapter("select * from karkard", cn)
da_view = New SqlDataAdapter("select * from view_karkard", cn)
Dim da_khodro As New SqlDataAdapter("select khodro_no from khodro", cn)
da_khodro.Fill(ds, "khodro")
cmb_no.DataSource = ds.Tables("khodro")
cmb_no.DisplayMember = "khodro_no"
cmb_no.Text = ""
Else
da = New SqlDataAdapter("select * from karkard where code_mantaghe=" & cod_jaygah, cn)
da_view = New SqlDataAdapter("select * from view_karkard where code_mantaghe=" & cod_jaygah, cn)
Dim da_khodro As New SqlDataAdapter("select khodro_no from khodro where code_mantaghe=" & cod_jaygah, cn)
da_khodro.Fill(ds, "khodro")
cmb_no.DataSource = ds.Tables("khodro")
cmb_no.Text = ""
End If

Else

Dim da_khodro As New SqlDataAdapter("select khodro_no from khodro where khodro_no='" & str_mahal & "'", cn)
da_khodro.Fill(ds, "khodro")
cmb_no.DataSource = ds.Tables("khodro")
cmb_no.Text = str_mahal
Button3.Enabled = False

da = New SqlDataAdapter("select * from karkard where khodro_no='" & str_mahal & "'", cn)
da_view = New SqlDataAdapter("select * from view_karkard where khodro_no='" & str_mahal & "'", cn)
End If

da.Fill(ds, "karkard")
Dim cb As New SqlCommandBuilder(da)
da_view = New SqlDataAdapter("select* from view_karkard", cn)
da_view.Fill(ds, "view_karkard")
dv = New DataView(ds.Tables("view_karkard"))
DataGridView1.DataSource = ds.Tables("view_karkard")


set_flex()
Catch ex As Exception

MessageBox.Show(ex.Message & ex.Source & ex.StackTrace)
Finally
cn.Close()
End Try

End Sub
Private Sub cmd_add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_add.Click
cmd_add.Enabled = False
cmd_save.Enabled = True
cmd_del.Enabled = False
cmd_edit.Enabled = False
cmd_undo.Enabled = True
edit = False
txt_code.Text = ""
txt_karkard.Text = ""
txt_saat.Text = ""
txt_mablagh.Text = ""
txt_maliat.Text = ""
If str_mahal = "" Then
cmb_no.Text = ""
End If
'cmb_mah.Text = ""
'cmb_sal.Text = ""
txt_kol.Text = ""
txt_rooz.Text = ""
txt_mamooriat.Text = ""

txt_karkard.Focus()
End Sub
Private Sub cmd_save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_save.Click
If edit = False Then
Dim dr As DataRow
dr = ds.Tables("karkard").NewRow
With dr
'.Item(0) = txt_code.Text
.Item(1) = txt_karkard.Text
.Item(2) = txt_saat.Text
.Item(3) = txt_mablagh.Text
.Item(4) = txt_maliat.Text
.Item(5) = cmb_no.Text
.Item(6) = cmb_mah.SelectedValue
.Item(7) = cmb_sal.Text
.Item(8) = txt_kol.Text
.Item(9) = txt_rooz.Text
.Item(10) = txt_mamooriat.Text


End With
ds.Tables("karkard").Rows.Add(dr)
da.Update(ds, "karkard")
'ds.Tables("karkard").Clear()
'da.Fill(ds, "karkard")
ds.Tables("view_karkard").Clear()
da_view.Fill(ds, "view_karkard")
Else 'edit
With ds.Tables("karkard").Rows(DataGridView1.CurrentRow.Index)
.BeginEdit()
'.Item(0) = txt_code.Text
.Item(1) = txt_karkard.Text
.Item(2) = txt_saat.Text
.Item(3) = txt_mablagh.Text
.Item(4) = txt_maliat.Text
.Item(5) = cmb_no.Text
.Item(6) = cmb_mah.SelectedValue
.Item(7) = cmb_sal.Text
.Item(8) = txt_kol.Text
.Item(9) = txt_rooz.Text
.Item(10) = txt_mamooriat.Text

.EndEdit()
End With
da.Update(ds, "karkard")
'ds.Tables("karkard").Clear()
'da.Fill(ds, "karkard")
ds.Tables("view_karkard").Clear()
da_view.Fill(ds, "view_karkard")

End If
'txt_code.Text = ""
txt_karkard.Text = ""
txt_saat.Text = ""
txt_mablagh.Text = ""
txt_maliat.Text = ""
cmb_no.Text = ""
cmb_mah.Text = ""
cmb_sal.Text = ""
txt_kol.Text = ""
txt_rooz.Text = ""
txt_mamooriat.Text = ""
cmd_add.Enabled = True
cmd_save.Enabled = False
cmd_del.Enabled = False
cmd_edit.Enabled = False
cmd_undo.Enabled = False
End Sub



در
cmd_save_Click و در این خط
With ds.Tables("karkard").Rows(DataGridView1.CurrentRow.Index)
این error : there is no row at position 0 را دارم

item o در برنامه مربوط هست به txt_code که در DB ،پرایمری هست و با identity yes .
من که هر چی دیتا ست رو چک کردم مقدار داره؟نمیدونم چرا؟

subsub
یک شنبه 17 شهریور 1387, 18:47 عصر
موقع اضافه کردن رکورد به Datatable پیغام زیر رامی دهد
there is norow at position 0
در حالی که بقیه فرم ها مشکلی ندارد و با روش یکسانی نوشته شده اند.
گفتم شاید این خطارو دیده باشید و به نظرتون آشنا باشه. اگر کد هم لازم باشد بگید که اضافه کنم


private void NbtnSave_Click(object sender, EventArgs e)
{
try
{

switch (_CurrentMode)
{
case ManipulationMode.Edit:
this.Validate();
this.trHesabBankiBindingSource.EndEdit();
if (dpDataSet.trHesabBanki[trHesabBankiBindingSource.Position].RowState == DataRowState.Modified)
{
//gGeneralDPFacade.HesabBanki_Update(dpDataSet.trHes abBanki[trHesabBankiBindingSource.Position]);
//gGeneralDPFacade.HesabBanki_Update(dpDataSet.trHes abBanki);
}
break;
case ManipulationMode.New:
this.Validate();
this.trHesabBankiBindingSource.EndEdit();
gGeneralDPFacade.HesabBanki_Update(dpDataSet.trHes abBanki[trHesabBankiBindingSource.Position]);
//gGeneralDPFacade.HesabBanki_Update(dpDataSet.trHes abBanki);
break;
default:
MessageBox.Show("BAD STATE");
break;

}
_CurrentMode = ManipulationMode.Normal;
EnableControls(ManipulationMode.Normal);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}


کد HesabBanki_Update

public void HesabBanki_Update(dpDataSet.trHesabBankiRow trHesabBankiRow)
{
try
{
_trHesabBankiTableAdapter.Update(trHesabBankiRow);
}
catch (Exception ex)
{
throw ex;
}
}

اون جایی که پیغام خطا میده رو مشخص کنید. این کدها هم برای من یکم ناآشنا هست.

شما try و catch رو حذف کنید تا محل رخ دادن exception مشخص بشه. اون وقت دوستان زودتر می‌تونند جواب رو بدند.