PDA

View Full Version : مشکل این کد کجاست



soniarose
سه شنبه 26 آبان 1388, 17:08 عصر
سلام مشکل این کد کجاست من در جدولم سه ستون دارم که میخوام با استفاده از تابع sum مقادیر ستون اول رو جمع کنم و مقادیر ستون دوم رو هم جمع کنم سپس مقدار دو ستون رو از هم کم کنم و مقدارش رو در ستون سوم قرار بدم لطفا راهنمایی کنید


Dim strcon1 As String
' Dim com1 As SqlCommand
Dim da As SqlClient.SqlDataAdapter
Dim strsql1, strsql3 As String
Dim con1 As SqlClient.SqlConnection
Dim ds1 As New DataSet
Dim dr As SqlClient.SqlDataReader

Dim c As Integer
Dim sum1 As Integer
Dim sum2 As Integer
ds1.Clear()
strsql1 = "select a = sum(nom1),b = sum(nom2) from table2 "



strcon1 = "Data Source=(local);Initial Catalog=nomre;Integrated Security=True"
con1 = New SqlClient.SqlConnection(strcon1)

con1.Open()
da = New SqlClient.SqlDataAdapter(strsql1, con1)

SqlCommand1 = New SqlClient.SqlCommand(strsql1, con1)

da.Fill(ds1, "table2")
dr = SqlCommand1.ExecuteReader()
dr.Read()
sum1 = dr("a")
sum2 = dr("b")
c = sum1 - sum2
strsql3 = "INSERT INTO table2 (nom3) VALUES ('" & c & "') where id ='" & TextBox1.Text & "'"

dr.Close()
con1.Close()
ds1.Dispose()
da.Dispose()

ACorvinus
سه شنبه 26 آبان 1388, 23:31 عصر
سلام .

اینم راه حل معمول:



Dim ConnectionString As String = "Data Source=.;Initial Catalog=Nomre;User=Fred;Password=Aslan"
Dim Connection As SqlClient.SqlConnection
Dim SqlCommand As SqlClient.SqlCommand
Dim SqlString As String
Try
Connection = New SqlClient.SqlConnection(ConnectionString)
Connection.Open()
SqlString = "UPDATE table2 SET nom3=nom1 - nom2"
SqlCommand = New SqlClient.SqlCommand(SqlString, Connection)
SqlCommand.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
Connection.Close()
End Try

saadi2
چهارشنبه 27 آبان 1388, 00:28 صبح
strsql1 = "select sum(nom1) as a, sum(nom2) as b from table2 "

soniarose
چهارشنبه 27 آبان 1388, 19:38 عصر
سلام با تشکر از کدی که قرار دادید ولی این کد فقط برای یک سطر کار میکنه من میخوام به صورت ستونی هم جمع کنه مثلا باگذاستن یک شر ط ( مثلاwhere id = 12)هر کجا id=12 ستون اول رو با هم جمع کنه ستون دوم رو هم همین طور سپس از هم کم کنه و د رستون سوم قرار بده

ACorvinus
چهارشنبه 27 آبان 1388, 23:59 عصر
ستون اول رو با هم جمع کنه ستون دوم رو هم همین طور سپس از هم کم کنه و د رستون سوم قرار بده


سلام .

ببخشین من اصلا سوال شما رو متوجه نمیشم .

شما می فرمائین 3 تا ستون داریم که میخوایم با گذاشتن یه شرطی مثلا همون ID=12 ( که فرض کنیم جواب حاصل میشه 10 سطر در هر ستون ) .

تا اینجا مشکلی نداریم .

خوب حالا میخواین مجموع عناصر ستون اول رو بدست بیاره و از مجموع عناصر ستون دوم کم کنه و ....


مشکل ما اینجاست ؟!!! جواب رو نمیشه گذاشت در ستون سوم . آخه اینجوری از کجا بدونیم در کدوم سطر لز ستون سوم باید جواب رو قرار بدیم .

در ضمن دوست عزیز اگه میخواین جواب رو در هر سطر از ستون سوم قرار بدین باید از دستور UPDATE استفاده کنین نه INSERT . اما باید توجه داشته باشین که اگه میخواین جواب رو در هر سطر از ستون سوم قرار بدین، این کار کاملا اشتباه هستش .

برنامه ای که من قرار داده بودم ستون دوم رو از ستون اول کم میکنه و میذاره در ستون سوم، و شاید این چیزی نیست که شما میخواین .

به هرحال سوالتون رو دقیق تر بیان کنید .

soniarose
پنج شنبه 28 آبان 1388, 19:13 عصر
ببینید دوست عزیز من برنامم طوری هست که هروقت کاربر مقادیر ستون اول و دو م رو وارد میکنه این مراحلی که در بالا گفتم انجام میشه و مقدارش در سطر سوم قرار میگیره پس همیشه یک سلول خالی برای سطر سوم هست که مقدار محاسبه شده دقیقا در همون سلولی قرار میگیره که تا اون سطر اطلاعات ستون اول و دوم پر شده در واقع برنامه شما فقط برای اولین سطر جواب میده

ACorvinus
شنبه 30 آبان 1388, 11:20 صبح
ببینید دوست عزیز من برنامم طوری هست که هروقت کاربر مقادیر ستون اول و دو م رو وارد میکنه این مراحلی که در بالا گفتم انجام میشه و مقدارش در سطر سوم قرار میگیره پس همیشه یک سلول خالی برای سطر سوم هست که مقدار محاسبه شده دقیقا در همون سلولی قرار میگیره که تا اون سطر اطلاعات ستون اول و دوم پر شده در واقع برنامه شما فقط برای اولین سطر جواب میده


اگه اینجوری بخواین فکر کنین، غلطه !!!

چون در این حالت اکثر سلولهای یک ستونتون خالی میمونه .

اگه موافقین همون برنامه ای که من گذاشتم رو بنوسین و سرآخر (با گذاشتن یه شرط یا بدون شرط) از ستون سوم Sum بگیرین . بازم به همون نتیجه میرسین (با این تفاوت که این راه درسته به نظر من) .

بازم میتونین منتظر نظر دوستان هم باشین .

soniarose
یک شنبه 01 آذر 1388, 16:18 عصر
یعنی تابع sum رو در همون کد update استفاده کنم؟

soniarose
دوشنبه 02 آذر 1388, 17:40 عصر
از اساتید کسی نیست که کمک کنه:ناراحت:

soniarose
دوشنبه 09 آذر 1388, 15:42 عصر
ای بابا تو رو خدا کمک کنید خیلی لازمش دارم:گریه: