PDA

View Full Version : خالی کردن جدول



Hossein Bazyan
چهارشنبه 15 خرداد 1387, 20:11 عصر
سلام
من تابع زیر را برای به دست آوردن تعدادهای رکوردهای موجود در بانک نوشته ام و خوب هم عمل میکند. اما بار دوم که به آن مراجعه میکنم مقدار قبلی را با مقدار جدید نمایش میدهد


Public Function RecordCount(ByVal sqlQuery As String) As Long
Dim recCount As Long = 0
Dim ds As New DataSet()
Dim con As OleDbConnection
Dim dr As OleDbDataReader
Dim cmd As OleDbCommand

Try
con = New OleDbConnection(Variable.GetProvider())
con.Open()
cmd = New OleDbCommand(sqlQuery, con)
dr = cmd.ExecuteReader()

While dr.Read()
recCount = recCount + 1
End While
Catch ex As Exception

End Try
con.Close()
RecordCount = recCount


End Function

مثلا بار اول با توجه به مقدار دریافتی 3 رکورد برمیگرداند . بار دوم که آن را میخوانم مقدار رکوردهای جدید به اضافه 3 رکورد قبلی را برمیگرداند . مثلا اگر 3 رکورد برای مقدار sqlA داشته باشیم و برای sqlB تعداد 2 رکورد داشته باشیم . در مراجعه اول 3 و در مراجعه دوم مقدار 5 را به جای دو برمیگرداند.
فکر کنم باید یه جورایی DataSet خالی بشه اما نمیدانم چه جوری ؟

Dariuosh
چهارشنبه 15 خرداد 1387, 21:08 عصر
PublicFunction RecordCount(ByVal sqlQuery AsString) AsLong
Dim recCount AsLong = 0
Dim con As OleDbConnection
Dim cmd As OleDbCommand
Try
con = New OleDbConnection(Variable.GetProvider())
con.Open()
sqlQuery = "Select Count(*) From ( " & sqlQuery & " )"
cmd = New OleDbCommand(sqlQuery, con)
RecordCount = recCount = cmd.ExecuteScalar

Catch ex As Exception
EndTry
con.Close()

EndFunction

Hossein Bazyan
چهارشنبه 15 خرداد 1387, 21:16 عصر
PublicFunction RecordCount(ByVal sqlQuery AsString) AsLong
Dim recCount AsLong = 0
Dim con As OleDbConnection
Dim cmd As OleDbCommand
Try
con = New OleDbConnection(Variable.GetProvider())
con.Open()
sqlQuery = "Select Count(*) From ( " & sqlQuery & " )"
cmd = New OleDbCommand(sqlQuery, con)
RecordCount = recCount = cmd.ExecuteScalar

Catch ex As Exception
EndTry
con.Close()

EndFunction


سلام
مرسی از توجه شما. همین کار رو قبلا کرده بودم یعنی با cmd.ExecuteScalar اما همین مشکل بالایی هست .

Dariuosh
چهارشنبه 15 خرداد 1387, 22:02 عصر
تو اين کدي گذاشتم نه DAtaSet هست نه dataReader !!!
شما امتحانش کردين جواب نداد ؟

Hossein Bazyan
چهارشنبه 15 خرداد 1387, 22:20 عصر
تو اين کدي گذاشتم DAtaSet هست نه dataReader !!!
شما امتحانش کردين جواب نداد ؟
سلام
دقیقا همین کد رو نوشتم اما در مراجعه دوم مقدار قبلی رو با فعلی جمع میکنه !!
DAtaSet و dataReader باید یه جورایی خالی بشن

Amateur_G
جمعه 17 خرداد 1387, 15:24 عصر
سلام.
با احترام به نظرات استادان خودم.
من براي پيدا كردن تعداد ركورد هاي موجود در جداولم از currencyManager استفاده مي كنم.
به اين صورت كه ابتدا با يك تابع ديتاست خودمو به ديتابيس سپس dataview را به dataset وسپس currencyManager را به dataview متصل مي كنم با كد زير:



Dim objconnection As New OleDbConnection("Connection string")
objDataAdapter.SelectCommand = New OleDbCommand
objDataAdapter.SelectCommand.Connection = objconnection
objDataAdapter.SelectCommand.CommandText = "select * from TableName"
objDataAdapter.SelectCommand.CommandType = CommandType.Text
objconnection.Open()
objDataSet = New DataSet
objDataAdapter.Fill(objDataSet, "TableName")
objDataView = New DataView(objDataSet.Tables("TableName"))
objCurrencyManager = CType(Me.BindingContext(objDataView), CurrencyManager)
objconnection.Close()



بعد با كد زير ميتونم به تعداد ركورد هاي جدولم دسترسي پيدا كنم:



Dim RecordCount As Integer
RecordCount=objcurrencyManager.Count


بعد از آن هم با كد زير dataset را خالي ميكنم:



objDataSet.Clear()


اميدوارم مفيد بوده باشم.:تشویق: