PDA

View Full Version : سوال: مشکل در یک حلقه For و یک IF



NasimBamdad
یک شنبه 25 تیر 1391, 18:15 عصر
سلام و خسته نباشید .

یک کدی دارم به صورت زیر .


private void buttonX2_Click(object sender, EventArgs e)
{
SqlConnection cnn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cnn.Open();
cmd.CommandText = "SELECT Count(*) AS tbl1 FROM dbo.patients WHERE dbo.patients.bime_status = 2";
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
string countz = Convert.ToString(ds.Tables[0].Rows[0]["tbl1"]);
int conz = Convert.ToInt32(countz);

////////////
SqlConnection cnn2 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd2 = new SqlCommand();
cmd2.Connection = cnn2;
cnn2.Open();
cmd2.CommandText = @"SELECT dbo.patients.id, dbo.patients.fname, dbo.patients.lname, dbo.patients.serialz_daftarche, dbo.patients.tamin_type, dbo.patients.meli_code, dbo.patients.sex,
dbo.patients.nesbat_code, dbo.patients.date_t, dbo.patients.code_tashkhis_aval, dbo.patients.code_tashkhis_dovom, dbo.patients.code_jarahi,
dbo.patients.tarikh_etebar_daf, dbo.surgeons.serialz AS surgeons_serialz, dbo.nazer_names.serialz AS nazer_serial, dbo.surgeons.specialty_code,
dbo.patients.birthday, dbo.patients.reg_tarikh_shamsi, dbo.patients.marriage, dbo.patients.saat_p, dbo.patients.saat_t
FROM dbo.patients INNER JOIN
dbo.surgeons ON dbo.patients.surgeon_name = dbo.surgeons.id INNER JOIN
dbo.nazer_names ON dbo.patients.nazer_code = dbo.nazer_names.id WHERE (dbo.patients.bime_status = 2)";
SqlDataAdapter da2 = new SqlDataAdapter(cmd2);
DataSet ds2 = new DataSet();
da2.Fill(ds2);
//COST_Bime//
SqlConnection cnn31 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd31 = new SqlCommand();
cmd31.Connection = cnn31;
cnn31.Open();
cmd31.CommandText = "SELECT (dbo.k_usage.k_jarahi * dbo.k_jarahi_cost.cost_bime) AS Cost_Jarah_tamin, (dbo.k_usage.k_bihooshi * dbo.k_bihooshi_cost.cost_bime) AS Cost_Bihooshi_tamin, (dbo.k_usage.k_otaghAmal * dbo.k_otaghAmal_costz.cost_bime) AS Cost_OtaghAmal_tamin FROM dbo.patients INNER JOIN dbo.k_usage ON dbo.patients.id = dbo.k_usage.patientid CROSS JOIN dbo.k_otaghAmal_costz CROSS JOIN dbo.k_jarahi_cost CROSS JOIN dbo.k_bihooshi_cost WHERE (dbo.patients.bime_status = 2)";
SqlDataAdapter da31 = new SqlDataAdapter(cmd31);
DataSet ds31 = new DataSet();
da31.Fill(ds31);
////////////
SqlConnection cnn41 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd41 = new SqlCommand();
cmd41.Connection = cnn41;
cnn41.Open();
cmd41.CommandText = "SELECT dbo.invoice_daroo_total.cost_bime FROM dbo.patients INNER JOIN dbo.invoice_daroo_total ON dbo.patients.id = dbo.invoice_daroo_total.patientid WHERE (dbo.patients.bime_status = 2)";
SqlDataAdapter da41 = new SqlDataAdapter(cmd41);
DataSet ds41 = new DataSet();
da41.Fill(ds41);
////////////
SqlConnection cnn51 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd51 = new SqlCommand();
cmd51.Connection = cnn51;
cnn51.Open();
cmd51.CommandText = "SELECT dbo.invoice_tajhiz_total.cost_bime FROM dbo.patients INNER JOIN dbo.invoice_tajhiz_total ON dbo.patients.id = dbo.invoice_tajhiz_total.patientid WHERE(dbo.patients.bime_status = 2)";
SqlDataAdapter da51 = new SqlDataAdapter(cmd51);
DataSet ds51 = new DataSet();
da51.Fill(ds51);
////////////
SqlConnection cnn61 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd61 = new SqlCommand();
cmd61.Connection = cnn61;
cnn61.Open();
cmd61.CommandText = "SELECT dbo.invoice_lenz.cost_bime FROM dbo.patients INNER JOIN dbo.invoice_lenz ON dbo.patients.id = dbo.invoice_lenz.patientid WHERE (dbo.patients.bime_status = 2)";
SqlDataAdapter da61 = new SqlDataAdapter(cmd61);
DataSet ds61 = new DataSet();
da61.Fill(ds61);
////////////
SqlConnection cnn71 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd71 = new SqlCommand();
cmd71.Connection = cnn71;
cnn71.Open();
cmd71.CommandText = "SELECT dbo.invoice_other.cost_bime FROM dbo.patients INNER JOIN dbo.invoice_other ON dbo.patients.id = dbo.invoice_other.patientid INNER JOIN dbo.other_type ON dbo.invoice_other.other_id = dbo.other_type.id WHERE (dbo.invoice_other.other_id = 3) AND (dbo.patients.bime_status = 2)";
SqlDataAdapter da71 = new SqlDataAdapter(cmd71);
DataSet ds71 = new DataSet();
da71.Fill(ds71);


string fnamez, lnamez, idz, meli_code, serial_daf, tamin_type0, tamin_type = "0", tarikh_etebar_daf, sex, nesbat_code, marriage, reg_tarikh_shamsi, saat_p, saat_t, date_t, nazer_serial, code_tashkhis_aval, code_tashkhis_dovom, nezam_no, pezeshk_special_code, birthday, code_jarahi, Cost_Jarah_bime, Cost_Bihooshi_bime, Cost_OtaghAmal_bime, Daroo_bime, Tajhiz_bime, Lenz_bime, navar_ghalb, daroo90, tajhiz90, lenz90, navar_ghalb90, xmlz = "1.0", encode = "UTF-8", jarah_bihooshi_amal, jarah_bihooshi_amal90, invoice_all = "", invoice_all_90 = "";
decimal cost_total, sahm_bimar, sahm_bime, jarah_bihooshi_amal0, jarah_all, bihooshi_all, otagh_all, daroo_all, tajhiz_all, lenz_all, navar_all, s_invoice_all, s_invoice_all_90;


listBox1.Items.Add("<?XML version=\"" + xmlz + "\" encoding=\"" + encode + "\" ?>");
listBox1.Items.Add("<BILL_SPEC AA=\"" + 160 + "\" AB=\"" + txtProNet1.Text + "\" AC=\"" + conz + "\" AD =\"" + invoice_all + "\" AE=\"" + invoice_all_90 + "\" AF=\"" + string.Empty + "\">");

for (int i = 0; i < conz; i++)
{
string empty = string.Empty;

fnamez = Convert.ToString(ds2.Tables[0].Rows[i]["fname"]);
lnamez = Convert.ToString(ds2.Tables[0].Rows[i]["lname"]);
idz = Convert.ToString(ds2.Tables[0].Rows[i]["id"]);
meli_code = Convert.ToString(ds2.Tables[0].Rows[i]["meli_code"]);
serial_daf = Convert.ToString(ds2.Tables[0].Rows[i]["serialz_daftarche"]);
tamin_type0 = Convert.ToString(ds2.Tables[0].Rows[i]["tamin_type"]);
if (tamin_type0 == "اجباری")
{
tamin_type = "1";
}
else if (tamin_type0 == "اختیاری")
{
tamin_type = "2";
}
else if (tamin_type0 == "مشاغل آزاد")
{
tamin_type = "3";
}
tarikh_etebar_daf = Convert.ToString(ds2.Tables[0].Rows[i]["tarikh_etebar_daf"]);
sex = Convert.ToString(ds2.Tables[0].Rows[i]["sex"]);
nesbat_code = Convert.ToString(ds2.Tables[0].Rows[i]["nesbat_code"]);
marriage = Convert.ToString(ds2.Tables[0].Rows[i]["marriage"]);
reg_tarikh_shamsi = Convert.ToString(ds2.Tables[0].Rows[i]["reg_tarikh_shamsi"]);
saat_p = Convert.ToString(ds2.Tables[0].Rows[i]["saat_p"]);
saat_t = Convert.ToString(ds2.Tables[0].Rows[i]["saat_t"]);
date_t = Convert.ToString(ds2.Tables[0].Rows[i]["date_t"]);
nazer_serial = Convert.ToString(ds2.Tables[0].Rows[i]["nazer_serial"]);
code_tashkhis_aval = Convert.ToString(ds2.Tables[0].Rows[i]["code_tashkhis_aval"]);
code_tashkhis_dovom = Convert.ToString(ds2.Tables[0].Rows[i]["code_tashkhis_dovom"]);
nezam_no = Convert.ToString(ds2.Tables[0].Rows[i]["surgeons_serialz"]);
pezeshk_special_code = Convert.ToString(ds2.Tables[0].Rows[i]["specialty_code"]);
birthday = Convert.ToString(ds2.Tables[0].Rows[i]["birthday"]);
code_jarahi = Convert.ToString(ds2.Tables[0].Rows[i]["code_jarahi"]);
////
Cost_Jarah_bime = Convert.ToString(ds31.Tables[0].Rows[i]["Cost_Jarah_tamin"]);
Cost_Bihooshi_bime = Convert.ToString(ds31.Tables[0].Rows[i]["Cost_Bihooshi_tamin"]);
Cost_OtaghAmal_bime = Convert.ToString(ds31.Tables[0].Rows[i]["Cost_OtaghAmal_tamin"]);
Daroo_bime = Convert.ToString(ds41.Tables[0].Rows[i]["cost_bime"]);
Tajhiz_bime = Convert.ToString(ds51.Tables[0].Rows[i]["cost_bime"]);
Lenz_bime = Convert.ToString(ds61.Tables[0].Rows[i]["cost_bime"]);
if (ds71.Tables[0].Rows.Count > 0)
{
navar_ghalb = Convert.ToString(ds71.Tables[0].Rows[i]["cost_bime"]);
}
else
{
navar_ghalb = "0";
}
//navar_ghalb = Convert.ToString(ds71.Tables[0].Rows[i]["cost_bime"]);
daroo90 = Convert.ToString((Convert.ToDecimal(Daroo_bime) * 90) / 100);
tajhiz90 = Convert.ToString((Convert.ToDecimal(Tajhiz_bime) * 90) / 100);
lenz90 = Convert.ToString((Convert.ToDecimal(Lenz_bime) * 90) / 100);

navar_ghalb90 = Convert.ToString((Convert.ToDecimal(navar_ghalb) * 90) / 100);



cost_total = Convert.ToDecimal(Cost_Jarah_bime) + Convert.ToDecimal(Cost_Bihooshi_bime) + Convert.ToDecimal(Cost_OtaghAmal_bime) + Convert.ToDecimal(Daroo_bime) + Convert.ToDecimal(Tajhiz_bime) + Convert.ToDecimal(Lenz_bime) + Convert.ToDecimal(navar_ghalb);
sahm_bimar = (cost_total * 10) / 100;
sahm_bime = (cost_total * 90) / 100;


jarah_bihooshi_amal0 = Convert.ToDecimal(Cost_Jarah_bime) + Convert.ToDecimal(Cost_Bihooshi_bime) + Convert.ToDecimal(Cost_OtaghAmal_bime);
jarah_bihooshi_amal = Convert.ToString(jarah_bihooshi_amal0);
jarah_bihooshi_amal90 = Convert.ToString((Convert.ToDecimal(jarah_bihooshi _amal) * 90) / 100);

////

if (sex == "مرد")
{
sex = "1";
}
else if (sex == "زن")
{
sex = "2";
}


string daf_date_Total = tarikh_etebar_daf.Replace("/", "");
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
string date_paz = reg_tarikh_shamsi.Replace("/", "");
string saat_paz = saat_p.Replace(":", "");
string date_p_total = date_paz + saat_paz;
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
string tarkhis_saat = saat_t.Replace(":", "");
string tarkhis_date = date_t.Replace("/", "");
string date_t_total = tarkhis_date + tarkhis_saat;
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
string birthday_total = birthday.Replace("/", "");
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\

listBox1.Items.Add("<FORM_ADS BA=\"" + i + "\" BB=\"" + 103 + "\" BC=\"" + serial_daf + "\" BD=\"" + empty + "\" BE=\"" + tamin_type + "\" BF=\"" + daf_date_Total + "\" BG=\"" + meli_code + "\" BH=\"" + idz + "\" BI=\"" + lnamez + "\" BJ=\"" + fnamez + "\" BK=\"" + empty + "\" BL=\"" + sex + "\" BM=\"" + nesbat_code + "\" BN=\"" + marriage + "\" BO=\"" + birthday_total + "\" BP=\"" + date_p_total + "\" BQ=\"" + date_t_total + "\" BR=\"" + nezam_no + "\" BS=\"" + empty + "\" BT=\"" + 1 + "\" BU=\"" + empty + "\" BV=\"" + 1 + "\" BW=\"" + 1 + "\" BX=\"" + code_tashkhis_aval + "\" BYY=\"" + nazer_serial + "\" BZ=\"" + cost_total + "\" CB=\"" + code_tashkhis_dovom + "\" EB=\"" + code_jarahi + "\" BAA=\"" + sahm_bime + "\" BAB=\"" + 0 + "\" BAC=\"" + 0 + "\" BAD=\"" + 0 + "\" BAD=\"" + 0 + "\" BAE=\"" + 0 + "\" BAF=\"" + sahm_bimar + "\">");
//listBox1.Items.Add(" <GLOBAL GA=\"" + empty + "\" GB=\"" + empty + "\" GC=\"" + empty + "\" GD=\"" + empty + "\" GE=\"" + empty + "\" />");
//listBox1.Items.Add(" <HOTELING HA=\"" + empty + "\" HB=\"" + empty + "\" HC=\"" + empty + "\" HD=\"" + empty + "\" HE=\"" + empty + "\" HF=\"" + empty + "\" HG=\"" + empty + "\" />");
//listBox1.Items.Add("");
//listBox1.Items.Add(" <PAR_HEAD PA=\"" + empty + "\" PB=\"" + empty + "\" PC=\"" + empty + "\" PD=\"" + empty + "\" PE=\"" + empty + "\" PF=\"" + empty + "\" />");
//listBox1.Items.Add("");
listBox1.Items.Add("<PHA_HEAD JA=\"" + 1 + "\" JB=\"" + 1 + "\" JC=\"" + 2 + "\" JD=\"" + 1 + "\" JE=\"" + Daroo_bime + "\" JF=\"" + daroo90 + "\" />");
if (Convert.ToInt32(Lenz_bime) != 0)
{
listBox1.Items.Add("<PHA_HEAD JA=\"" + 1 + "\" JB=\"" + 2 + "\" JC=\"" + 2 + "\" JD=\"" + 1 + "\" JE=\"" + Lenz_bime + "\" JF=\"" + lenz90 + "\" />");
}
listBox1.Items.Add("<PHA_HEAD JA=\"" + 1 + "\" JB=\"" + 3 + "\" JC=\"" + 2 + "\" JD=\"" + 1 + "\" JE=\"" + Tajhiz_bime + "\" JF=\"" + tajhiz90 + "\" />");
if (Convert.ToInt32(navar_ghalb) != 0)
{
listBox1.Items.Add("<SAR_HEAD KA=\"" + 1 + "\" KB=\"" + 3 + "\" KC=\"" + 0 + "\" KD=\"" + 0 + "\" KE=\"" + 70039 + "\" KF=\"" + 0 + "\" KG=\"" + 1 + "\" KH=\"" + navar_ghalb + "\" KI=\"" + navar_ghalb90 + "\" />");
}
listBox1.Items.Add("<OR DA=\"" + Cost_Jarah_bime + "\" DB=\"" + 0 + "\" DC=\"" + Cost_Bihooshi_bime + "\" DD=\"" + 0 + "\" DE=\"" + 0 + "\" DF=\"" + 0 + "\" DG=\"" + 0 + "\" DG=\"" + 0 + "\" DH=\"" + 0 + "\" DI=\"" + 0 + "\" DJ=\"" + 0 + "\" DK=\"" + 0 + "\" DL=\"" + 0 + "\" DM=\"" + Cost_OtaghAmal_bime + "\" DN=\"" + jarah_bihooshi_amal + "\" DO=\"" + jarah_bihooshi_amal90 + "\"");
listBox1.Items.Add("</FORM_ADS>");

jarah_all = Convert.ToDecimal(Cost_Jarah_bime) + Convert.ToDecimal(Cost_Jarah_bime);
bihooshi_all = Convert.ToDecimal(Cost_Bihooshi_bime) + Convert.ToDecimal(Cost_Bihooshi_bime);
otagh_all = Convert.ToDecimal(Cost_OtaghAmal_bime) + Convert.ToDecimal(Cost_OtaghAmal_bime);
daroo_all = Convert.ToDecimal(Daroo_bime) + Convert.ToDecimal(Daroo_bime);
tajhiz_all = Convert.ToDecimal(Tajhiz_bime) + Convert.ToDecimal(Tajhiz_bime);
lenz_all = Convert.ToDecimal(Lenz_bime) + Convert.ToDecimal(Lenz_bime);
navar_all = Convert.ToDecimal(navar_ghalb) + Convert.ToDecimal(navar_ghalb);


s_invoice_all = jarah_all + bihooshi_all + otagh_all + daroo_all + tajhiz_all + lenz_all + navar_all;
sum += s_invoice_all;
s_invoice_all_90 = s_invoice_all * 90 / 100;

invoice_all = Convert.ToString(s_invoice_all);
invoice_all_90 = Convert.ToString(s_invoice_all_90);
}

listBox1.Items.Add("<BILL_SPEC>");
}


