2016-05-21 9 views
1

ギフトカード情報を取得するためのプログラムを作っています。.net WPFのSQLヘルプ。複数の行を取得し、結果をデータグリッド表示にする

私は周りを見て、これを行うにはいくつかの方法があるように見えますが、私はまだ働いていない。私はデータベースのカード(複数行)の歴史のためのいくつかのデータを取得し、WPFフォームで表示しようとしています。接続文字列を変更しました。句に変数cardNumberを使用しました。現時点では、私は下に掲載されたコードを持っています。

編集:ResultsGridを明確にするには、上のデータグリッドビューでUI

 if (CardNumber.TextLength == 14) 
     { 
      SqlConnection sqlConnection1 = new SqlConnection("Data Source=XXX;Initial Catalog=USICOAL;Integrated Security=True"); 
      SqlCommand cmd = new SqlCommand(); 
      SqlDataReader reader; 

      cmd.CommandText = "SELECT STORE_NO, WORKSTATION_NO, RTL_TRN_NO, AMOUNT, ACCT_TRN_TYPE_CODE, ACCT_TRN_DATETIME, OLD_BALANCE, NEW_BALANCE FROM ACCOUNT_TRANSACTION WHERE ACCOUNT_NO = " + cardNumber; 
      cmd.CommandType = CommandType.Text; 
      cmd.Connection = sqlConnection1; 


      sqlConnection1.Open(); 

      reader = cmd.ExecuteReader(); 
      ResultsGrid.DataSource = reader; 
      ResultsGrid.Refresh(); 


      sqlConnection1.Close(); 
     } 
     //Else do nothing 

ます。private void CardNumber_TextChanged(オブジェクト送信者、EventArgsの電子) { // が { cardNumberプロパティを試しintに値を変換してみ= long.Parse(CardNumber.Text); } catch //スローされた例外をキャッチします。 { Console.WriteLine( "Unable to Convert to long"); CardNumber.Text = cardNumber.ToString(); } }

+1

のように見えますか? – Shon

+0

DataGridが空白のエラーはありません。デバッグを実行し、中断して、読者がデータを持っていることを見ることができます。 – Delo1987

+0

リフレッシュラインを削除するか、applcation.doevents()を実行してください – Shon

答えて

0

単純に、以下のようにしてみてください() sqlConnection1.Open(間;およびclose();)

SqlDataAdapter da=new SqlDataAdapter(cmd); 
DataTable dt=new DataTable("ACCOUNT_TRANSACTION"); 
da.Fill(dt); 
ResultsGrid.ItemsSource=dt.Defaultview; 

私はドンを意味するのVisual Studioによる自動インテリセンスをサポートして手動でコードを書くことをお勧めします大文字と小文字が区別されるため、上記のコードをコピーしてください。

、あなたは3行、

reader = cmd.ExecuteReader(); 
ResultsGrid.DataSource = reader; 
ResultsGrid.Refresh(); 
+0

あなたは大文字小文字の区別に注意する必要があるようです。あなたはCardNumberとcardNumberを持っています。 –

+0

混乱して申し訳ありません。 CardNumberはUIテキストフィールドです。別の方法で私は検証のためにcardNumberを使用しています。私は今メインの後にmothodを入れます – Delo1987

+0

推奨されているようにコードを変更しましたが、今はデバッグ中にデータが取得されていないのが見えます。私はまだネットとそれでSQLを使用して新しいです。私はもう少し読んでいますが、この行を説明できますか? DataTable dt = new DataTable( "ACCOUNT_TRANSACTION"); DataTableはどのようにデータアダプタにリンクしますか? – Delo1987

0

みんなそれが今働いているすべてのあなたの助けに感謝する必要はありません。私は新しいので、私のupvoteはまだ表示されませんが、あなたはそれらを得た。

今ではエラーになりますこれは何

SqlConnection sqlConnection1 = new SqlConnection(); 
sqlConnection1.ConnectionString = @"Data Source=###; Initial Catalog =USICOAL; Integrated Security=True"; 

SqlCommand cmd = new SqlCommand(); 
cmd.Connection = sqlConnection1; 
cmd.CommandText = "SELECT STORE_NO, WORKSTATION_NO, RTL_TRN_NO, AMOUNT, ACCT_TRN_TYPE_CODE, ACCT_TRN_DATETIME, OLD_BALANCE, NEW_BALANCE FROM ACCOUNT_TRANSACTION WHERE ACCOUNT_NO = " + cardNumber + "order by ACCT_TRN_DATETIME"; 

sqlConnection1.Open(); 

DataTable dt = new DataTable(); 
SqlDataAdapter da = new SqlDataAdapter(cmd); 
da.Fill(dt); 
ResultsGrid.DataSource = dt; 
+0

おめでとうございます!私もあなたの質問をupvoted。良い一日を。 :) –

関連する問題