PDA

View Full Version : مشکل در بار گذاری اطلاعات دو جدول با فیلد های متفاوت



nilmil_nil
پنج شنبه 17 مرداد 1387, 00:43 صبح
سلام دوستان من می خوام یک لیست ویو رو با استفاده از دو جدول که یک SellerAcount هست که شامل فیلد های ( codeshakhs,factnum,date,bedehi,bestan,sharh) و دیگری Tasvieh شامل فیلد های ( codeshakhs,sanad,date,price,besorat ,amaliat) هست که می خوام تولیست ویو به شکل زیر نمایش داده شوند و براساس تاریخ سورت شوند
ردیف - شرح - بدهی - بستانکاری - مانده
حالا من خودم چهار فیلد اول رو پر می کنم و لی تو (مانده) به مشکل بر می خورم من کد اون رو می زارم ولی اگر کسی روش بهتری سراغ داره کمک کنه
با تشکر


public void Calculate(string StrCode)
{
Int64 Mondeh = 0, IntBes = 0, IntBed = 0, LastPrice = 0, Price = 0;
string StrDate = "", StrSharh = "";//ds seller acount
string StrDate2 = "", StrSharh2 = "";//ds tasvieh
string GetPay;
int RecCount1 = 0, RecCount2 = 0;
int Row = 0;
// create Table for result shakhs acount
DSResult.Tables.Clear();

DSResult.Tables.Add("ShakhsAcount");
DSResult.Tables[0].Columns.Add("Sharh");
DSResult.Tables[0].Columns.Add("Date");
DSResult.Tables[0].Columns.Add("Bed");
DSResult.Tables[0].Columns.Add("Bes");
//============================================
DataSet DSAcount = FrmHome.DbSQL.ViewRecsInDataSet(
"Select code,factnum,bsdate,bed,bes,sharh from SellerAcount" +
" where del='0' and code=" + StrCode +
" order by factnum", ref RecCount1);
//" and bsdate >= '" + Date1.GetFarsiDate + "'" +
// " and bsdate <= '" + Date2.GetFarsiDate + "'" +
DataSet DSTasvieh = FrmHome.DbSQL.ViewRecsInDataSet(
"Select codeshakhs,sanad,datet,price,typepay1,actions1" +
" from TasviehHesab where codeshakhs=" + StrCode +
" order by sanad", ref RecCount2);
//" and datet >= '" + Date1.GetFarsiDate + "'" +
// " and datet <= '" + Date2.GetFarsiDate + "'" +
for (int i = 0; i < RecCount1; i++)
{
IntBed = Convert.ToInt64(DSAcount.Tables[0].Rows[i][3]);
IntBes = Convert.ToInt64(DSAcount.Tables[0].Rows[i][4]);
StrDate = DSAcount.Tables[0].Rows[i][2].ToString().Trim();
StrSharh = DSAcount.Tables[0].Rows[i][5].ToString().Trim();
DSResult.Tables[0].Rows.Add();
DSResult.Tables[0].Rows[i][0] = StrSharh;
DSResult.Tables[0].Rows[i][1] = StrDate;
if (IntBed == 0)
{
DSResult.Tables[0].Rows[i][2] = 0;
DSResult.Tables[0].Rows[i][3] = IntBes;
}
if (IntBes == 0)
{
DSResult.Tables[0].Rows[i][2] = IntBed;
DSResult.Tables[0].Rows[i][3] = 0;
}
}

for (int j = 0; j < RecCount2; j++)
{
StrDate2 = DSTasvieh.Tables[0].Rows[j][2].ToString().Trim();
Price = Convert.ToInt64(DSTasvieh.Tables[0].Rows[j][3].ToString());
StrSharh2 = DSTasvieh.Tables[0].Rows[j][5].ToString()
+ " " + DSTasvieh.Tables[0].Rows[j][4].ToString();
Row = DSResult.Tables[0].Rows.Count;
DSResult.Tables[0].Rows.Add();
DSResult.Tables[0].Rows[Row][0] = StrSharh2;
DSResult.Tables[0].Rows[Row][1] = StrDate2;
GetPay = DSTasvieh.Tables[0].Rows[j][5].ToString();
if (GetPay.Substring(0, 2) == "پر")
{
DSResult.Tables[0].Rows[Row][2] = 0;
DSResult.Tables[0].Rows[Row][3] = Price;
}
else if (GetPay.Substring(0, 2) == "در")
{
DSResult.Tables[0].Rows[Row][2] = Price;
DSResult.Tables[0].Rows[Row][3] = 0;
}
}
//================================================== ==================
DataRow[] AllRows;
AllRows = DSResult.Tables[0].Select("", "date asc");
for (int kk = 0; kk < AllRows.Length; kk++)
{
Row = kk + 1;
LstView.Items.Add(Row.ToString());
LstView.Items[kk].SubItems.Add(AllRows[kk][0].ToString());
LstView.Items[kk].SubItems.Add(AllRows[kk][1].ToString());
LstView.Items[kk].SubItems.Add(Calc.FormatNumber(Convert.ToDouble(
AllRows[kk][2]), Format.Number));
LstView.Items[kk].SubItems.Add(Calc.FormatNumber(Convert.ToDouble(
AllRows[kk][3]), Format.Number));
// calculate mondeh
IntBed = Convert.ToInt64(AllRows[kk][2]);
IntBes = Convert.ToInt64(AllRows[kk][3]);
if (IntBed > 0)
{
Mondeh = Math.Abs(IntBed - LastPrice);
}
else if (IntBes > 0)
{
Mondeh = Math.Abs(IntBes + LastPrice);
}
LstView.Items[kk].SubItems.Add(Calc.FormatNumber(
Convert.ToDouble(Mondeh), Format.Number));
LastPrice = Mondeh;
}
AllRows = null;
DSAcount.Dispose();
DSResult.Dispose();
DSTasvieh.Dispose();
//================================================== ==================
}

ورودی تابع کد شخص می باشد

nilmil_nil
جمعه 18 مرداد 1387, 00:34 صبح
کسی نبود جواب ما رو بده

komail_sh
شنبه 19 مرداد 1387, 07:53 صبح
اول یه کوئری از هردو table بساز بعد از کوئری گرید رو پر کن

nilmil_nil
دوشنبه 21 مرداد 1387, 00:38 صبح
با سلام به komail_sh اگه میشه با کد توضیح بدید

nilmil_nil
سه شنبه 22 مرداد 1387, 01:30 صبح
بابا یکی جواب ما رو بده

nilmil_nil
چهارشنبه 23 مرداد 1387, 00:43 صبح
سوال سختی نیست بچه ها !