چندین جدول و رو می خوانم و یک سری عملیات های ریاضیاتی و ... انجام میدم .

مشکلم با DataSet هست که مقادیر رو می خونم . مشکل با Query هایی هست که مقدار ندارند .

من می خواهم چک کنم که اگه یک کوری در حلقه FOR من و شمارنده من اگه مقدار نداشت Return 0 و اگه مقدار داشت ، مقدارش رو بر گردونه .


مثلا این قطعه کد :


SqlConnection cnn71 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd71 = new SqlCommand();
cmd71.Connection = cnn71;
cnn71.Open();
cmd71.CommandText = "SELECT dbo.invoice_other.cost_bime FROM dbo.patients INNER JOIN dbo.invoice_other ON dbo.patients.id = dbo.invoice_other.patientid INNER JOIN dbo.other_type ON dbo.invoice_other.other_id = dbo.other_type.id WHERE (dbo.invoice_other.other_id = 3) AND (dbo.patients.bime_status = 2)";
SqlDataAdapter da71 = new SqlDataAdapter(cmd71);
DataSet ds71 = new DataSet();
da71.Fill(ds71);
cnn71.Close();




همچین IF نوشتم ، اما کار نکرده .


if (ds71.Tables[0].Rows.Count > 0)
{
navar_ghalb = Convert.ToString(ds71.Tables[0].Rows[i]["cost_bime"]);
}
else
{
navar_ghalb = "0";
}



به وسیله حقه FOR ، اون ROWS[i] بروز میشه و هر سری یک کوری جدید داریم ، مثلا این i شماره پرسنلی هر بیمار هست ، یک بیمار امکان داره نوار قلب داشته باشه ، یکی امکان داره نداشته باشه .

پس باید هر سری که حلقه به مرحله بعد میره و بیمار ( رکورد ، سطر بعدی ) رو چک می کنه ، چک بشه که مقدار داره یا نداره .

به نظر شما چه طوری میشه ؟

ممنون میشم کمکم کنید

veniz2008
یک شنبه 25 تیر 1391, 18:24 عصر
من دقیق متوجه نشدم مشکلت کجاست،مشکلتون کوئری هست که هیچی رو برنمیگردونه(در واقع رکوردی رو پیدا نمیکنه)؟ یا مشکلتون با رکوردهایی هست که یه فیلد خاص از اون رکوردها مقدار ندارند؟

NasimBamdad
یک شنبه 25 تیر 1391, 19:30 عصر
من دقیق متوجه نشدم مشکلت کجاست،مشکلتون کوئری هست که هیچی رو برنمیگردونه(در واقع رکوردی رو پیدا نمیکنه)؟ یا مشکلتون با رکوردهایی هست که یه فیلد خاص از اون رکوردها مقدار ندارند؟

ببخشید که خوب توضیح ندادم . ببین مشکلم اینه ککه چه طوری بگم
این کوری که از DataSet خونده میشه یا مقدار داره یا نداره
، اگه مقدار نداشت ( یعنی رکوردی براش پیدا نشد ) مقدار navar_ghalb = "0"
اگه مقدار داشت ، مقدارش رو برگردونه در navar_ghalb .

این کوری من هر بار که حلقه مجدد خوانه میشه ، تغییر می کنه . سری اول برای بیمار اول هست ، سری بعد بیمار دوم و سوم و .....

NasimBamdad
یک شنبه 25 تیر 1391, 19:32 عصر
اگه یک کوری داشته باشیم ، کد زیر درست کار می کنه


if (ds71.Tables[0].Rows.Count > 0)



ولی فقط برای یک کوری ، در کوری های بعدی که به دلیل گام های بعدی حلقه FOR ، تغییر می کنه دیگه کار ساز نیست .

من همچین چیزی نیاز دارم


if (ds71.Tables[0].Rows[i].Count > 0)



