PDA

View Full Version : کد فاکتوری که بر 6 رقم سمت چپ بر حسب تاریخ بروز ثبت بشه



imani1983
یک شنبه 06 تیر 1389, 22:17 عصر
سلام می خواستم شماره فاکتور زنی درست کنم که با استفاده از Shamsi.dll شش رقم سمت چپ بر حسب تاریخ اون روز بدون اسلش(/) ثبت کنه و4 رقم بعدی هم با کلیک بر روی باتون بره از پایگاه داده بزرگترین شماره فاکتوری که امروز ثبت شده را بیاره وقرار بده مثال:
برای روز شش تیر ماه 8904060001
برای روز هفت تیر ماه 8904070001

من فعلاً این کاررو به اینجا رسوندم ولی خطا زیاد داره می خوام کمک کنید%

کد C#

private void button7_Click(object sender, EventArgs e)
{
int a = Shamsi.Mah;
int b = Shamsi.Roz;
string c = textBox5.Text;
if (a < 10 && b < 10)
{
c = Shamsi.Sal.ToString() + "0" + a + "0" + b;
}
else
if (a < 10 && b > 10)
{
c = Shamsi.Sal.ToString() + "0" + a + b;
}
else
if (a > 10 && b < 10)
{
c = Shamsi.Sal.ToString() + a + "0" + b;
}
else
if (a > 10 && b > 10)
{
c = Shamsi.Sal.ToString() + a + b;
}
//
SqlConnection conn1 = new SqlConnection();
SqlCommand Command1 = new SqlCommand();
conn1.ConnectionString = "Data Source=localhost;Initial Catalog=uocosoft_db;Integrated Security=True";
Command1.Connection = conn1;
conn1.Open();
Command1.CommandText = "SELECT MAX(CodeFactor)AS maxs FROM Factor_xarid where datafactor=@datafactor";
Command1.Parameters.AddWithValue("@datafactor",Convert.ToString(Shamsi.date));
object maxs = Command1.ExecuteScalar();
if (maxs == DBNull.Value)
{
textBox5.Text = Convert.ToString(maxs) + Convert.ToInt32(1);


}
else
{
textBox5.Text = c + "001";
}
conn1.Close();
}


کد دلفی

procedure TForm11.BitBtn6Click(Sender: TObject);
var
s1,s2,s3:string;
s:integer;
begin
solardatepicker1.Text:=printnormal;
cb1.Caption:='ÂíÇ ÞÕÏ ÏÇÑíÏ ãÈáÛ æíÒíÊ ÑÇ æÇÑíÒ äãÇÆíÏ¿';
edit11.Text:=(copy(printnormal,9,2));
edit8.Text:=(copy(printnormal,6,2));
edit10.Text:=(copy(printnormal,3,2));
s:=strtoint(edit10.text+edit8.text+edit11.text);
with adodataset1 do
begin
close;
commandtext:='SELECT MAX(numpaziresh)AS maxs FROM visit_numeric where datapaziresh='+QuotedStr(printnormal);
open;
if (adodataset1.FieldValues['maxs']>null) then
edit7.Text:=inttostr(s)+copy(adodataset1.FieldValu es['maxs']+1,7,4);
if (adodataset1.FieldValues['maxs']=null) then
edit7.Text:=inttostr(s)+'0001';
end;
end;

mmd2009
یک شنبه 06 تیر 1389, 22:22 عصر
خب دوست عزیز شکا چرا خودتون یک کلاس درست نمیکند که این کارو براتون انجام بده و نیازی نباشه از یک dll استفاده بکنید؟؟!!

کافیه مقدار تاریخ رو از کلاس فراخوانی کنید سپس با دستور max بزرگترین مقدار رو از بانک بخونید و سپس با هم جمعش کنید و هر بلایی که خواستید اون موقع سرش بیارید :چشمک:

mmd2009
یک شنبه 06 تیر 1389, 22:34 عصر
البته منظور از جمع ، جمع رشته ای است.

imani1983
دوشنبه 07 تیر 1389, 01:43 صبح
خب دوست عزیز شکا چرا خودتون یک کلاس درست نمیکند که این کارو براتون انجام بده و نیازی نباشه از یک dll استفاده بکنید؟؟!!

کافیه مقدار تاریخ رو از کلاس فراخوانی کنید سپس با دستور max بزرگترین مقدار رو از بانک بخونید و سپس با هم جمعش کنید و هر بلایی که خواستید اون موقع سرش بیارید :چشمک:



من نمی دونم چطوری کلاس درست کنم مشکل من اینست برای شروع یک مثال بزنید :عصبانی++:

mmd2009
دوشنبه 07 تیر 1389, 12:24 عصر
با سلام

اینم یک مثال ساده

غلامرضا شریفی
دوشنبه 07 تیر 1389, 18:30 عصر
ماه و روز را كه بدست اوردي در صورت كوچكتر از ده بودن هم كه صفر اضافه كردي

mid(sal,3,2)
را هم بگير اينها را با & به هم بچسبان در 10000 ضرب كن بعد از ان

با کلیک بر روی باتون بره از پایگاه داده بزرگترین شماره فاکتوری که امروز ثبت شده را بیاره
+ حاصل ضرب فوق كن