PDA

View Full Version : تغيير تاريخ ميلادي به شمسي و نمايش در گريد



m_vb1386
پنج شنبه 01 اسفند 1387, 12:23 عصر
يك بانك sql دارم كه توش تاريخها بصورت 02-01-2009ذخيره ميشه(بصورت ميلادي) ميخواهم موقع جستجو تاريخ رو تبديل كنم به شمسي و بجاي نمايش بصورت ميلادي هرچند تا تاريخ كه پيدا شد تاريخ شمسي اون تو ديتا گريد نمايش داده بشه

xxxxx_xxxxx
پنج شنبه 01 اسفند 1387, 12:40 عصر
من هم يك همچين كاري مي خواستم انجام بدم با دستورات SQL اما بي نتيجه موند. اينجا (http://barnamenevis.org/forum/showthread.php?t=143638)

فكر مي كنم تنها راهش اين باشه كه از ابتداي جدول تا انتها رو پيمايش كنيم و مقدار موجود تو فيلد تاريخو شمسي كنيم اگر با مقدار جستجو شده برابر بود اونوقت به خروجي بفرستيم.

اما اين كار براي جدول هاي حجيم زمان زيادي رو صرف مي كنه.

m_vb1386
پنج شنبه 01 اسفند 1387, 13:10 عصر
نه تو برنامه اي كه دارم اين كار انجام ميشه فقط براي محدود كردن بعضي از كاربر ها نميخواهم كل برنامه رو بهشون بدم و چون برنامه بصورت سورس نيست نميشه روي اون كار كرد پس ميخواهم خودم يك سرچ براش بنويسم كه فقط امكان جستجو توش باشه

m_vb1386
شنبه 03 اسفند 1387, 08:41 صبح
گسي چيزي به ذهنش نرسيد

vbhamed
شنبه 03 اسفند 1387, 09:29 صبح
سلام

فكر مي كنم بهتره يك فيلد تاريخ شمسي هم به جدول اضافه كنيد و توش مقدار شمسي تاريخ رو هم ثبت كنيد
و اون رو نمايش بديد

m_vb1386
شنبه 03 اسفند 1387, 09:47 صبح
مشكل اينجاست كه برنامه اصلي سورسش وجود نداره و اصلا اجازه تغيير تو بانك رو هم ندارم

vbhamed
سه شنبه 06 اسفند 1387, 15:48 عصر
سلام

اگر از vsFlexGrid استفاده كنيد مي تونيد يك ستون اضافه براش در نظر بگيريد و موقع نمايش خودتون به صورت دستي با استفاده از توابع تبديل تاريخ كه تو سايت زياد هست، مقدار شمسي رو محاسبه و در ستون اضافه هر سطر بنويسيد

ضمنا اگر تعداد ركوردها زياد هست مي تونيد اين كار رو فقط براي سطرهايي كه در گرايد در حال نمايش هستند انجام بديد

m_vb1386
چهارشنبه 07 اسفند 1387, 09:16 صبح
ممنونم تو همون ديتا گريد حلش كردم كدش رو هم ميذارم تا در صورت نياز بقيه دوستان هم استفاده كنن
البته با كمكي تغيير تو كانكشن ميشه برنامه اي نوشت كه كل تاريخهاي ميلادي بانك رو بصورت شمسي تو بانك در بياره كه مد نظر من نبودولي ممكنه براي بقيه كاربرد داشته باشه

Private Sub Command1_Click()
If cnn.State = 1 Then cnn.Close
cnn.CursorLocation = adUseClient
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DB1.mdb;Persist Security Info=False"
rs.Open "select * from table1", cnn, adOpenStatic, adLockBatchOptimistic, adCmdText
Set Me.DataGrid1.DataSource = rs
For i = 1 To rs.RecordCount
Me.DataGrid1.Columns("datee").Text = fdate.Miladi2Shamsi(rs.Fields("datee"))
rs.MoveNext
Next

End Sub