View Full Version : سوال: پیدا کردن اطلاعات بین دو تاریخ
س جوادی
چهارشنبه 22 دی 1389, 22:17 عصر
میخوام که اطلاعات بین دو تاریخ برای مثال از 20/10/89 لغایت 11/11/89 رو با دستورات vb بدست بیارم و در فرم جدید نمایش بدم . از adodc برای برقراری ارطباط با بانک اطلاعاتی استفاده کردم- بانک اکسس 2000:متفکر:
mbf5923
چهارشنبه 22 دی 1389, 22:38 عصر
از اين دستورات ميتوني استفاده كني
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "select * from namejadval where khaneyjadval>='" & tarikheebteda & "' and khaneyejadval<='" & tarikheenteha & "' "
Adodc1.Refresh
Adodc1.CommandType = adCmdTable
به جاي namejadval اسن جدول مورد نظرتون رو بنويسيد
به جاي khaneyejadval نام فيلدي از جدول كه تاريخ در اون ذخيره شده
به جاي tarikhebteda و tarikhenteha هم به ترتيب تاريخ شروع و پايان جستجو رو وارد كنيد
mostafag
چهارشنبه 22 دی 1389, 22:44 عصر
سلام
برای Sort کردن مقادیر بانک بر اساس دو فیلد تاریخ چه کدی میشه نوشت؟؟!!
مثلا من بانکی دارم که دارای دو تا فیلد تاریخ هست حالا میخوام که اطلاعات داخل دیتاگرید بر اساس این دو تا مرتب بشه!!
من از adodc برای ارتباط استفاده میکنم
با تشکر
mbf5923
چهارشنبه 22 دی 1389, 22:55 عصر
در صورتي كه تاريخ هاي شما خورشيدي باشه گاهي اوقات اين كار درست انجام نميشه ولي در حالت كلي يك دستور ساده براي اين كار اين هست كه در حين جستجوي اطلاعات براي نمايش اونها رو مرتب كنيد.
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "select * from test where sn>='" & e & "' Order By sn asc"
Adodc1.Refresh
Adodc1.CommandType = adCmdTable
test نام جدول
sn فيلد مورد نظر
e متغيري كه فيلتر سازي بر اساس اون انجام ميشه
اين يك روش كه از كوچك به بزرگ مرتب سازي رو انجام ميده و روش دوم هم:
Adodc1.Recordset.Sort = "sn"
sn همون فيلدي هست كه بايد اطلاعات بر حسب اون مرتب بشه
mostafag
چهارشنبه 22 دی 1389, 23:03 عصر
سلام دوست عزیز
ممنون از پاسختون
همونطور که در بالا هم گفتم من دو تا فیلد دارم ( مثلا یکی فیلد تاریخ خرید و دیگری فیلد تاریخ فروش) حالا میخوام مرتب سازی بر اساس این دو تا فیلد باشه!! (هم صعودی و هم نزولی) آیا همچین چیزی میشه؟؟!!!
نمیدونم متاسفانه یا خوشبختانه تاریخ های بانک من شمسی هستند و نوع اونها در بانک از نوع text هست حالا باید چیکار کرد؟!!!
لطفا راهنمایی کنید!
mbf5923
چهارشنبه 22 دی 1389, 23:20 عصر
يعني ميخواين با هردو فيلد مرتب سازي رو انجام بدين يا گاهي با يك فيلد و گاهي با فيلد ديگه؟
اينكه از نوع تكست هستن خوبه شمسي هم راه هايي داره كه بشه مشكلش رو حل كرد.
براي نزولي كافيه به جاي asc از desc استفاده كنيد
mostafag
چهارشنبه 22 دی 1389, 23:42 عصر
بله دوست عزیز میخوام با هر دو فیلد مرتب سازی انجام بشه!!
مثلا در تاریخ 1389/01/12 جنسی خرید شده و در تاریخ 1389/01/15 فروش شده!! باز در تاریخ 1389/01/13 کالایی خرید شده و دوباره در تاریخ 1389/01/11 کالایی خرید شده و الی آخر حالا من میخوام این تاریخ ها پشت سر هم مرتب بشه تا راحت تر دیده بشه و مشکلم اینه که من دو فیلد تاریخ دارم و نمیدونم چطور باید تاریخ ها رو بر اساس دو فیلد مرتب کنم؟؟!! :متفکر:
نمیدونم منظورم رو خوب گفتم یا نه ولی در واقع من میخوام مرتب سازی بر اساس دو فیلد تاریخ خرید و تاریخ فروش صورت بگیره!!
ممنون
mbf5923
پنج شنبه 23 دی 1389, 00:29 صبح
آخه اينطوري كه نميشه
در يك لحظه يا ميشه اطلاعات بر اساس خريد مرتب شده باشن يا بر اساس تاريخ فروش نميشه با هردو مرتب كرد
اصلا جور درنمياد.
شما ميتونيد گزينه انتخابي براي كاربرتون بذارين كه انتخاب كنه بر اساس خريد مرتب بشن يا بر اساس فروش
kimprog
پنج شنبه 23 دی 1389, 09:12 صبح
با اجازه mbf5923 عزيز :
Adodc1.RecordSource = "select * from namejadval where khaneyjadval between '" & tarikheebteda & "' and '" & tarikheenteha & "' "
شايد كمي بهينه تر باشد ...
mostafag
پنج شنبه 23 دی 1389, 11:51 صبح
سلام
ممنون از پاسخ همه دوستان
دوست عزیز این کدی که شما قرار دادی اطلاعات بین دو تا تاریخ رو بر میگردونه!!! ولی من دو تا فیلد تاریخ دارم که میخوام تاریخ هام بر اساس این دو تا فیلد مرتب بشن (پشت سرهم بیان)!!!
یعنی همچین چیزی امکان نداره!!؟؟؟؟!!!
دوستان خواهش میکنم اگه چیزی میدونید کمک کنید!!
ali.rezaei7
پنج شنبه 23 دی 1389, 12:35 عصر
درود. mostafag من اينجوري متوجه شدم، كه مي خواي در مرتب سازي اولويت قرار بدي، يعني اگه دو مقادير دوتا فيلد با هم برابر باشه، در اون صورت اون دوتا ركورد براساس فيلد دوم مرتب بشه. درست مي گم؟ خب در اينصورت فقط كافيه كه در كنار فيلد اولي، فيلد دومي رو هم بزاري، به همين راحتي.
اگه مي خواي اطلاعت سورت شده از DB بگيري، دستور SQL رو اينجوري بنويس.
SELECT * FROM TableName ORDER BY Field1, Field2اين جوري اولويت، با Field1 هست، بعدش با Field2. براي اينكه نزولي بشه كنار فيلد DESC رو بتايپ.
اگه مي خواي داخل برنامه سورت كني:
ADODB.Recordset.Sort("Field1, Field2")بازم اگه مي خواي نزولي مرتب بشه DESC كنارشون بزار.
mostafag
پنج شنبه 23 دی 1389, 14:42 عصر
سلام
خیلی ممنون دوست عزیز
کدی که شما قرار دادید میاد تمام اطلاعات فیلد اول رو به ترتیب مرتب می کنه و بعد از اون میاد تمام اطلاعات فیلد دوم رو هم مرتب میکنه!!
مثلا میاد تمام تاریخ های خرید رو پشت سر هم قرار میده و بعد از اون تمام تاریخ های فروش رو!!
این خوبه اما من میخوام بیاد به دو تا فیلد نگاه کنه و همه تاریخ ها رو پشت سرهم نشون بده
دو تا عکس ضمیمه کردم که عکس اول داده هایی که ثبت شده رو نشون میده و من میخوام داده های عکس اول مثل داده های عکس دوم مرتب بشن!!
(دیگه فکر کنم با این عکس منظورم رو خوب فهمونده باشم)
راستی من از adodc و دیتا گرید برای نمایش اطلاعات استفاده میکنم و بانک هم اکسس هست!
با تشکر از همه دوستانی که پاسخ میدند :لبخندساده:
س جوادی
پنج شنبه 23 دی 1389, 17:04 عصر
سلام دوستان
کد جستجو بین دو تاریخ متغیر رو میخاستم (تاریخ هر بار عوض میشه )
مثلا از تاریخ 1/1 /89 تا 20 /1 89 برای جستجوی بعدی از تاریخ 5 /5 90 تا 10 / 5 / 90
saeedzx
پنج شنبه 23 دی 1389, 23:17 عصر
با سلام این هم یک سورس کد برای جستجو بین 2 تاریخ
Dim d1, d2 As String
Dim StrSql As String
d1 = MaskEdBox1.Text
d2 = MaskEdBox2.Text
StrSql = "select * from shop where date between '" & d1 & "' and '" & d2 & "'"
ado.RecordSource = StrSql
ado.Refresh
kimprog
جمعه 24 دی 1389, 18:03 عصر
دوست گرامي mostafag (http://barnamenevis.org/member.php?151512-mostafag)
شما كه از يك جدول براي خريد و فروش استفاده كردهايد بهتر بود از يك فيلد تاريخ ( و حتي يك فيلد قيمت ) استفاده مي كرديد و يك فيلد ديگر نيز براي نوع ركورد (خريد يا فروش) استفاده مي كرديد دراين صورت كوئري كه ميخواستيد خيلي راحت بر اساس آنچه دوستان ديگر گفتند انجام ميشد ...:لبخندساده:
sajad_boj70
جمعه 24 دی 1389, 19:30 عصر
سلام از این کد میتونی استفاده کنی
Set DataGrid1.DataSource = Adodc1
With Adodc1
.CursorType = adOpenStatic
.LockType = adLockReadOnly
.ConnectionString = "DSN=MS Access Database;DBQ=" & App.Path & "\basij.mdb;UID=admin"
.CommandType = adCmdText
Adodc1.RecordSource = "SELECT * FROM paigah where tarikh >='" & Trim(Text5.Text) & "' AND tarikh<='" & Trim(Text6.Text) & " '"
Adodc1.Refresh
End With
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.