0

関数 max を使用して自動番号を実行する必要があるか、それが機能します。

私はデータグリッドビューにExcelファイルをインポートし、重複しないようにフィールド「refId」を生成しています。

コード:

int count = 1;

sb = new StringBuilder();
sb.Append("SELECT COUNT(*) FROM tableAset");

string sql = sb.ToString();
cmd.CommandText = sql;
cmd.CommandType = CommandType.Text;
cmd.Connection = Conn;

count = (int)cmd.ExecuteScalar();
int newCount = count;

for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    newCount = newCount + 1;
    dataGridView1.Rows[i].Cells[0].Value = cbType.Text + "000" + newCount;
    dataGridView1.Rows[i].Cells[8].Value = cbType.Text;
    dataGridView1.Rows[i].Cells[9].Value = "000" + newCount;
}

cmd.ExecuteNonQuery();

今すぐ結果。

refId | タイプ ID | 自動番号

M0005 | み | 5

M0006 | み | 5

T0001 | T | T | 1

T0002 | T | T | 2

Y0003 | よ | 3

Y0004 | よ | 4

しかし、私は結果が必要です:

元。

  • 初めてインポートします。

refId | タイプ ID | 自動番号

M0001 | み | 1

M0002 | み | 2

T0001 | T | T | 1

T0002 | T | T | 2

Y0001 | よ | 1

Y0002 | よ | 2

  • 二度目の輸入。

refId | タイプ ID | 自動番号

M0003 | み | 3

M0004 | み | 4

T0003 | T | T | 3

T0004 | T | T | 4

Y0003 | よ | 3

Y0004 | よ | 4

これはデータベースにまとめられています。

refId | タイプ ID | 自動番号

M0001 | み | 1

M0002 | み | 2

M0003 | み | 3

M0004 | み | 4

T0001 | T | T | 1

T0002 | T | T | 2

T0003 | T | T | 3

T0004 | T | T | 4

Y0001 | よ | 1

Y0002 | よ | 2

Y0003 | よ | 3

Y0004 | よ | 4

度々の質問ですみません。

ありがとうございました。:))

4

1 に答える 1

4
public int Autogenerate()
{
    con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Directory.GetCurrentDirectory() + "/CleaningTroopers.mdb");
    con.Open();
    string str4 = "select iif(isnull(max(uom_code)),1000,max(uom_code)+1) from uom_master ";
    cmd = new OleDbCommand(str4, con);
    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
    DataTable dt = new DataTable();
    da.Fill(dt);
    return Convert.ToInt32(dt.Rows[0][0]);
    con.Close();
}
于 2012-09-18T11:48:18.940 に答える