2017-03-20 7 views
0

結合テーブルからデータを収集しようとしていますが、現在はnull表示(エラーはありません)があります。私のコードは効率的ではありません。しかしここに私がしようとしているものです:VB.Net)結合テーブルの条件データリーダーを使用

conn.Open() 
    sqlcmd = New MySqlCommand("select tabsen.id_absen, tsiswa.NIS, tsiswa.nama, tabsen.alpa, tabsen.izin, tabsen.sakit, tabsen.tahun_ajaran from tabsen join tsiswa on tabsen.NIS = tsiswa.NIS where tsiswa.NIS like '%" & txtnis.Text & "%'", conn) 
    dr = sqlcmd.executereader() 
    dr.Read() 
    If dr.HasRows Then 

     txtid.Text = dr.Item("id_absen") 
     txtnis.Text = dr.Item("NIS") 
     txtnama.Text = dr.Item("nama") 
     txta.Text = dr.Item("alpa") 
     txti.Text = dr.Item("izin") 
     txts.Text = dr.Item("sakit") 
     cmbtahun.Text = dr.Item("tahun_ajaran") 
     txta.Focus() 
     btnsave.Text = "UPDATE" 
     btndelete.Enabled = True 
     txtjumlah.Enabled = True 
     cmbpredikat.Enabled = True 
     cmbtahun.Enabled = True 
     txtnis.Enabled = False 
     dr.Close() 

    Else 
     While dr.Read() 
      txtnama.Text = dr("nama") 
     End While 
     dr.Close() 
     MsgBox("data absensi belum diisi") 
    End If 
    conn.Close() 

行が見つかった場合、それは魅力のように動作します。しかし、テーブル 'tabsen'の上に空があるとき、エラーはありませんが、txtnama.Textは 'nama'を表示しませんでした。

the problem

私は誰もがコードを見ることによって理解すると思います。私の英語は十分ではないので、私はそれほど説明できません。

+1

あなたが(暗黙)(https://www.w3schools.com/sql/sql_join_inner.asp)[内部結合]を持つ2つのテーブルを結合しました。 'tabsen'が空のデータを生成できる場合は、[右外部結合](https://www.w3schools.com/sql/sql_join_right.asp)(またはテーブルの切り替え時には左外部結合)を行う必要があります。両方とも空の場合は、[完全外部結合](https://www.w3schools.com/sql/sql_join_full.asp)に移動する必要があります。 –

+0

*空のデータ=データなし –

+0

現在固定です。ありがとうございます – Ryan

答えて

0
... from tabsen join tsiswa on ... 

これにより、両方のテーブルに一致するデータがある場合にのみ結果を提供する2つのテーブルにInner Joinが生成されます。

使用のいずれかRight (Outer) Join

... from tabsen right join tsiswa on ... 

それともLeft (Outer) Join

... from tsiswa left join tabsen on ... 

tabsenが一致する行が含まれていない場合、その属性のすべてNULL値であることに注意してください、と述べました。
ですから、テキストボックスにDataReaderオブジェクトから値を割り当てる際にことを確認する必要があります。

Dim id_absen = dr.Item("id_absen") 
txtid.Text = If(id_absen<> DBNull.Value, id_absen.ToString(), String.Empty) 
... 

ところで...私はあなたのVBファイルの最上部にOption Strict Onを設定することをお勧めします。コンパイルエラーが発生しますが、将来的には平均的なバグがたくさんあります。

+0

ありがとうございます。私は本当に深いmysqlについて学ぶ必要があります。私の問題は今解決した – Ryan

関連する問題