اما Syntax Error میده که نمیشه مقدار [i] رو قرار داد . همچین چیزی رو نیاز دارم

veniz2008
یک شنبه 25 تیر 1391, 21:01 عصر
شما دقیقا بگو چه چیزی میخوای انجام بدی،(یعنی میخوای چه گزارشی بگیری؟) شاید راه حل بهتری بشه براش پیدا کرد.اگر امکانش هست یه عکس از مقادیر جدولت هم بذار. اینکه میگی هر بار کوئری میگیری چرا این کار رو انجام میدی؟،ما معمولا یه بار کوئری میگیریم و بعدش اگه قرار باشه یه عمل تکراری رو انجام بدیم درون یک حلقه مقدار یک فیلد خاص (به نظر میرسه برای شما اون فیلد "نوار قلب" باشه) رو چک میکنیم و عمل مناسب رو انجام میدیم.

NasimBamdad
یک شنبه 25 تیر 1391, 21:59 عصر
عرض کنم خدمت شما که من باید یک لیست از تمامی بیمارانی که در دیتابیسم هست داشته باشم ، این لیست مربوط به افرادی میشن که بیمه تامین اجتماعی دارند .

حالا این عزیزان باید بفهمیم که ایا نوار قلب دارند یا ندارند ( رکوردی در جدول مورد نظر دارند یا ندارند ) اگه رکورد دارند دارند (یعنی نوار قلب دارند و قیمتش معلومه ) ، یک مقدار ( مقدار عددی برابر با هزینه نوار قلب هست ) باید دریافت کرد ،
اگه رکوردی نداره در جدول مورد نظر ( یعنی نوار قلب نداره ) و باید مبلغ 0 تومان درج شود

یعنی به اداره بیمه بگیم که این بیمار هزینه نوار قلبش ، یا 0 تومان هست ، یا مثلا 1000 ( که این مقدار در برنامه حساب می شود ) ..

پس من با اون حلقه FOR اومدم تمام بیماران رو لیست می کنم ، در هر بار تمامی ITEM هایی که نیاز هست رو از اون بیمار می خونم ، ( از اون رکورد ) . بعد یکچا ذخیره میشه و در یک ListBox ذخیره میشه و بعدا اون List Box به یک فایل متنی تبدیل میشه .

عکس رو نشد آپ کنم ، سرعتم کمه . اما فردا حتما آپ می کنم . .
///////////
اینم کل کد این فرمم


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;
using System.IO;

