• 締切済み

VC#において特定レコード番号を取得したい

banraiの回答

  • banrai
  • ベストアンサー率0% (0/2)
回答No.1

はじめまして、参考になるかわかりませんが お困りのようですので、書き込んでおきます。 まず、大別して2通りの考え方があるかと思います。 1)sqlで番号を振る 2)C#のプログラムで番号を振る 1)については、参考URLのページをみてください。 SQLサーバーについて書かれていますが、microsoft系のDBをお使いでしたら使えると思います。 結果として、行番号の列が増えたように扱えるはずです。 2)については、C#のループ処理でカウントするとか、ご自由に。 「レコードの番号を取得したい」との事ですが、 そもそも用途は何なのでしょうか?

参考URL:
http://support.microsoft.com/?scid=kb;ja;186133&spid=2852&sid=global

関連するQ&A

  • DataSet(DataTable)の使い方

    GridViewやListViewなどに動的にデータを追加していきたいので、 DataTableを使おうと思いました。 下記、(1)のようにPageLoadイベントで1行追加することはできたのですが、 ボタンを押すごとに、1行ずつ追加していきたいので(2)のように修正したのですが、 ボタンを押したときのポストバックで、DataSetもDataTableもnullになってしまい、 行の追加ができません。 ボタンを押すごとにどんどん行を追加していきたいのですが、このような場合は どのようにDataSetもDataTableを保持しておけば良いのでしょうか。 (1) public partial class WebForm1 : System.Web.UI.Page { int count = 0; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DataSet dS = new DataSet("dS"); DataTable dT = new DataTable("dT"); // データテーブル カラム作成 dT.Columns.Add("no", typeof(int)); dT.Columns.Add("name", typeof(string)); dT.Columns.Add("kind", typeof(string)); dT.Columns.Add("time", typeof(int)); dS.Tables.Add(dT); DataRow dR = dT.NewRow(); dR["no"] = count; dR["name"] = count.ToString(); dR["kind"] = count.ToString(); dR["time"] = count; dT.Rows.Add(dR); // リストビュー データソース選択 ListView2.DataSource = dS; ListView2.DataBind(); } } } (2) public partial class WebForm2 : System.Web.UI.Page { int count = 0; DataSet dS; DataTable dT; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { dS = new DataSet("dS"); dT = new DataTable("dT"); // データテーブル カラム作成 dT.Columns.Add("no", typeof(int)); dT.Columns.Add("name", typeof(string)); dT.Columns.Add("kind", typeof(string)); dT.Columns.Add("time", typeof(int)); dS.Tables.Add(dT); } } protected void Button1_Click(object sender, EventArgs e) { count = count + 1; DataRow dR = dT.NewRow(); dR["no"] = count; dR["name"] = count.ToString(); dR["kind"] = count.ToString(); dR["time"] = count; dT.Rows.Add(dR); // リストビュー データソース選択 ListView2.DataSource = dS; ListView2.DataBind(); } }

  • 「指定されたキャストは有効ではありません」

    ASP.NET初心者です。 WebMatrixを使っています。 DataSetから文字列を取得しようとして下記のコードを書いたところ、掲題のエラーが発生しております。 int i = 0; string a = (string)cDataSet.Tables[0].Rows[i][0]; これを下記のように変更するとエラーが発生しません。 string a = (string)cDataSet.Tables[0].Rows[0][0]; これはなぜでしょうか? ちなみに、キャストを行わない場合は 「型 'object' を型 'string' に暗黙的に変換できません」とエラーが出ます。 よろしくお願いします。

  • C# DataGridViewにデータを追加したい。

    C# DataGridViewにデータを追加したい。 DataGridViewにレコードを追加したいのですが、Formのロードイベントで以下コードを実行しています。 // テーブルを作成 DataSet dataSet1 = new DataSet("商品マスター"); DataTable dataTable1 = dataSet1.Tables.Add("製品テーブル"); DataColumn dataClumn1 = dataTable1.Columns.Add("ID", typeof(int)); DataColumn dataClumn2 = dataTable1.Columns.Add("名前", typeof(int)); // テーブルにデータを追加 dataTable1.Rows.Add(new Object[] { 1, name1}); dataTable1.Rows.Add(new Object[] { 2, name2}); dataGridView1.DataSource = dataTable1; としています。 Formにボタンを配置し、ボタンクリック時にテキストボックス[txtProName]のデータを レコード追加したいのですが、記入の仕方がわかりません。 まず、 DataSet dataSet1 = new DataSet("商品マスター"); DataTable dataTable1 = dataSet1.Tables.Add("製品テーブル"); をロードイベントメソッドに記入しているのも問題がありそうなのですが、 良く理解できません。 ボタンイベントでデータを挿入する方法等、記入方法のご教授よろしくお願いいたします。 当方、超初心者なので、出来れば、ソースコードもお願いいたします。m(_ _)m

  • VC# においてDBについての質問です

    お目に頂きありがとうございます. Visual Studio C# .NETのデータベースプログラミングの初歩の部分でつまずいてしまい,手助けしてください; private OleDbConnection cn; private OleDbCommand cmd; private void Make() { String id1 = idText1.Text, passwd = passwdText1.Text; /* make up Connection. */ cn = new OleDbConnection(); cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;" + "Data Source=D:\\Work\\Visual Studio .NET 2003\\otherApplication1\\Custom.mdb"; cn.Open(); // レコードの追加 try { cmd = new OleDbCommand("INSERT INTO Table_custom values(id1, passwd, 0)", cn); cmd.ExecuteNonQuery(); } catch(Exception ex) { MessageBox.Show("そのIDはダメ☆"); this.Dispose(); } } レコード内に入っているIDと被らなければ,入力されたID・パスワード・0(初期値)をテーブルに代入しようとしています. しかし何故か代入がされず,catch文に入ってしまいます. どうしてでしょうか? 尚,テーブルのキーは,ID(Primary Key), Passwd, Balance です. よろしくお願い致します

  • データベースのDataRowの使い方について

    環境: Windows7 MicrosftVisualStudio 2013 SQLServer 2014 言語 C# .Net 通常以下のようにしてDataRowを作って使用しますが、 DataSet ds = new DataSet(); DataTable dt = new DataTable("Table1"); dt.Columns.Add("商品番号"); dt.Columns.Add("商品名"); dt.Columns.Add("価格"); ds.Tables.Add(dt); DataRow datarow = ds.Tables["Table1"].NewRow(); データソースと同じ列を使用したいので データセット  : MAINDataSet データテーブル : MASTERDataTable MAINDataSet.MASTERDataTable dtMaster = new MAINDataSet.MASTERDataTable(); として新規作成を行ったのですが、このままではレコード数が0で、上記の DataRow datarow = dataset.Tables["Table1"].NewRow(); にあたる処理 DataRow dr = MAINDataSet.MASTERDataTable.NewRow(); がわかりません。 現状では この1行の代わりに以下のようなことを毎回しなければ ならないのでしょうか? MAINDataSet.MASTERDataTable dt = new MAINDataSet.MASTERDataTable(); DataSet ds = new DataSet(); DataTable dt = new DataTable("Table1"); for(int inum = 0; inum < dt.Columns.Count; inum++) { dt.Columns.Add(dt.Columns[inum].ColumnName); } ds.Tables.Add(dt); DataRow datarow = ds.Tables["Table1"].NewRow();

  • SELECT/別テーブルのレコード数も取得したい

    ■環境 ・MySQL ■前提 ・テーブルA … idカラム ・テーブルB … A_idカラム ■やりたいこと ・テーブルAデータを取得する際、テーブルAレコードに応じて、テーブルB「A_idカラム」の数(レコード数)も取得したい ■取得イメージ例 ・テーブルA「全カラム」、「count」カラム ※「count」カラム … テーブルBにある「A_idカラム」の数 ■知りたいこと ・どこにも存在しないこの「count」カラムはどうやって作成したら良いでしょうか? ・全体のSQL文

    • ベストアンサー
    • MySQL
  • レコードの削除について

    VB2005、SQLServer2005環境です。 度々質問させていただきます。コード1、コード2、コード3を主キーに持つAテーブルがあります。 そのテーブルからある特定レコードを削除したいのですが、 targetRow = dt.Rows.Find(findTheseVals(2)) のところでエラーになります。 エラー内容は、インデックスを付加するキーには 3 値が必要ですが、1 値を取得しました。 いったいどういう意味なのでしょうか?FINDする時の書き方が悪いのでしょうか? ご教授お願いします。 Private Sub BTN_削除_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BTN_削除.Click Dim strsql As String Dim findTheseVals(2) As Object '///DB接続 省略/// strsql = "SELECT * FROM Aテーブル" Dim comm As SqlCommand = New SqlCommand(strsql, Con) Try Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm) dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey Dim ds As DataSet = New DataSet() dataadapter.Fill(ds, "Aテーブル") Dim dt As New DataTable dt = ds.Tables("Aテーブル") Dim targetRow As DataRow targetRow = dt.NewRow() findTheseVals(0) = TXT_コード1.Text findTheseVals(1) = TXT_コード2.Text findTheseVals(2) = TXT_コード3.Text targetRow = dt.Rows.Find(findTheseVals(2)) ←ここでエラー targetRow.Delete() Dim cb As SqlCommandBuilder = New SqlCommandBuilder(dataadapter) dataadapter.Update(ds, "Aテーブル") Catch oExcept As Exception '例外が発生した時の処理 Finally '///DB切断省略/// End Try End Sub

  • 重複レコードを高速で取得するSQL

    Access(mdb)から約2万件レコードのあるテーブルがあるとします。 列数は20ほど。 その中から、3つの列において重複しているレコードを取得したいのですが、 高速に取得する方法はありますでしょうか? (VB.NETで、重複レコードをユーザーに示す処理を作成したいのです) 以下のSQLを試したところ、1分以上時間がかかってしまいました。 ----------------------------- SELECT * FROM テーブルA table1 WHERE EXISTS ( SELECT * FROM テーブルA table2 WHERE table1.列A = table2.列A   table1.列B = table2.列B   table1.列C = table2.列C GROUP BY table2.列A HAVING COUNT(table2.列A) > 1 ) ----------------------------- アドバイスをお願いします。

  • SQL serverデータ取得

    public static DataSet GetCustomers() { string sql = @"SELECT * FROM M_CHARGE"; SqlConnection conn = new SqlConnection(DBConfiguration.DbConnectionString); SqlDataAdapter da = new SqlDataAdapter(sql, DBConfiguration.DbConnectionString); da.SelectCommand = new SqlCommand(sql, conn); DataSet ds = new DataSet(); ds.Tables.Add("M_CHARGE"); da.Fill(ds, "M_CHARGE"); return ds; } da.Fill(ds, "M_CHARGE");の部分でインスタンスエラーになります。どうしてでしょうか? 誰か教えて下さいお願いします(TдT)

  • mysql_query等でレコード数を変数に格納

    mysql> SELECT COUNT(id) AS rows FROM someTABLE WHERE name IN ( 'A','B','C' ) ; で +------+ | rows | +------+ | 9 | +------+ と出すことができます。 この rows の数「9」を php の変数に入れたいのです。 <?php // DB接続省略 $sql = "SELECT COUNT(id) AS rows FROM someTABLE WHERE name IN ( 'A','B','C' )" ; $result = mysql_query($sql, $conn); var_dump($sql."<br />"); echo ($result."--result"."<br/>"); $rows= mysql_num_rows($result); echo ($rows."--rows"."<br/>"); ?> として、ブラウザで確認すると string(80) "SELECT COUNT(id) AS rows FROM someTABLE WHERE name IN ( 'A','B','C' ) " Resource id #3--result 1--rows となって、 $rows に値’9’が入りません。$rows にレコード数を取得させるには、どうすれば良いでしょうか?

    • ベストアンサー
    • PHP