PDA

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



EffatBandehlou
چهارشنبه 26 فروردین 1388, 11:34 صبح
سلام دوستان
من تاريخ رو در ديتا بيس به صورت DateTime ذخيره كردم.براي نمايش اون در جدول مي خوام شمسي نشون بده .توي فرم از يه مبدل شمسي به ميلادي و به عكس استفاده مي كنم اما تو جدول نميخوام اينكارو بكنم.
آيا امكان داره كه بشه از قابليت هاي خود گرديد براي فراخواني كلاس مبدلم استفاده كنم؟

NewFoxStudent
چهارشنبه 26 فروردین 1388, 11:40 صبح
منظورتون رو واضحتر بگید

asd_moghadas
چهارشنبه 26 فروردین 1388, 12:26 عصر
سلام دوست غزیز از تابع زیر درdbاستفاده کن


CREATE FUNCTION GetFarsiDate(@DateLatin AS DateTime)
RETURNS CHAR(10) AS
BEGIN
DECLARE @DateFarsi CHAR(10)
DECLARE @Days int
DECLARE @Tmp int
DECLARE @Year_Farsi int
DECLARE @Month_Farsi int
DECLARE @Day_Farsi int
SET @Days = DATEDIFF(DAY, '19000320', @DateLatin)
SET @Year_Farsi = 1279
SET @Month_Farsi = 01
SET @Day_Farsi = 01
SET @Tmp = @Days / 365
IF (@Tmp * 365) + ((@Tmp + 3) / 4) > @Days
SET @Tmp = @Tmp - 1
SET @Year_Farsi = @Year_Farsi + @Tmp
SET @Days = @Days - (@Tmp * 365) - ((@Tmp + 3) / 4)

IF @Days <= 186
BEGIN
SET @Tmp = @Days / 31
SET @Month_Farsi = @Month_Farsi + @Tmp
SET @Days = @Days - (@Tmp * 31)
END
ELSE
BEGIN
SET @Days = @Days - 186
SET @Tmp = @Days / 30
SET @Month_Farsi = @Month_Farsi + @Tmp + 6
SET @Days = @Days - (@Tmp * 30)
END
SET @Day_Farsi = @Day_Farsi + @Days
RETURN REPLACE(STR(@Year_Farsi, 4, 0) +
STR(@Month_Farsi, 2, 0) +
STR(@Day_Farsi,2, 0), ' ', '0')
END

asd_moghadas
چهارشنبه 26 فروردین 1388, 12:33 عصر
ببخشید کدمربوط به دیتاکرید درخودبرنامه


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace MyTest
{
public partial class Form1 : Form
{
private SqlConnection SqlCon;
private SqlCommand SqlCmd;
private SqlDataAdapter SqlDA;
private DataTable DTable;
private long Id;
private long Cal;
public Form1()
{
InitializeComponent();
}
private void Binding()
{
//try
//{
//DateTime dt = Convert.ToDateTime(FarsiLibrary.Utils.PersianDateC onverter.ToPersianDate(DateEtebar22.SelectedDateTi me));
SqlCon = new SqlConnection();
SqlCon.ConnectionString = MyTest.Properties.Settings.Default.MyTestConnectio nString;
SqlCon.Open();
SqlCmd = new SqlCommand();
SqlCmd.Connection = SqlCon;
SqlCmd.CommandType = CommandType.Text;
SqlCmd.CommandText = "SELECT *FROM MyDate"; //WHERE (ID=@Id)";
//SqlCmd.Parameters.Add("@Id", SqlDbType.BigInt).Value = Id;

SqlDA = new SqlDataAdapter();
SqlDA.SelectCommand = SqlCmd;
SqlCmd.ExecuteNonQuery();
DTable = new DataTable();
SqlDA.Fill(DTable);
dataGridView1.DataSource = DTable;
// SqlCon.Close();
//dataGridView1.Rows.Clear();
//if (DTable.Rows.Count > 0)
//{
// FarsiLibrary.Utils.PersianDate p1, p2;
// DataRow[] Drows = new DataRow[DTable.Rows.Count];
// DTable.Rows.CopyTo(Drows, 0);
// for (int i = 0; i < Drows.Length - 1; i++)
// {
// for (int j = i + 1; j < Drows.Length; j++)
// {
// p1 = FarsiLibrary.Utils.PersianDateConverter.ToPersianD ate((DateTime)Drows[i].ItemArray[6]);
// p2 = FarsiLibrary.Utils.PersianDateConverter.ToPersianD ate((DateTime)Drows[j].ItemArray[6]);
// if (p1 > p2)
// {
// DataRow dr;
// dr = Drows[i];
// Drows[i] = Drows[j];
// Drows[j] = dr;
// }
// }
// }
// for (int j = 0; j < Drows.Length; j++)
// {
// DateTime Persian = FarsiLibrary.Utils.PersianDateConverter.ToPersianD ate((DateTime)Drows[j].ItemArray[6]);
// if (Persian >= DateEtebar22.SelectedDateTime)
// {
// if ((byte)Drows[j].ItemArray[4] == 1)
// {
// Cal += (long)Drows[j].ItemArray[8];
// dataGridView1.Rows.Add(++counter, Persian, Drows[j].ItemArray[1], Drows[j].ItemArray[1]
// , 0, Drows[j].ItemArray[8], Cal);
// }
/*if (((byte)Drows[j].ItemArray[4] == 3) || ((byte)Drows[j].ItemArray[4] == 4))
{
Cal -= (long)Drows[j].ItemArray[8];
dataGridView1.Rows.Add(++counter, Persian, Drows[j].ItemArray[2], Drows[j].ItemArray[5]
, Drows[j].ItemArray[8], 0, Cal);
}*/
//}
SqlCon.Close();

//catch (Exception ex)
//{
// MessageBox.Show(ex.Message);
//}
//finally
//{
// SqlCon.Close();
//}

}
private void Form1_Load(object sender, EventArgs e)
{
Binding();
}
}
}

EffatBandehlou
چهارشنبه 26 فروردین 1388, 14:43 عصر
ممنون دوست عزيز.
اما فراموش كردم بگم كه من از Devexpress استفاده مي كنم.اونجا ما به شيوه خاصي با ديتابيس وصل ميشيم
و به شيوه خاصي فراخواني مي كنيم.من نمي تونم تابع رو به اين شيوه كه شما نوشتيد تو ديتابيس بزارم.
ممنون