PDA

View Full Version : حل مشکل دو بار لود شدن محتوای نام مشتری از دیتابیس



port72
جمعه 08 شهریور 1392, 23:10 عصر
با سلام
فرض کنید یک فرم اصلی و یک فرم فرعی داریم. و در آن (فرم فرعی) یک کمبو باکس هستش که اطلاعات تیبل نام مشتری رو نشون میده و یک تکس باکس که وقتی نام مشتری رو انتخاب میکنیم (در کمبو باکس) محتویات تیبل آدرس مربوط به مشتری رو نشون میده (تا این لحظه مشکلی نیست)زمانی که فرم فرعی رو میبندیم و دوباره باز میکنیم محتوای کمبو باکس که اطلاعات نام مشتری هست دوباره لود شده و از هر اسم دوبار در کمبو باکس هست.این مشکل رو چطور حل کنم.
Public Class Form1
Sub fillcombo()
strsql = "select * from tbl_moshtari"
Dim acscmd As New oledb.oledbcommand
acscmd.commandtext = strsql
acscmd.connection = acsconn
acsdr = acscmd.executereader
While (acsdr.read())
ComboBox1.Items.Add(acsdr("name"))
End While
acscmd.dispose()
acsdr.close()
End Sub
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Module1.connect()
Me.fillcombo()
End Sub

Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
strsql = "select * from tbl_moshtari where name='" & ComboBox1.Text & " '"
Dim acscmd As New OleDb.OleDbCommand
acscmd.CommandText = strsql
acscmd.Connection = acsconn
acsdr = acscmd.ExecuteReader
If (acsdr.Read() = True) Then
TextBox1.Text = (acsdr("address"))

End If
acscmd.Dispose()
acsdr.Close()
End Sub
End Class

کد ماژول:
Imports System.Data.OleDb
Module Module1
Public acsconn As New OleDb.OleDbConnection
Public acsdr As OleDbDataReader
Public strsql As String
Sub connect()
acsconn.ConnectionString = "provider=microsoft.ace.oledb.12.0; data source=|datadirectory|\dbng.accdb;"
acsconn.open()
End Sub
End Module

مهرداد صفا
شنبه 09 شهریور 1392, 00:11 صبح
با سلام.
قبل از پر کردن combo چک کنید که قبلا پر نشده باشد و در صورت خالی بودن این کار را انجام دهید:

sub Form_load(...
if combo.Items.Count =0 then
me.FillCombo
end if
end sub