ورود

View Full Version : نحوه استفاده از چند دستور select count() به طور همزمان



setarehman
سه شنبه 05 آبان 1388, 13:09 عصر
من ميخوام سه تا دستور select count رو به طور همزمان بزنم و نتيجه هر كدوم رو در يه label و يا تكس باكس جداگانه نشون بده چه طوري ؟
مثلا

setarehman
چهارشنبه 06 آبان 1388, 07:23 صبح
من ميخوام چند تا دستور select count پشت سر هم بزنم .ايا بايد براي هر كدوم مدام open كنم ؟كه اين اجازه رو هم نميده

xxxxx_xxxxx
چهارشنبه 06 آبان 1388, 10:48 صبح
خب مگه نمیشه تو در تو استفاده کنید؟
همه فیلدها از یک تیبل هست یا چندتا؟
الان دستورتون رو به چه شکل نوشتید؟

setarehman
چهارشنبه 06 آبان 1388, 11:10 صبح
Private Sub Command1_Click()
Dim db As Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=MSDASQL;dsn=sql;uid=sa;pwd=tozi;database= sabt;"
Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "select sh_sh,c,d from tbl where date1 between '" & Text2.Text & "' and '" & Text3.Text & "' and sh_sh like '" & Text1.Text & "' + '%' order by sh_sh", db, adOpenStatic, adLockOptimistic
If adoPrimaryRS.state = 1 Then adoPrimaryRS.Close
adoPrimaryRS.Open "select count(*) as tsum from tbl where date1 between '" & Text2.Text & "' and '" & Text3.Text & "' and sh_sh like '" & Text1.Text & "' + '%'", db, adOpenStatic, adLockOptimistic
data.Sections("section4").Controls("l").Caption = adoPrimaryRS!tsum
Set data.DataSource = adoPrimaryRS
data.Show vbModal
End Sub

setarehman
چهارشنبه 06 آبان 1388, 11:16 صبح
همه فيلدا از يك جدول هست.
ميخوام نتيجه هر دو select رو در يك گزارش نشون بده .يكي select چند تا فيلد رو به صورا ليست نمايش بده و اون يكي تعداد ركوردها رو بشماره و در قسمت header گزارش نشون بده

setarehman
یک شنبه 10 آبان 1388, 07:21 صبح
????
چه جوري دستور اي select جداگانه رو پشت سر هم بنويسم؟

xxxxx_xxxxx
یک شنبه 10 آبان 1388, 07:51 صبح
کاری که شما می خواید انجام بدید رو میشه از طریق دیگه ای هم انجام داد.

اول اینکه شما وقتی adoPrimaryRS رو Close می کنید نتایج Select قبلی رو از دست میدید. از طرفی تا Recordset بسته نشه نمیشه دوباره اونو Open کرد.

باید دید منظور شما از select count(*) چیست؟ آیا میخواید تعداد رکوردها رو برگردونید؟
اگر آره. خب شما می تونید از Recordcount استفاده کنید:


adoPrimaryRS.RecordCount
مقدار RecordCount رو بعد از اولین Open به دیتا ریپورتتون پاس بدید بدون این که رکوردست رو Close کنید.



چه جوري دستور اي select جداگانه رو پشت سر هم بنويسم؟

برای این کار باید دو Recordset داشته باشید

Dr.Bronx
یک شنبه 10 آبان 1388, 16:39 عصر
از یک رکوردست هم می تونید استفاده کنید دوست عزیز
باید از Union استفاده کنید
به این صورت :


SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

موفق باشید