从类型化数据集中获取标识值
本文关键字:获取 标识 集中 数据集 类型化 数据 | 更新日期: 2023-09-27 18:12:01
我在表单中得到了一个类型化的数据集。使用BindingSource在行中行走,插入和更新记录。
一切都很好,但我需要插入记录标识值来为表中的GeneratedCode
字段生成字符串。
得到这个值后,我将把值发送到我的CodeGen()
方法并生成字符串,并用这个值更新同一行的CodeGen
字段。
我正在使用Access数据库。我知道Access有@@Identity
,但我该如何使用它?我不想使用OleDbCommand
或类似的东西。
我该怎么做?
string GenCode(int pCariId)
{
string myvalue;
int totalDigit = 7;
myvalue = "CR" + pCariId.ToString();
for (int digit = myvalue.Length; digit <= totalDigit - 1; digit++)
{
myvalue = myvalue.Insert(2, "0");
}
return myvalue;
}
private void dataNavigator_ButtonClick(object sender, NavigatorButtonClickEventArgs e)
{
switch (e.Button.ButtonType)
{
case NavigatorButtonType.EndEdit:
try
{
this.Validate();
if (KaydetFlags == 1)
{
this.bndCariKayit.EndEdit();
datagate_muhasebeDataSet.TB_CARI.Rows[datagate_muhasebeDataSet.Tables["TB_CARI"].Rows.Count - 1]["INS_USR"] = 0;
datagate_muhasebeDataSet.TB_CARI.Rows[datagate_muhasebeDataSet.Tables["TB_CARI"].Rows.Count - 1]["INS_TRH"] = DateTime.Now;
XtraMessageBox.Show("Yeni Cari Kaydı Tamamlandı.");
KaydetFlags = 0;
}
else
{
DataRowView currentRow = (DataRowView)bndCariKayit.Current;
currentRow.Row["UPD_USR"] = "0";
currentRow.Row["UPD_TRH"] = DateTime.Now;
XtraMessageBox.Show("Cari Kaydı Güncellendi.");
this.bndCariKayit.EndEdit();
}
this.tB_CARITableAdapter.Update(datagate_muhasebeDataSet.TB_CARI);
}
catch (System.Exception ex)
{
XtraMessageBox.Show("Kayıt İşlemi Başarısız. Lütfen Tekrar Deneyiniz.");
}
break;
根据文档,您必须使用TableAdapter
的RowUpdated
方法
private static void OnRowUpdated(
object sender, OleDbRowUpdatedEventArgs e)
{
// Conditionally execute this code block on inserts only.
if (e.StatementType == StatementType.Insert)
{
OleDbCommand cmdNewID = new OleDbCommand("SELECT @@IDENTITY",
connection);
// Retrieve the Autonumber and store it in the CategoryID column.
e.Row["CategoryID"] = (int)cmdNewID.ExecuteScalar();
e.Status = UpdateStatus.SkipCurrentRow;
}
}
我实际使用的另一个选项是创建Select
查询,它只是从id
列中获得最大值:
SelectLastAddedId:
SELECT MAX(id) FROM obmiar
只需将查询执行模式设置为scalar
,就可以在代码中引用为int lastId =
TableAdapter.SelectLastAddedId()