namespace NoorAutomation
{
public partial class XML : Form
{
private decimal sum;
public XML()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{

}
private void evente(object ctl, KeyEventArgs s)
{
if (s.KeyCode == Keys.Enter)
{
s.Handled = true;
SendKeys.Send("{TAB}");
}
}
private void buttonX1_Click(object sender, EventArgs e)
{
StreamWriter Write;
SaveFileDialog Save = new SaveFileDialog();
try
{
Save.Filter = ("Text Document|*.txt|All Files|*.*");
Save.FileName = "HOSDISK1.TXT";
Save.ShowDialog();
Write = new StreamWriter(Save.FileName);
for (int i = 0; i < listBox1.Items.Count; i++)
{
Write.WriteLine(Convert.ToString(listBox1.Items[i]));
}
Write.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

private void buttonX2_Click(object sender, EventArgs e)
{
SqlConnection cnn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cnn.Open();
cmd.CommandText = "SELECT Count(*) AS tbl1 FROM dbo.patients WHERE dbo.patients.bime_status = 2";
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
string countz = Convert.ToString(ds.Tables[0].Rows[0]["tbl1"]);
int conz = Convert.ToInt32(countz);

////////////
SqlConnection cnn2 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd2 = new SqlCommand();
cmd2.Connection = cnn2;
cnn2.Open();
cmd2.CommandText = @"SELECT dbo.patients.id, dbo.patients.fname, dbo.patients.lname, dbo.patients.serialz_daftarche, dbo.patients.tamin_type, dbo.patients.meli_code, dbo.patients.sex,
dbo.patients.nesbat_code, dbo.patients.date_t, dbo.patients.code_tashkhis_aval, dbo.patients.code_tashkhis_dovom, dbo.patients.code_jarahi,
dbo.patients.tarikh_etebar_daf, dbo.surgeons.serialz AS surgeons_serialz, dbo.nazer_names.serialz AS nazer_serial, dbo.surgeons.specialty_code,
dbo.patients.birthday, dbo.patients.reg_tarikh_shamsi, dbo.patients.marriage, dbo.patients.saat_p, dbo.patients.saat_t
FROM dbo.patients INNER JOIN
dbo.surgeons ON dbo.patients.surgeon_name = dbo.surgeons.id INNER JOIN
dbo.nazer_names ON dbo.patients.nazer_code = dbo.nazer_names.id WHERE (dbo.patients.bime_status = 2)";
SqlDataAdapter da2 = new SqlDataAdapter(cmd2);
DataSet ds2 = new DataSet();
da2.Fill(ds2);
cnn2.Close();
//COST_Bime//
SqlConnection cnn31 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd31 = new SqlCommand();
cmd31.Connection = cnn31;
cnn31.Open();
cmd31.CommandText = "SELECT (dbo.k_usage.k_jarahi * dbo.k_jarahi_cost.cost_bime) AS Cost_Jarah_tamin, (dbo.k_usage.k_bihooshi * dbo.k_bihooshi_cost.cost_bime) AS Cost_Bihooshi_tamin, (dbo.k_usage.k_otaghAmal * dbo.k_otaghAmal_costz.cost_bime) AS Cost_OtaghAmal_tamin FROM dbo.patients INNER JOIN dbo.k_usage ON dbo.patients.id = dbo.k_usage.patientid CROSS JOIN dbo.k_otaghAmal_costz CROSS JOIN dbo.k_jarahi_cost CROSS JOIN dbo.k_bihooshi_cost WHERE (dbo.patients.bime_status = 2)";
SqlDataAdapter da31 = new SqlDataAdapter(cmd31);
DataSet ds31 = new DataSet();
da31.Fill(ds31);
cnn31.Close();
////////////
SqlConnection cnn41 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd41 = new SqlCommand();
cmd41.Connection = cnn41;
cnn41.Open();
cmd41.CommandText = "SELECT dbo.invoice_daroo_total.cost_bime FROM dbo.patients INNER JOIN dbo.invoice_daroo_total ON dbo.patients.id = dbo.invoice_daroo_total.patientid WHERE (dbo.patients.bime_status = 2)";
SqlDataAdapter da41 = new SqlDataAdapter(cmd41);
DataSet ds41 = new DataSet();
da41.Fill(ds41);
cnn41.Close();
////////////
SqlConnection cnn51 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd51 = new SqlCommand();
cmd51.Connection = cnn51;
cnn51.Open();
cmd51.CommandText = "SELECT dbo.invoice_tajhiz_total.cost_bime FROM dbo.patients INNER JOIN dbo.invoice_tajhiz_total ON dbo.patients.id = dbo.invoice_tajhiz_total.patientid WHERE(dbo.patients.bime_status = 2)";
SqlDataAdapter da51 = new SqlDataAdapter(cmd51);
DataSet ds51 = new DataSet();
da51.Fill(ds51);
cnn51.Close();
////////////
SqlConnection cnn61 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd61 = new SqlCommand();
cmd61.Connection = cnn61;
cnn61.Open();
cmd61.CommandText = "SELECT dbo.invoice_lenz.cost_bime FROM dbo.patients INNER JOIN dbo.invoice_lenz ON dbo.patients.id = dbo.invoice_lenz.patientid WHERE (dbo.patients.bime_status = 2)";
SqlDataAdapter da61 = new SqlDataAdapter(cmd61);
DataSet ds61 = new DataSet();
da61.Fill(ds61);
cnn61.Close();
////////////
SqlConnection cnn71 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd71 = new SqlCommand();
cmd71.Connection = cnn71;
cnn71.Open();
cmd71.CommandText = "SELECT dbo.invoice_other.cost_bime FROM dbo.patients INNER JOIN dbo.invoice_other ON dbo.patients.id = dbo.invoice_other.patientid INNER JOIN dbo.other_type ON dbo.invoice_other.other_id = dbo.other_type.id WHERE (dbo.invoice_other.other_id = 3) AND (dbo.patients.bime_status = 2)";
SqlDataAdapter da71 = new SqlDataAdapter(cmd71);
DataSet ds71 = new DataSet();
da71.Fill(ds71);
cnn71.Close();


string fnamez, lnamez, idz, meli_code, serial_daf, tamin_type0, tamin_type = "0", tarikh_etebar_daf, sex, nesbat_code, marriage, reg_tarikh_shamsi, saat_p, saat_t, date_t, nazer_serial, code_tashkhis_aval, code_tashkhis_dovom, nezam_no, pezeshk_special_code, birthday, code_jarahi, Cost_Jarah_bime, Cost_Bihooshi_bime, Cost_OtaghAmal_bime, Daroo_bime, Tajhiz_bime, Lenz_bime, navar_ghalb, daroo90, tajhiz90, lenz90, navar_ghalb90, xmlz = "1.0", encode = "UTF-8", jarah_bihooshi_amal, jarah_bihooshi_amal90, invoice_all = "", invoice_all_90 = "";
decimal cost_total, sahm_bimar, sahm_bime, jarah_bihooshi_amal0, jarah_all, bihooshi_all, otagh_all, daroo_all, tajhiz_all, lenz_all, navar_all, s_invoice_all, s_invoice_all_90;


listBox1.Items.Add("<?XML version=\"" + xmlz + "\" encoding=\"" + encode + "\" ?>");
listBox1.Items.Add("<BILL_SPEC AA=\"" + 160 + "\" AB=\"" + txtProNet1.Text + "\" AC=\"" + conz + "\" AD =\"" + invoice_all + "\" AE=\"" + invoice_all_90 + "\" AF=\"" + string.Empty + "\">");

for (int i = 0; i < conz; i++)
{
string empty = string.Empty;

fnamez = Convert.ToString(ds2.Tables[0].Rows[i]["fname"]);
lnamez = Convert.ToString(ds2.Tables[0].Rows[i]["lname"]);
idz = Convert.ToString(ds2.Tables[0].Rows[i]["id"]);
meli_code = Convert.ToString(ds2.Tables[0].Rows[i]["meli_code"]);
serial_daf = Convert.ToString(ds2.Tables[0].Rows[i]["serialz_daftarche"]);
tamin_type0 = Convert.ToString(ds2.Tables[0].Rows[i]["tamin_type"]);
if (tamin_type0 == "اجباری")
{
tamin_type = "1";
}
else if (tamin_type0 == "اختیاری")
{
tamin_type = "2";
}
else if (tamin_type0 == "مشاغل آزاد")
{
tamin_type = "3";
}
tarikh_etebar_daf = Convert.ToString(ds2.Tables[0].Rows[i]["tarikh_etebar_daf"]);
sex = Convert.ToString(ds2.Tables[0].Rows[i]["sex"]);
nesbat_code = Convert.ToString(ds2.Tables[0].Rows[i]["nesbat_code"]);
marriage = Convert.ToString(ds2.Tables[0].Rows[i]["marriage"]);
reg_tarikh_shamsi = Convert.ToString(ds2.Tables[0].Rows[i]["reg_tarikh_shamsi"]);
saat_p = Convert.ToString(ds2.Tables[0].Rows[i]["saat_p"]);
saat_t = Convert.ToString(ds2.Tables[0].Rows[i]["saat_t"]);
date_t = Convert.ToString(ds2.Tables[0].Rows[i]["date_t"]);
nazer_serial = Convert.ToString(ds2.Tables[0].Rows[i]["nazer_serial"]);
code_tashkhis_aval = Convert.ToString(ds2.Tables[0].Rows[i]["code_tashkhis_aval"]);
code_tashkhis_dovom = Convert.ToString(ds2.Tables[0].Rows[i]["code_tashkhis_dovom"]);
nezam_no = Convert.ToString(ds2.Tables[0].Rows[i]["surgeons_serialz"]);
pezeshk_special_code = Convert.ToString(ds2.Tables[0].Rows[i]["specialty_code"]);
birthday = Convert.ToString(ds2.Tables[0].Rows[i]["birthday"]);
code_jarahi = Convert.ToString(ds2.Tables[0].Rows[i]["code_jarahi"]);
////
Cost_Jarah_bime = Convert.ToString(ds31.Tables[0].Rows[i]["Cost_Jarah_tamin"]);
Cost_Bihooshi_bime = Convert.ToString(ds31.Tables[0].Rows[i]["Cost_Bihooshi_tamin"]);
Cost_OtaghAmal_bime = Convert.ToString(ds31.Tables[0].Rows[i]["Cost_OtaghAmal_tamin"]);
Daroo_bime = Convert.ToString(ds41.Tables[0].Rows[i]["cost_bime"]);
Tajhiz_bime = Convert.ToString(ds51.Tables[0].Rows[i]["cost_bime"]);
Lenz_bime = Convert.ToString(ds61.Tables[0].Rows[i]["cost_bime"]);
if (ds71.Tables[0].Rows.Count > 0)
{
navar_ghalb = Convert.ToString(ds71.Tables[0].Rows[i]["cost_bime"]);
}
else
{
navar_ghalb = "0";
}
//navar_ghalb = Convert.ToString(ds71.Tables[0].Rows[i]["cost_bime"]);
daroo90 = Convert.ToString((Convert.ToDecimal(Daroo_bime) * 90) / 100);
tajhiz90 = Convert.ToString((Convert.ToDecimal(Tajhiz_bime) * 90) / 100);
lenz90 = Convert.ToString((Convert.ToDecimal(Lenz_bime) * 90) / 100);

navar_ghalb90 = Convert.ToString((Convert.ToDecimal(navar_ghalb) * 90) / 100);



cost_total = Convert.ToDecimal(Cost_Jarah_bime) + Convert.ToDecimal(Cost_Bihooshi_bime) + Convert.ToDecimal(Cost_OtaghAmal_bime) + Convert.ToDecimal(Daroo_bime) + Convert.ToDecimal(Tajhiz_bime) + Convert.ToDecimal(Lenz_bime) + Convert.ToDecimal(navar_ghalb);
sahm_bimar = (cost_total * 10) / 100;
sahm_bime = (cost_total * 90) / 100;


jarah_bihooshi_amal0 = Convert.ToDecimal(Cost_Jarah_bime) + Convert.ToDecimal(Cost_Bihooshi_bime) + Convert.ToDecimal(Cost_OtaghAmal_bime);
jarah_bihooshi_amal = Convert.ToString(jarah_bihooshi_amal0);
jarah_bihooshi_amal90 = Convert.ToString((Convert.ToDecimal(jarah_bihooshi _amal) * 90) / 100);

////

if (sex == "مرد")
{
sex = "1";
}
else if (sex == "زن")
{
sex = "2";
}


string daf_date_Total = tarikh_etebar_daf.Replace("/", "");
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
string date_paz = reg_tarikh_shamsi.Replace("/", "");
string saat_paz = saat_p.Replace(":", "");
string date_p_total = date_paz + saat_paz;
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
string tarkhis_saat = saat_t.Replace(":", "");
string tarkhis_date = date_t.Replace("/", "");
string date_t_total = tarkhis_date + tarkhis_saat;
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
string birthday_total = birthday.Replace("/", "");
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\

listBox1.Items.Add("<FORM_ADS BA=\"" + i + "\" BB=\"" + 103 + "\" BC=\"" + serial_daf + "\" BD=\"" + empty + "\" BE=\"" + tamin_type + "\" BF=\"" + daf_date_Total + "\" BG=\"" + meli_code + "\" BH=\"" + idz + "\" BI=\"" + lnamez + "\" BJ=\"" + fnamez + "\" BK=\"" + empty + "\" BL=\"" + sex + "\" BM=\"" + nesbat_code + "\" BN=\"" + marriage + "\" BO=\"" + birthday_total + "\" BP=\"" + date_p_total + "\" BQ=\"" + date_t_total + "\" BR=\"" + nezam_no + "\" BS=\"" + empty + "\" BT=\"" + 1 + "\" BU=\"" + empty + "\" BV=\"" + 1 + "\" BW=\"" + 1 + "\" BX=\"" + code_tashkhis_aval + "\" BYY=\"" + nazer_serial + "\" BZ=\"" + cost_total + "\" CB=\"" + code_tashkhis_dovom + "\" EB=\"" + code_jarahi + "\" BAA=\"" + sahm_bime + "\" BAB=\"" + 0 + "\" BAC=\"" + 0 + "\" BAD=\"" + 0 + "\" BAD=\"" + 0 + "\" BAE=\"" + 0 + "\" BAF=\"" + sahm_bimar + "\">");
//listBox1.Items.Add(" <GLOBAL GA=\"" + empty + "\" GB=\"" + empty + "\" GC=\"" + empty + "\" GD=\"" + empty + "\" GE=\"" + empty + "\" />");
//listBox1.Items.Add(" <HOTELING HA=\"" + empty + "\" HB=\"" + empty + "\" HC=\"" + empty + "\" HD=\"" + empty + "\" HE=\"" + empty + "\" HF=\"" + empty + "\" HG=\"" + empty + "\" />");
//listBox1.Items.Add("");
//listBox1.Items.Add(" <PAR_HEAD PA=\"" + empty + "\" PB=\"" + empty + "\" PC=\"" + empty + "\" PD=\"" + empty + "\" PE=\"" + empty + "\" PF=\"" + empty + "\" />");
//listBox1.Items.Add("");
listBox1.Items.Add("<PHA_HEAD JA=\"" + 1 + "\" JB=\"" + 1 + "\" JC=\"" + 2 + "\" JD=\"" + 1 + "\" JE=\"" + Daroo_bime + "\" JF=\"" + daroo90 + "\" />");
if (Convert.ToInt32(Lenz_bime) != 0)
{
listBox1.Items.Add("<PHA_HEAD JA=\"" + 1 + "\" JB=\"" + 2 + "\" JC=\"" + 2 + "\" JD=\"" + 1 + "\" JE=\"" + Lenz_bime + "\" JF=\"" + lenz90 + "\" />");
}
listBox1.Items.Add("<PHA_HEAD JA=\"" + 1 + "\" JB=\"" + 3 + "\" JC=\"" + 2 + "\" JD=\"" + 1 + "\" JE=\"" + Tajhiz_bime + "\" JF=\"" + tajhiz90 + "\" />");
if (Convert.ToInt32(navar_ghalb) != 0)
{
listBox1.Items.Add("<SAR_HEAD KA=\"" + 1 + "\" KB=\"" + 3 + "\" KC=\"" + 0 + "\" KD=\"" + 0 + "\" KE=\"" + 70039 + "\" KF=\"" + 0 + "\" KG=\"" + 1 + "\" KH=\"" + navar_ghalb + "\" KI=\"" + navar_ghalb90 + "\" />");
}
listBox1.Items.Add("<OR DA=\"" + Cost_Jarah_bime + "\" DB=\"" + 0 + "\" DC=\"" + Cost_Bihooshi_bime + "\" DD=\"" + 0 + "\" DE=\"" + 0 + "\" DF=\"" + 0 + "\" DG=\"" + 0 + "\" DG=\"" + 0 + "\" DH=\"" + 0 + "\" DI=\"" + 0 + "\" DJ=\"" + 0 + "\" DK=\"" + 0 + "\" DL=\"" + 0 + "\" DM=\"" + Cost_OtaghAmal_bime + "\" DN=\"" + jarah_bihooshi_amal + "\" DO=\"" + jarah_bihooshi_amal90 + "\"");
listBox1.Items.Add("</FORM_ADS>");

jarah_all = Convert.ToDecimal(Cost_Jarah_bime) + Convert.ToDecimal(Cost_Jarah_bime);
bihooshi_all = Convert.ToDecimal(Cost_Bihooshi_bime) + Convert.ToDecimal(Cost_Bihooshi_bime);
otagh_all = Convert.ToDecimal(Cost_OtaghAmal_bime) + Convert.ToDecimal(Cost_OtaghAmal_bime);
daroo_all = Convert.ToDecimal(Daroo_bime) + Convert.ToDecimal(Daroo_bime);
tajhiz_all = Convert.ToDecimal(Tajhiz_bime) + Convert.ToDecimal(Tajhiz_bime);
lenz_all = Convert.ToDecimal(Lenz_bime) + Convert.ToDecimal(Lenz_bime);
navar_all = Convert.ToDecimal(navar_ghalb) + Convert.ToDecimal(navar_ghalb);


s_invoice_all = jarah_all + bihooshi_all + otagh_all + daroo_all + tajhiz_all + lenz_all + navar_all;
sum += s_invoice_all;
s_invoice_all_90 = s_invoice_all * 90 / 100;

invoice_all = Convert.ToString(s_invoice_all);
invoice_all_90 = Convert.ToString(s_invoice_all_90);
}

listBox1.Items.Add("<BILL_SPEC>");
}

//sum is avaiable here!

private void txtProNet1_TextChanged(object sender, EventArgs e)
{
if (txtProNet1.Text == "")
{
txtProNet1.BackColor = Color.Red;
}
else
{
txtProNet1.BackColor = Color.White;
}
}
}
}

veniz2008
یک شنبه 25 تیر 1391, 22:42 عصر
خوب این همه کد رو میخوای چکار؟باور کنید اینطور کد نوشتن روی روحیه آدم تاثیر منفی میذاره. اما جواب:
فرض کن فیلد نوار قلب رو از نوع bit گرفته باشی ( یعنی 0 واسه کسی که نوار قلب نداره و 1 برای کسی که داره)،حالا یه select مینویسی و لیست بیمارانی رو که نوار قلب دارند( یعنی بیت 1) رو بدست میاری و درون یه دیتاتیبل میریزی،حالا یه حلقه میسازی و به تعداد رکوردهای دیتاتیبل این حلقه رو تکرار میکنی، اما چیزی که درون این حلقه میریزی یه رشته است که شامل دستور insert برای ثبت مبلغ مورد نظر هست. مثلا اگر 10 تا رکورد داشتی(یعنی 10 تا بیمار که نوار قلب دارند) توی این رشته باید 10 تا insert داشته باشی. حالا خارج از حلقه فقط یه بار به دیتابیس وصل میشی و اون رشته رو با استفاده از sqlcommand اجرا میکنی تا برای هر 10 رکورد مبلغ رو ثبت کنه.کل این کارها 15 خط هم نمیشه.

veniz2008
یک شنبه 25 تیر 1391, 23:08 عصر
اینم یه نمونه کد،داده اولی که من درون جدول ذخیره کردم ازنوع int هست و بقیه فیلدهام کاراکتری هستن.شما طبق فیلدهای خودت این کد رو اصلاح کن.
موفق باشی دوست عزیز.

// show recordes with field True
con = new SqlConnection("Data source =(local);initial catalog = testgrid;integrated security = true");
da = new SqlDataAdapter("select * from student where status =" + 1 , con);
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
//insert for all recordes
string s = "";
int t = dt.Rows.Count;

for (int i = 0; i < t ; i++)
{
s = s + "insert into student2 values(" + dataGridView1.Rows[i].Cells[0].Value + ",'" +
dataGridView1.Rows[i].Cells[1].Value + "',N'" + dataGridView1.Rows[i].Cells[2].Value +
"',N'" + dataGridView1.Rows[i].Cells[3].Value + "')" + ";";
}
s = s.Remove(s.Length - 1, 1);
con = new SqlConnection("Data source =(local);initial catalog = testgrid;integrated security = true");
con.Open();
SqlCommand cmd = new SqlCommand(s, con);
cmd.ExecuteNonQuery();
con.Close();

NasimBamdad
دوشنبه 26 تیر 1391, 10:24 صبح
ببینید سطح کد نویسی من حرفه ای نیست ، دیگه کد ها رو با عقل خودم نوشتم . مطمئنا Optimize نیست و چه می دونم مشکل دارند . ولی خوب الان زمان زیادی ندارم که بیام دوباره اینا رو عوض کنم .

نوار قلب رو من در دیتابیسم به صورت یک کالا تعریف کردم ، این کالا در جدول کالا ها یک ID داره که در اون جدول منحصر به فرد هست .اسم جدول کالا من other_type هست . کوری من هم از این جدول و جدول هزینه ها و جدول مشخصات فردی بیمار شامل شده .

در طی پروسه ترخیص بیمار ، (اگر بیمار توار قلب داشته باشه )یک مقدار در جدول صورت حساب های بیمار اضافه میشه . که شامل زیر هست

Invoice_Other
id - PK
patientid ( شماره پرونده بیمار )
otherid ( کد منحصر به فرد کالا در جدول کالا ها ) ( مثلا ID شماره 3 یعنی نوار قلب)
cost_bime ( هزینه اون کالا)


من از جدول مشخصات فردی بیمار کل بیماران که تامین اجتماعی هستند رو لود می کنم . بعد میام در جدول صورت حساب می گردم که آیا این بیماران رکوردی با ID مثلا 3 ( 3 در جدول کالا ها به معنی نوار قلب هست ) دارند یا نه . اگه اون بیمار رکوردی داشت با آی دی 3 یعنی نوار قلب داره و cost_bime رو می خونم .

اما اگه رکوردی با آی دی 3 نداشته باشه ، یعنی براش نوار قلب نزدند و در واقع نوار قلب نداره .

چه طوری باید وجود یا عدم وجود یک مقدار رو در یک کوری تشخیص داد .

برای اینکه هر بیمار رو چک کنم از این روش استفاده کردم .

اول با کد زیر تعداد بیماران تامین اجتماعی رو پیدا می کنم


SqlConnection cnn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cnn.Open();
cmd.CommandText = "SELECT Count(*) AS tbl1 FROM dbo.patients WHERE dbo.patients.bime_status = 2";
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
string countz = Convert.ToString(ds.Tables[0].Rows[0]["tbl1"]);
int conz = Convert.ToInt32(countz);



تعدادشون در conz ریخته میشه . مثلا 100 تا .

بعد مقادیری که نیاز هست خونده بشوند رو با کد زیر بدست میارم . چون این مقادیر زیاد به هم ربطی ندارند در کانکشن ها و DataSet های مختلف گذاشتم .


SqlConnection cnn2 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd2 = new SqlCommand();
cmd2.Connection = cnn2;
cnn2.Open();
cmd2.CommandText = @"SELECT dbo.patients.id, dbo.patients.fname, dbo.patients.lname, dbo.patients.serialz_daftarche, dbo.patients.tamin_type, dbo.patients.meli_code, dbo.patients.sex,
dbo.patients.nesbat_code, dbo.patients.date_t, dbo.patients.code_tashkhis_aval, dbo.patients.code_tashkhis_dovom, dbo.patients.code_jarahi,
dbo.patients.tarikh_etebar_daf, dbo.surgeons.serialz AS surgeons_serialz, dbo.nazer_names.serialz AS nazer_serial, dbo.surgeons.specialty_code,
dbo.patients.birthday, dbo.patients.reg_tarikh_shamsi, dbo.patients.marriage, dbo.patients.saat_p, dbo.patients.saat_t
FROM dbo.patients INNER JOIN
dbo.surgeons ON dbo.patients.surgeon_name = dbo.surgeons.id INNER JOIN
dbo.nazer_names ON dbo.patients.nazer_code = dbo.nazer_names.id WHERE (dbo.patients.bime_status = 2)";
SqlDataAdapter da2 = new SqlDataAdapter(cmd2);
DataSet ds2 = new DataSet();
da2.Fill(ds2);
cnn2.Close();
//COST_Bime//
SqlConnection cnn31 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd31 = new SqlCommand();
cmd31.Connection = cnn31;
cnn31.Open();
cmd31.CommandText = "SELECT (dbo.k_usage.k_jarahi * dbo.k_jarahi_cost.cost_bime) AS Cost_Jarah_tamin, (dbo.k_usage.k_bihooshi * dbo.k_bihooshi_cost.cost_bime) AS Cost_Bihooshi_tamin, (dbo.k_usage.k_otaghAmal * dbo.k_otaghAmal_costz.cost_bime) AS Cost_OtaghAmal_tamin FROM dbo.patients INNER JOIN dbo.k_usage ON dbo.patients.id = dbo.k_usage.patientid CROSS JOIN dbo.k_otaghAmal_costz CROSS JOIN dbo.k_jarahi_cost CROSS JOIN dbo.k_bihooshi_cost WHERE (dbo.patients.bime_status = 2)";
SqlDataAdapter da31 = new SqlDataAdapter(cmd31);
DataSet ds31 = new DataSet();
da31.Fill(ds31);
cnn31.Close();
////////////
SqlConnection cnn41 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd41 = new SqlCommand();
cmd41.Connection = cnn41;
cnn41.Open();
cmd41.CommandText = "SELECT dbo.invoice_daroo_total.cost_bime FROM dbo.patients INNER JOIN dbo.invoice_daroo_total ON dbo.patients.id = dbo.invoice_daroo_total.patientid WHERE (dbo.patients.bime_status = 2)";
SqlDataAdapter da41 = new SqlDataAdapter(cmd41);
DataSet ds41 = new DataSet();
da41.Fill(ds41);
cnn41.Close();
////////////
SqlConnection cnn51 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd51 = new SqlCommand();
cmd51.Connection = cnn51;
cnn51.Open();
cmd51.CommandText = "SELECT dbo.invoice_tajhiz_total.cost_bime FROM dbo.patients INNER JOIN dbo.invoice_tajhiz_total ON dbo.patients.id = dbo.invoice_tajhiz_total.patientid WHERE(dbo.patients.bime_status = 2)";
SqlDataAdapter da51 = new SqlDataAdapter(cmd51);
DataSet ds51 = new DataSet();
da51.Fill(ds51);
cnn51.Close();
////////////
SqlConnection cnn61 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd61 = new SqlCommand();
cmd61.Connection = cnn61;
cnn61.Open();
cmd61.CommandText = "SELECT dbo.invoice_lenz.cost_bime FROM dbo.patients INNER JOIN dbo.invoice_lenz ON dbo.patients.id = dbo.invoice_lenz.patientid WHERE (dbo.patients.bime_status = 2)";
SqlDataAdapter da61 = new SqlDataAdapter(cmd61);
DataSet ds61 = new DataSet();
da61.Fill(ds61);
cnn61.Close();
////////////
SqlConnection cnn71 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd71 = new SqlCommand();
cmd71.Connection = cnn71;
cnn71.Open();
cmd71.CommandText = "SELECT dbo.invoice_other.cost_bime FROM dbo.patients INNER JOIN dbo.invoice_other ON dbo.patients.id = dbo.invoice_other.patientid INNER JOIN dbo.other_type ON dbo.invoice_other.other_id = dbo.other_type.id WHERE (dbo.invoice_other.other_id = 3) AND (dbo.patients.bime_status = 2)";
SqlDataAdapter da71 = new SqlDataAdapter(cmd71);
DataSet ds71 = new DataSet();
da71.Fill(ds71);
cnn71.Close();




حالا یک حلقه FOR دارم به صورت زیر که به تعداد بیماران Select شده ، یعنی conz تکرار میشه


for (int i = 0; i < conz; i++)


بعد من با این قسمت از کد ها مقادیر که نیاز دارم رو از اون کوری های بالا می خونم .


یعنی در هر سری که حلقه for تکرار میشه ، این همه مشخصات از بیماران در قسمت های حسابداری و مالی و بیمه ای و ... خوانده میشه .

در هر کوری که در بالا بود ، مثلا برای نوار قلب ، وضعیت نوار قلب تمام بیماران خوانده میشه ، برای اینکه تشخیص بدم وضعیت نوار قلب یا دارو و یا .... هر بیمار چی هست ، از این قطعه کد استفاده کردم .



fnamez = Convert.ToString(ds2.Tables[0].Rows[i]["fname"]);
lnamez = Convert.ToString(ds2.Tables[0].Rows[i]["lname"]);
idz = Convert.ToString(ds2.Tables[0].Rows[i]["id"]);
meli_code = Convert.ToString(ds2.Tables[0].Rows[i]["meli_code"]);
serial_daf = Convert.ToString(ds2.Tables[0].Rows[i]["serialz_daftarche"]);
tamin_type0 = Convert.ToString(ds2.Tables[0].Rows[i]["tamin_type"]);
if (tamin_type0 == "اجباری")
{
tamin_type = "1";
}
else if (tamin_type0 == "اختیاری")
{
tamin_type = "2";
}
else if (tamin_type0 == "مشاغل آزاد")
{
tamin_type = "3";
}
tarikh_etebar_daf = Convert.ToString(ds2.Tables[0].Rows[i]["tarikh_etebar_daf"]);
sex = Convert.ToString(ds2.Tables[0].Rows[i]["sex"]);
nesbat_code = Convert.ToString(ds2.Tables[0].Rows[i]["nesbat_code"]);
marriage = Convert.ToString(ds2.Tables[0].Rows[i]["marriage"]);
reg_tarikh_shamsi = Convert.ToString(ds2.Tables[0].Rows[i]["reg_tarikh_shamsi"]);
saat_p = Convert.ToString(ds2.Tables[0].Rows[i]["saat_p"]);
saat_t = Convert.ToString(ds2.Tables[0].Rows[i]["saat_t"]);
date_t = Convert.ToString(ds2.Tables[0].Rows[i]["date_t"]);
nazer_serial = Convert.ToString(ds2.Tables[0].Rows[i]["nazer_serial"]);
code_tashkhis_aval = Convert.ToString(ds2.Tables[0].Rows[i]["code_tashkhis_aval"]);
code_tashkhis_dovom = Convert.ToString(ds2.Tables[0].Rows[i]["code_tashkhis_dovom"]);
nezam_no = Convert.ToString(ds2.Tables[0].Rows[i]["surgeons_serialz"]);
pezeshk_special_code = Convert.ToString(ds2.Tables[0].Rows[i]["specialty_code"]);
birthday = Convert.ToString(ds2.Tables[0].Rows[i]["birthday"]);
code_jarahi = Convert.ToString(ds2.Tables[0].Rows[i]["code_jarahi"]);
////
Cost_Jarah_bime = Convert.ToString(ds31.Tables[0].Rows[i]["Cost_Jarah_tamin"]);
Cost_Bihooshi_bime = Convert.ToString(ds31.Tables[0].Rows[i]["Cost_Bihooshi_tamin"]);
Cost_OtaghAmal_bime = Convert.ToString(ds31.Tables[0].Rows[i]["Cost_OtaghAmal_tamin"]);
Daroo_bime = Convert.ToString(ds41.Tables[0].Rows[i]["cost_bime"]);
Tajhiz_bime = Convert.ToString(ds51.Tables[0].Rows[i]["cost_bime"]);
Lenz_bime = Convert.ToString(ds61.Tables[0].Rows[i]["cost_bime"]);
if (ds71.Tables[0].Rows.Count > 0)
{
navar_ghalb = Convert.ToString(ds71.Tables[0].Rows[i]["cost_bime"]);



هر سطر مربوط به یک بیمار هست . پس باید هر سطر رو برای یک بیمار اختصاص داد . من به این صورت عمل کردم


fnamez = Convert.ToString(ds2.Tables[0].Rows[i]["fname"]);


این rows[i ] همون شمارنده حلقه For هست که به دفعات لیست بیماران تکرار می شد .

هدف من این هست که با قطعه کد زیر ، در هر سری که حلقه for تکرار میشه ، سطر جاری COUNT بشه .

ds71.Tables[0].Rows.Count > 0

یعنی اگه می تونستم قطعه کد زیر رو داشته باشم ، همه چیز حل می شد

(ds71.Tables[0].Rows[i].Count > 0)

یعنی به سطر های بعدی هم برای شمردن دسترسی داشته باشم یعنی بفهمم که فلا بیمار رکورد داره یا نه . برای تشخیص بیمار هم از شماره پرونده ( patientid ) استفاده می کنم . حالا شما اگه می تونید با SQL و یا C#‎ راه حلی بهم بگید که چه طوری وضعیت هر بیمار چک بشه در یک جدول ( در واقع چک کردم که این بیمار ( این شماره پرونده ) رکوردی در اون جدول داره یا نداره ) من هزینه زحمت شما رو پرداخت خواهم کرد


خودم الان فکر می کنم این طور دسترسی به داده ها در SQL با حلقه FOR اشتباه . باید یک فکر دیگه براش داشته باشم . ممنون می شم کمک کنید

NasimBamdad
دوشنبه 26 تیر 1391, 13:12 عصر
کد هام رو به صورت زیر تغییر دادم

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;
using System.IO;

namespace NoorAutomation
{
public partial class XML : Form
{
private Int64 sum;
int counter = 1;
public XML()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{

}
private void evente(object ctl, KeyEventArgs s)
{
if (s.KeyCode == Keys.Enter)
{
s.Handled = true;
SendKeys.Send("{TAB}");
}
}
private void buttonX1_Click(object sender, EventArgs e)
{
StreamWriter Write;
SaveFileDialog Save = new SaveFileDialog();
try
{
Save.Filter = ("Text Document|*.txt|All Files|*.*");
Save.FileName = "HOSDISK1.TXT";
Save.ShowDialog();
Write = new StreamWriter(Save.FileName);
for (int i = 0; i < listBox1.Items.Count; i++)
{
Write.WriteLine(Convert.ToString(listBox1.Items[i]));
}
Write.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

private void buttonX2_Click(object sender, EventArgs e)
{
calc();

SqlConnection cnn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cnn.Open();
cmd.CommandText = "SELECT Count(*) AS tbl1 FROM dbo.patients WHERE dbo.patients.bime_status = 2";
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
string countz = Convert.ToString(ds.Tables[0].Rows[0]["tbl1"]);
int conz = Convert.ToInt32(countz);

////////////
SqlConnection cnn2 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd2 = new SqlCommand();
cmd2.Connection = cnn2;
cnn2.Open();
cmd2.CommandText = @"SELECT dbo.patients.id, dbo.patients.fname, dbo.patients.lname, dbo.patients.serialz_daftarche, dbo.patients.tamin_type, dbo.patients.meli_code, dbo.patients.sex,
dbo.patients.nesbat_code, dbo.patients.date_t, dbo.patients.code_tashkhis_aval, dbo.patients.code_tashkhis_dovom, dbo.patients.code_jarahi,
dbo.patients.tarikh_etebar_daf, dbo.surgeons.serialz AS surgeons_serialz, dbo.nazer_names.serialz AS nazer_serial, dbo.surgeons.specialty_code,
dbo.patients.birthday, dbo.patients.reg_tarikh_shamsi, dbo.patients.marriage, dbo.patients.saat_p, dbo.patients.saat_t, dbo.invoice_daroo_total.cost_bime AS daroo,
dbo.invoice_tajhiz_total.cost_bime AS tajhiz, dbo.invoice_lenz.cost_bime AS lenz, dbo.invoice_navar_xml.cost_bime AS navar, dbo.invoice_k_xml.k_jarahi,
dbo.invoice_k_xml.k_bihooshi, dbo.invoice_k_xml.k_otagh_amal
FROM dbo.patients INNER JOIN
dbo.surgeons ON dbo.patients.surgeon_name = dbo.surgeons.id INNER JOIN
dbo.nazer_names ON dbo.patients.nazer_code = dbo.nazer_names.id LEFT OUTER JOIN
dbo.invoice_k_xml ON dbo.patients.id = dbo.invoice_k_xml.patientid LEFT OUTER JOIN
dbo.invoice_navar_xml ON dbo.patients.id = dbo.invoice_navar_xml.patientid LEFT OUTER JOIN
dbo.invoice_lenz ON dbo.patients.id = dbo.invoice_lenz.patientid LEFT OUTER JOIN
dbo.invoice_tajhiz_total ON dbo.patients.id = dbo.invoice_tajhiz_total.patientid LEFT OUTER JOIN
dbo.invoice_daroo_total ON dbo.patients.id = dbo.invoice_daroo_total.patientid
WHERE (dbo.patients.bime_status = 2)";
SqlDataAdapter da2 = new SqlDataAdapter(cmd2);
DataSet ds2 = new DataSet();
da2.Fill(ds2);
cnn2.Close();

string fnamez, lnamez, idz, meli_code, serial_daf, tamin_type0, tamin_type = "0", tarikh_etebar_daf, sex, nesbat_code, marriage, reg_tarikh_shamsi, saat_p, saat_t, date_t, nazer_serial, code_tashkhis_aval, code_tashkhis_dovom, nezam_no, pezeshk_special_code, birthday, code_jarahi, daroo90, tajhiz90, lenz90, navar_ghalb90, xmlz = "1.0", encode = "UTF-8", jarah_bihooshi_amal, jarah_bihooshi_amal90, invoice_all = "", invoice_all_90 = "";
Int64 cost_total, sahm_bimar, sahm_bime, jarah_bihooshi_amal0, jarah_all, bihooshi_all, otagh_all, daroo_all, tajhiz_all, lenz_all, navar_all, s_invoice_all, s_invoice_all_90, Cost_Jarah_bime, Cost_Bihooshi_bime, Cost_OtaghAmal_bime, Daroo_bime, Tajhiz_bime, Lenz_bime, navar_ghalb;


listBox1.Items.Add("<?XML version=\"" + xmlz + "\" encoding=\"" + encode + "\" ?>");
listBox1.Items.Add("<BILL_SPEC AA=\"" + 160 + "\" AB=\"" + txtProNet1.Text + "\" AC=\"" + conz + "\" AD =\"" + invoice_all + "\" AE=\"" + invoice_all_90 + "\" AF=\"" + string.Empty + "\">");

for (int i = 0; i < conz; i++)
{
string empty = string.Empty;

fnamez = Convert.ToString(ds2.Tables[0].Rows[i]["fname"]);
lnamez = Convert.ToString(ds2.Tables[0].Rows[i]["lname"]);
idz = Convert.ToString(ds2.Tables[0].Rows[i]["id"]);
meli_code = Convert.ToString(ds2.Tables[0].Rows[i]["meli_code"]);
serial_daf = Convert.ToString(ds2.Tables[0].Rows[i]["serialz_daftarche"]);
tamin_type0 = Convert.ToString(ds2.Tables[0].Rows[i]["tamin_type"]);
if (tamin_type0 == "اجباری")
{
tamin_type = "1";
}
else if (tamin_type0 == "اختیاری")
{
tamin_type = "2";
}
else if (tamin_type0 == "مشاغل آزاد")
{
tamin_type = "3";
}
tarikh_etebar_daf = Convert.ToString(ds2.Tables[0].Rows[i]["tarikh_etebar_daf"]);
sex = Convert.ToString(ds2.Tables[0].Rows[i]["sex"]);
nesbat_code = Convert.ToString(ds2.Tables[0].Rows[i]["nesbat_code"]);
marriage = Convert.ToString(ds2.Tables[0].Rows[i]["marriage"]);
reg_tarikh_shamsi = Convert.ToString(ds2.Tables[0].Rows[i]["reg_tarikh_shamsi"]);
saat_p = Convert.ToString(ds2.Tables[0].Rows[i]["saat_p"]);
saat_t = Convert.ToString(ds2.Tables[0].Rows[i]["saat_t"]);
date_t = Convert.ToString(ds2.Tables[0].Rows[i]["date_t"]);
nazer_serial = Convert.ToString(ds2.Tables[0].Rows[i]["nazer_serial"]);
code_tashkhis_aval = Convert.ToString(ds2.Tables[0].Rows[i]["code_tashkhis_aval"]);
code_tashkhis_dovom = Convert.ToString(ds2.Tables[0].Rows[i]["code_tashkhis_dovom"]);
nezam_no = Convert.ToString(ds2.Tables[0].Rows[i]["surgeons_serialz"]);
pezeshk_special_code = Convert.ToString(ds2.Tables[0].Rows[i]["specialty_code"]);
birthday = Convert.ToString(ds2.Tables[0].Rows[i]["birthday"]);
code_jarahi = Convert.ToString(ds2.Tables[0].Rows[i]["code_jarahi"]);
////
try
{
Cost_Jarah_bime = Convert.ToInt64(ds2.Tables[0].Rows[i]["k_jarahi"]);
}
catch
{
Cost_Jarah_bime = 0;
}
try
{
Cost_Bihooshi_bime = Convert.ToInt64(ds2.Tables[0].Rows[i]["k_bihooshi"]);
}
catch
{
Cost_Bihooshi_bime = 0;
}
try
{
Cost_OtaghAmal_bime = Convert.ToInt64(ds2.Tables[0].Rows[i]["k_otagh_amal"]);
}
catch
{
Cost_OtaghAmal_bime = 0;
}
try
{
Daroo_bime = Convert.ToInt64(ds2.Tables[0].Rows[i]["daroo"]);
}
catch
{
Daroo_bime = 0;
}
try
{
Tajhiz_bime = Convert.ToInt64(ds2.Tables[0].Rows[i]["tajhiz"]);
}
catch
{
Tajhiz_bime = 0;
}
try
{
Lenz_bime = Convert.ToInt64(ds2.Tables[0].Rows[i]["lenz"]);
}
catch
{
Lenz_bime = 0;
}
try
{
navar_ghalb = Convert.ToInt64(ds2.Tables[0].Rows[i]["navar"]);
}
catch
{
navar_ghalb = 0;
}
//navar_ghalb = "0";
daroo90 = Convert.ToString((Convert.ToInt64(Daroo_bime) * 90) / 100);
tajhiz90 = Convert.ToString((Convert.ToInt64(Tajhiz_bime) * 90) / 100);
lenz90 = Convert.ToString((Convert.ToInt64(Lenz_bime) * 90) / 100);
navar_ghalb90 = Convert.ToString((Convert.ToInt64(navar_ghalb) * 90) / 100);



cost_total = cost_total = Cost_Jarah_bime + Cost_Bihooshi_bime + Cost_OtaghAmal_bime + Daroo_bime + Tajhiz_bime + Lenz_bime + navar_ghalb;
sahm_bimar = (cost_total * 10) / 100;
sahm_bime = (cost_total * 90) / 100;


jarah_bihooshi_amal0 = Cost_Jarah_bime + Cost_Bihooshi_bime + Cost_OtaghAmal_bime;
jarah_bihooshi_amal = Convert.ToString(jarah_bihooshi_amal0);
jarah_bihooshi_amal90 = Convert.ToString((Convert.ToInt64(jarah_bihooshi_a mal) * 90) / 100);

////

if (sex == "مرد")
{
sex = "1";
}
else if (sex == "زن")
{
sex = "2";
}


string daf_date_Total = tarikh_etebar_daf.Replace("/", "");
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
string date_paz = reg_tarikh_shamsi.Replace("/", "");
string saat_paz = saat_p.Replace(":", "");
string date_p_total = date_paz + saat_paz;
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
string tarkhis_saat = saat_t.Replace(":", "");
string tarkhis_date = date_t.Replace("/", "");
string date_t_total = tarkhis_date + tarkhis_saat;
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
string birthday_total = birthday.Replace("/", "");
//\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
counter = i + 1;
listBox1.Items.Add("<FORM_ADS BA=\"" + counter + "\" BB=\"" + 103 + "\" BC=\"" + serial_daf + "\" BD=\"" + empty + "\" BE=\"" + tamin_type + "\" BF=\"" + daf_date_Total + "\" BG=\"" + meli_code + "\" BH=\"" + idz + "\" BI=\"" + lnamez + "\" BJ=\"" + fnamez + "\" BK=\"" + empty + "\" BL=\"" + sex + "\" BM=\"" + nesbat_code + "\" BN=\"" + marriage + "\" BO=\"" + birthday_total + "\" BP=\"" + date_p_total + "\" BQ=\"" + date_t_total + "\" BR=\"" + nezam_no + "\" BS=\"" + empty + "\" BT=\"" + 1 + "\" BU=\"" + empty + "\" BV=\"" + 1 + "\" BW=\"" + 1 + "\" BX=\"" + code_tashkhis_aval + "\" BYY=\"" + nazer_serial + "\" BZ=\"" + cost_total + "\" CB=\"" + code_tashkhis_dovom + "\" EB=\"" + code_jarahi + "\" BAA=\"" + sahm_bime + "\" BAB=\"" + 0 + "\" BAC=\"" + 0 + "\" BAD=\"" + 0 + "\" BAD=\"" + 0 + "\" BAE=\"" + 0 + "\" BAF=\"" + sahm_bimar + "\">");
//listBox1.Items.Add(" <GLOBAL GA=\"" + empty + "\" GB=\"" + empty + "\" GC=\"" + empty + "\" GD=\"" + empty + "\" GE=\"" + empty + "\" />");
//listBox1.Items.Add(" <HOTELING HA=\"" + empty + "\" HB=\"" + empty + "\" HC=\"" + empty + "\" HD=\"" + empty + "\" HE=\"" + empty + "\" HF=\"" + empty + "\" HG=\"" + empty + "\" />");
//listBox1.Items.Add("");
//listBox1.Items.Add(" <PAR_HEAD PA=\"" + empty + "\" PB=\"" + empty + "\" PC=\"" + empty + "\" PD=\"" + empty + "\" PE=\"" + empty + "\" PF=\"" + empty + "\" />");
//listBox1.Items.Add("");
listBox1.Items.Add("<PHA_HEAD JA=\"" + 1 + "\" JB=\"" + 1 + "\" JC=\"" + 2 + "\" JD=\"" + 1 + "\" JE=\"" + Daroo_bime + "\" JF=\"" + daroo90 + "\" />");
if (Convert.ToInt32(Lenz_bime) != 0)
{
listBox1.Items.Add("<PHA_HEAD JA=\"" + 1 + "\" JB=\"" + 2 + "\" JC=\"" + 2 + "\" JD=\"" + 1 + "\" JE=\"" + Lenz_bime + "\" JF=\"" + lenz90 + "\" />");
}
listBox1.Items.Add("<PHA_HEAD JA=\"" + 1 + "\" JB=\"" + 3 + "\" JC=\"" + 2 + "\" JD=\"" + 1 + "\" JE=\"" + Tajhiz_bime + "\" JF=\"" + tajhiz90 + "\" />");
if (Convert.ToInt32(navar_ghalb) != 0)
{
listBox1.Items.Add("<SAR_HEAD KA=\"" + 1 + "\" KB=\"" + 3 + "\" KC=\"" + 0 + "\" KD=\"" + 0 + "\" KE=\"" + 70039 + "\" KF=\"" + 0 + "\" KG=\"" + 1 + "\" KH=\"" + navar_ghalb + "\" KI=\"" + navar_ghalb90 + "\" />");
}
listBox1.Items.Add("<OR DA=\"" + Cost_Jarah_bime + "\" DB=\"" + 0 + "\" DC=\"" + Cost_Bihooshi_bime + "\" DD=\"" + 0 + "\" DE=\"" + 0 + "\" DF=\"" + 0 + "\" DG=\"" + 0 + "\" DG=\"" + 0 + "\" DH=\"" + 0 + "\" DI=\"" + 0 + "\" DJ=\"" + 0 + "\" DK=\"" + 0 + "\" DL=\"" + 0 + "\" DM=\"" + Cost_OtaghAmal_bime + "\" DN=\"" + jarah_bihooshi_amal + "\" DO=\"" + jarah_bihooshi_amal90 + "\"");
listBox1.Items.Add("</FORM_ADS>");

jarah_all = Convert.ToInt64(Cost_Jarah_bime) + Convert.ToInt64(Cost_Jarah_bime);
bihooshi_all = Convert.ToInt64(Cost_Bihooshi_bime) + Convert.ToInt64(Cost_Bihooshi_bime);
otagh_all = Convert.ToInt64(Cost_OtaghAmal_bime) + Convert.ToInt64(Cost_OtaghAmal_bime);
daroo_all = Convert.ToInt64(Daroo_bime) + Convert.ToInt64(Daroo_bime);
tajhiz_all = Convert.ToInt64(Tajhiz_bime) + Convert.ToInt64(Tajhiz_bime);
lenz_all = Convert.ToInt64(Lenz_bime) + Convert.ToInt64(Lenz_bime);
navar_all = Convert.ToInt64(navar_ghalb) + Convert.ToInt64(navar_ghalb);


s_invoice_all = jarah_all + bihooshi_all + otagh_all + daroo_all + tajhiz_all + lenz_all + navar_all;
sum += s_invoice_all;
s_invoice_all_90 = sum * 90 / 100;

invoice_all = Convert.ToString(sum);
invoice_all_90 = Convert.ToString(s_invoice_all_90);
}

listBox1.Items.Add("<BILL_SPEC>");
MessageBox.Show(Convert.ToString(invoice_all));
MessageBox.Show(Convert.ToString(invoice_all_90));
}

//sum is avaiable here!

private void txtProNet1_TextChanged(object sender, EventArgs e)
{
if (txtProNet1.Text == "")
{
txtProNet1.BackColor = Color.Red;
}
else
{
txtProNet1.BackColor = Color.White;
}
}
void calc()
{
SqlConnection cnn06 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd06 = new SqlCommand();
cmd06.Connection = cnn06;
cnn06.Open();
cmd06.CommandText = "Delete From invoice_navar_xml";
cmd06.ExecuteNonQuery();
cnn06.Close();
/////////
SqlConnection cnn6 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd6 = new SqlCommand();
cmd6.Connection = cnn6;
cnn6.Open();
cmd6.CommandText = "Insert into invoice_navar_xml(patientid,other_id,cost_bime) Select patientid,other_id,cost_bime from invoice_other WHERE other_id = '3'";
cmd6.ExecuteNonQuery();
cnn6.Close();
////////
SqlConnection cnn006 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd006 = new SqlCommand();
cmd006.Connection = cnn006;
cnn006.Open();
cmd006.CommandText = "Delete From invoice_k_xml";
cmd006.ExecuteNonQuery();
cnn006.Close();
/////////
SqlConnection cnn0006 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd0006 = new SqlCommand();
cmd0006.Connection = cnn0006;
cnn0006.Open();
cmd0006.CommandText = "Insert into invoice_k_xml (patientid,k_jarahi,k_bihooshi,k_otagh_amal) SELECT patientid,(dbo.k_usage.k_jarahi * dbo.k_jarahi_cost.cost_bime),(dbo.k_usage.k_bihoos hi * dbo.k_bihooshi_cost.cost_bime),(dbo.k_usage.k_otag hAmal * dbo.k_otaghAmal_costz.cost_bime) FROM dbo.patients INNER JOIN dbo.k_usage ON dbo.patients.id = dbo.k_usage.patientid CROSS JOIN dbo.k_otaghAmal_costz CROSS JOIN dbo.k_jarahi_cost CROSS JOIN dbo.k_bihooshi_cost WHERE dbo.patients.bime_status = 2";
cmd0006.ExecuteNonQuery();
cnn0006.Close();
////////

}
}
}


دیتابیس رو تغییر دادم و اون شرایطی که می خواستم رو درست کردم . کلا تمامی اطلاعات رو از یک کوری می خونم . با استفاده از try , catch هم مشکل رو حل کردم . یعنی اگه مقدار داشته باشه قسمت try انجام میشه ، و اگه نداشته باشه پس قسمت catch انجام میشه .

الان همه چیز خوبه و OK هست . Error هم نداریم .

فقط یک مشکل دارم .

در خط 103 کدم که در زیر اومده ، 2 تا متغیر از نوع int64 دارم .

listBox1.Items.Add("<BILL_SPEC AA=\"" + 160 + "\" AB=\"" + txtProNet1.Text + "\" AC=\"" + conz + "\" AD =\"" + invoice_all + "\" AE=\"" + invoice_all_90 + "\" AF=\"" + string.Empty + "\">");

invoice_all و invoice_all_90

هر بار که حلقه من اجرا میشه ، کد های زیر انجام می شوند و مقدار مالی حساب میشه


s_invoice_all = jarah_all + bihooshi_all + otagh_all + daroo_all + tajhiz_all + lenz_all + navar_all;
sum += s_invoice_all;
s_invoice_all_90 = sum * 90 / 100;

invoice_all = Convert.ToString(sum);
invoice_all_90 = Convert.ToString(s_invoice_all_90);



حالا من چه طوری می توانم invoice_all و invoice_all_90 که دارای مقدار عدد هستند رو در خارج از حلقه for و در خطوط پایین تر از حلقه for هستند رو در خطوط بالاتر فراخوانی کنم . . invoice_all , invoice_all_90 در خطوط 274 مقدار دهی شدند، اما من می خواهم مقدارشان را در خط 103 فراخوانی کنم .

چه طوری این ممکن هست ؟

aslan
دوشنبه 26 تیر 1391, 14:39 عصر
سلام

یک راه سریع این میتونه باشه که کدهای سطر 134 را بیاری داخل حلقه FOR بهمراه یک مثلا FLAG ( که بیرون از حلقه FOR مقدار دهی شده)

...
..



bool FLAG=true;
for (int i = 0; i < conz; i++)
{

..
..

jarah_all = Convert.ToInt64(Cost_Jarah_bime) + Convert.ToInt64(Cost_Jarah_bime);
bihooshi_all = Convert.ToInt64(Cost_Bihooshi_bime) + Convert.ToInt64(Cost_Bihooshi_bime);
otagh_all = Convert.ToInt64(Cost_OtaghAmal_bime) + Convert.ToInt64(Cost_OtaghAmal_bime);
daroo_all = Convert.ToInt64(Daroo_bime) + Convert.ToInt64(Daroo_bime);
tajhiz_all = Convert.ToInt64(Tajhiz_bime) + Convert.ToInt64(Tajhiz_bime);
lenz_all = Convert.ToInt64(Lenz_bime) + Convert.ToInt64(Lenz_bime);
navar_all = Convert.ToInt64(navar_ghalb) + Convert.ToInt64(navar_ghalb);


s_invoice_all = jarah_all + bihooshi_all + otagh_all + daroo_all + tajhiz_all + lenz_all + navar_all;
sum += s_invoice_all;
s_invoice_all_90 = sum * 90 / 100;

invoice_all = Convert.ToString(sum);
invoice_all_90 = Convert.ToString(s_invoice_all_90);

if(FLAG)
{
listBox1.Items.Add("<?XML version=\"" + xmlz + "\" encoding=\"" + encode + "\" ?>");
listBox1.Items.Add("<BILL_SPEC AA=\"" + 160 + "\" AB=\"" + txtProNet1.Text + "\" AC=\"" + conz + "\" AD =\"" + invoice_all + "\" AE=\"" + invoice_all_90 + "\" AF=\"" + string.Empty + "\">");

FLAG=false;

}
counter = i + 1;
listBox1.Items.Add("<FORM_ADS BA=\"" + counter + "\" BB=\"" + 103 + "\" BC=\"" + serial_daf + "\" BD=\"" + empty + "\" BE=\"" + tamin_type + "\" BF=\"" + daf_date_Total + "\" BG=\"" + meli_code + "\" BH=\"" + idz + "\" BI=\"" + lnamez + "\" BJ=\"" + fnamez + "\" BK=\"" + empty + "\" BL=\"" + sex + "\" BM=\"" + nesbat_code + "\" BN=\"" + marriage + "\" BO=\"" + birthday_total + "\" BP=\"" + date_p_total + "\" BQ=\"" + date_t_total + "\" BR=\"" + nezam_no + "\" BS=\"" + empty + "\" BT=\"" + 1 + "\" BU=\"" + empty + "\" BV=\"" + 1 + "\" BW=\"" + 1 + "\" BX=\"" + code_tashkhis_aval + "\" BYY=\"" + nazer_serial + "\" BZ=\"" + cost_total + "\" CB=\"" + code_tashkhis_dovom + "\" EB=\"" + code_jarahi + "\" BAA=\"" + sahm_bime + "\" BAB=\"" + 0 + "\" BAC=\"" + 0 + "\" BAD=\"" + 0 + "\" BAD=\"" + 0 + "\" BAE=\"" + 0 + "\" BAF=\"" + sahm_bimar + "\">");
//listBox1.Items.Add(" <GLOBAL GA=\"" + empty + "\" GB=\"" + empty + "\" GC=\"" + empty + "\" GD=\"" + empty + "\" GE=\"" + empty + "\" />");
//listBox1.Items.Add(" <HOTELING HA=\"" + empty + "\" HB=\"" + empty + "\" HC=\"" + empty + "\" HD=\"" + empty + "\" HE=\"" + empty + "\" HF=\"" + empty + "\" HG=\"" + empty + "\" />");
//listBox1.Items.Add("");
//listBox1.Items.Add(" <PAR_HEAD PA=\"" + empty + "\" PB=\"" + empty + "\" PC=\"" + empty + "\" PD=\"" + empty + "\" PE=\"" + empty + "\" PF=\"" + empty + "\" />");
//listBox1.Items.Add("");
listBox1.Items.Add("<PHA_HEAD JA=\"" + 1 + "\" JB=\"" + 1 + "\" JC=\"" + 2 + "\" JD=\"" + 1 + "\" JE=\"" + Daroo_bime + "\" JF=\"" + daroo90 + "\" />");
if (Convert.ToInt32(Lenz_bime) != 0)
{
listBox1.Items.Add("<PHA_HEAD JA=\"" + 1 + "\" JB=\"" + 2 + "\" JC=\"" + 2 + "\" JD=\"" + 1 + "\" JE=\"" + Lenz_bime + "\" JF=\"" + lenz90 + "\" />");
}
listBox1.Items.Add("<PHA_HEAD JA=\"" + 1 + "\" JB=\"" + 3 + "\" JC=\"" + 2 + "\" JD=\"" + 1 + "\" JE=\"" + Tajhiz_bime + "\" JF=\"" + tajhiz90 + "\" />");
if (Convert.ToInt32(navar_ghalb) != 0)
{
listBox1.Items.Add("<SAR_HEAD KA=\"" + 1 + "\" KB=\"" + 3 + "\" KC=\"" + 0 + "\" KD=\"" + 0 + "\" KE=\"" + 70039 + "\" KF=\"" + 0 + "\" KG=\"" + 1 + "\" KH=\"" + navar_ghalb + "\" KI=\"" + navar_ghalb90 + "\" />");
}
listBox1.Items.Add("<OR DA=\"" + Cost_Jarah_bime + "\" DB=\"" + 0 + "\" DC=\"" + Cost_Bihooshi_bime + "\" DD=\"" + 0 + "\" DE=\"" + 0 + "\" DF=\"" + 0 + "\" DG=\"" + 0 + "\" DG=\"" + 0 + "\" DH=\"" + 0 + "\" DI=\"" + 0 + "\" DJ=\"" + 0 + "\" DK=\"" + 0 + "\" DL=\"" + 0 + "\" DM=\"" + Cost_OtaghAmal_bime + "\" DN=\"" + jarah_bihooshi_amal + "\" DO=\"" + jarah_bihooshi_amal90 + "\"");
listBox1.Items.Add("</FORM_ADS>");

....
}

NasimBamdad
دوشنبه 26 تیر 1391, 14:49 عصر
فکر کنم با این کار هر سری که حلقه FOR انجام میشه ، اون سطر ها به ListBox اضافه می شوند ، که این کار درست نیست . این کد ها فقط یکبار و در اولین خطوط ListBox لود می شوند .

درست نمی گم ؟

NasimBamdad
دوشنبه 26 تیر 1391, 14:52 عصر
فکر کنم روش شما درست جواب بده ، بعد از اینکه یکبار انجام شد ، دیگه Flag = false میشه و دیگه اجرا نمیشه . میرم تستش کنم .

مرسی !

NasimBamdad
دوشنبه 26 تیر 1391, 15:33 عصر
انجام دادم . Error نداد ، اما اون خطوط در خط اول ListBox اضافه می شوند ، ولی مقدار رو از خط 207 نمی خونه

aslan
دوشنبه 26 تیر 1391, 16:29 عصر
به کدهای ارسالی من دقت کنید
متغیرهاتون از جمله invoice_all و invoice_all_90 قبل از ADD شدن در ListBox1 مقدار گرفته اند ( قبل از سطر 24 کد ارسالی ) بنابر این در صورتیکه مقدار داشته باشند و FLAG=true باشد به ListBox1 اضافه خواهند شد

NasimBamdad
دوشنبه 26 تیر 1391, 18:25 عصر
درسته ، کامل ندیده بودم . مرسیییییییییییییییییییییی

همه چی آرومه . ممنون از تمام دوستان که در این تاپیک من رو کمک کردند !!

واقعا ممنونم !