PDA

View Full Version : مقایسه 2 مقدار از دو جدول متفاوت و نحوه تصمیم گیری در مورد آنها



sadeghlinux
سه شنبه 14 شهریور 1391, 18:09 عصر
سلام دوستان

من دو تا جدول دارم که که بنا به نیاز برنامه میخام مقادیر رو مقایسه کنم

یکی از جداول واسه خرید هست و یکی برای فروش.
حالا با کد زیر جمع تعداد کالا رو بدست میارم(خریداری شده)


Dim sumkharid, sumfroush As Long
Dim cn As SqlConnection = New SqlConnection("Data Source=.;Initial Catalog=lavazem-yadaki;Integrated Security=True")
cn.Open()
Dim ad As SqlDataAdapter = New SqlDataAdapter("select sum(tedad) from tbllistkharid where codekala=" & txtCkala.Text, cn)
Dim dt As New DataTable
ad.Fill(dt)
sumkharid = dt.Rows(0)(0)
و برای بدست آمورد تعدا فروش از کد زیر استفاده میکنم

Dim ad2 As SqlDataAdapter = New SqlDataAdapter("select sum(tedad) from tblListfrosh where codekala=" & txtCkala.Text, cn)
Dim dt2 As New DataTable
dr.Close()
ad2.Fill(dt2)
sumfroush = dt.Rows(0)(0)

اگه من برای اولین بار بخوام کالایی رو بفروشم چون جدول فروش خالی هس گیر میده
حالا میخوام لطف کنید فقط بگید که من چجوری باید چک کنم که اگر جدول خالی بود
بیاد متغیر جمع فروش رو برابر 0 کنه و اگه نه که مراحل بالا رو انجام بده

با تشکر

Hybrid
سه شنبه 14 شهریور 1391, 18:45 عصر
حالا میخوام لطف کنید فقط بگید که من چجوری باید چک کنم که اگر جدول خالی بود
بیاد متغیر جمع فروش رو برابر 0 کنه و اگه نه که مراحل بالا رو انجام بده


راه های متفاوتی داره ، یکی از راه ها اینه که شما بیاین با استفاده از دستور Select تعداد عناصر داخل جدول رو بدست بیارین و اونو داخل یک متغیر قرار بدین و سپس مقادیر اون متغیر رو چک کنید.

یک تابع واستون نوشتم که نحوه ی استفاده از دستور Count رو بهتون میده :


Function GetRecordNumber() As Integer
Dim oledbcommand1 As New OleDbCommand
oledbcommand1.Connection = oledbConnection1
oledbcommand1.CommandType = CommandType.Text
oledbcommand1.CommandText = "Select count (*) from person"
If oledbcommand1.Connection.State <> ConnectionState.Open Then
oledbcommand1.Connection.Open()
End If
Dim i As Integer = oledbcommand1.ExecuteScalar()

oledbConnection1.Close()
Return i
End Function

** دستور بالا تعداد عناصر جدول Person رو بدست میاره و اونو داخل یک متغیر i قرار میده و اونو واسمون برگشت میده.به روش مشابه میتونین مشکل خودتون رو حل کنید.

یک روش دیگه اینه که رکوردهای یک جدوا رو واکشی کنید و اونو داخل یک Datatable قرار بدین و سپس محتویات اون Datatable رو چک کنید.

sadeghlinux
شنبه 18 شهریور 1391, 17:36 عصر
ممنون ولی من با این روش مشکلمو حل کردم.
تو دستورات SQL اول چک کردم اگه خالی بود متغیر رو صفر کنه اگه نه مقدار رو به متغیر بده !
اینم کد شاید به کارتون بیاد.

Dim ad2 As SqlDataAdapter = New SqlDataAdapter("select case when sum(tedad) is null then 0 else sum(tedad) end from tblListfrosh where codekala=" & txtCkala.Text, cn)
Dim dt2 As New DataTable
ad2.Fill(dt2)
sumfroush = dt2.Rows(0)(0)