ورود

View Full Version : مشکل در جمع ستون ها



tefos666
شنبه 11 آبان 1387, 20:10 عصر
سلام دوستان

من یک فرم دارم که در نهایت باید یک کد تولید کند یک عدد ثابت دارم 6

یک کد تولید کننده سه رقمی (نهایتا 999)

یک کد محصول دو رقمی (نهایتا 99)

یک تعداد که نهایتا (9999999) میباشد یعنی هفت رقمی

حالا من باید یک کد تولید کنم

تعداد + کد محصول + کد تولید کننده + 6

http://barnamenevis.org/forum/attachment.php?attachmentid=25090&stc=1&d=1225558447

چندتا مشکل دارم امیدوارم با کمک شما دوستان برطرف بشه

من وقتی کد تولید کننده وارد میشه جدول رو فیلتر میکنم و وقتی کد محصول فیلتر بیشتر و ریزتر

اینطوری مشخص که تولید کننده A محصول B را خریداری کرده و برای سفارش مجدد باید دکمه

سفارش بعدی زده شود در غیر اینصورت سفارش جدید ثبت گردد

حالا من باید نتیجه [از] را در صورتی که آن محصول نباشد از 1 شروع کنم و با فرمت همان 10000000 در [تا] ذخیره کنم. یعنی اگر مثلا تولید کننده با کد 103 از محصولی با کد 10 به تعداد 8 عدد داشت خروجی فیلد [از] من به صورت زیر گردد
61031010000001 [فیلد از]
61031010000008 [فیلد تا]

امیدوارم تا اینجا متوجه کاری که میخوام بکنم شده باشین

حالا در سفارش بعدی این عدد باید در فیلد [از] نشسته و با تعداد جدید در فیلد [تا] ذخیره شود
من یه مقدار با تبدیل رشته و عدد مشکل دارم - فیلدها از نوع استرینگ هستش

من فرمولم اینه : (برای اینکه عدد ها از آخر به اول بیاد از 10000000 استفاده میکنم)





dm.qrmax.Close;
dm.qrmax.SQL.Clear;
dm.qrmax.SQL.Add('select max (ta)as ta from nahal where idt='+QuotedStr( Edit_id_tolid.Text)+' and idm='+QuotedStr( Edit_id_mahsol.Text)+' ');
dm.qrmax.Open;
DM.dsnahal.DataSet.Insert;
DM.dsnahal.DataSet.FieldByName('idt').AsString:=Ed it_id_tolid.TEXT;
DM.dsnahal.DataSet.FieldByName('idm').AsString:=Ed it_id_mahsol.TEXT;
DM.dsnahal .DataSet .FieldByName('tarikh').AsString :=Edit_tarikh.Text ;
DM.dsnahal .DataSet .FieldByName('mojavez').AsString :=edit_mojavez .Text ;
DM.dsnahal .DataSet .FieldByName('payeh').AsString :=Edit_payeh .Text ;
DM.dsnahal.DataSet.FieldByName('ostan').AsString:= ComboBox1.Text;
DM.dsnahal.DataSet.FieldByName('ragham').AsString: =Edit_ragham .Text;
DM.dsnahal.DataSet.FieldByName('tedad').AsString:= Edit_tedad.Text;
//az

s2:=DBGrid4.Fields[0].AsString;
dm.dsnahal.DataSet.FieldByName('az').AsString:= s2;

//ta
تو اینجا مشکل دارم هر تبدیلی هم زدم جواب نداد تو شکل معلومه جای جمع عددی جمع رشته ای میشه
dM.dsnahal.DataSet.FieldByName('ta').AsString:=s2+ Edit_tedad.Text;
//DM.dsnahal.DataSet.Post;






این کد رو برای سفارش جدید زدم درست کار کرده
var
s:Integer;
begin

DM.dsnahal.DataSet.Insert;
DM.dsnahal.DataSet.FieldByName('idt').AsString:=Ed it_id_tolid.TEXT;
DM.dsnahal.DataSet.FieldByName('idm').AsString:=Ed it_id_mahsol.TEXT;
DM.dsnahal .DataSet .FieldByName('tarikh').AsString :=Edit_tarikh.Text ;
DM.dsnahal .DataSet .FieldByName('mojavez').AsString :=edit_mojavez .Text ;
DM.dsnahal .DataSet .FieldByName('payeh').AsString :=Edit_payeh .Text ;
DM.dsnahal.DataSet.FieldByName('ostan').AsString:= ComboBox1.Text;
DM.dsnahal.DataSet.FieldByName('ragham').AsString: =Edit_ragham .Text;
DM.dsnahal.DataSet.FieldByName('tedad').AsString:= Edit_tedad.Text;
//az
dm.dsnahal.DataSet.FieldByName('az').AsString:='6' +Edit_id_tolid.Text+Edit_id_mahsol.Text+IntToStr(1 0000001);
DBGrid1.DataSource:=DM.dsnahal;

//ta
s:=10000000+StrToInt(Edit_tedad.Text);
DM.dsnahal.DataSet.FieldByName('ta').AsString:='6' +Edit_id_tolid.Text+Edit_id_mahsol.Text+IntToStr(s );
DM.dsnahal.DataSet.Post;

end;

tefos666
دوشنبه 13 آبان 1387, 00:50 صبح
دوستان اینقدر کسی جواب نداد تا خودم صورت مساله رو حل کردم - البته اگر بعدا مشکل دار نشه راه حل رو مینویسم اگر کسی مشکل منو داشت کمکش بشه - اگر هم مشکل داره اساتید اهل فن بگن . :گیج:

واسه سفارش جدید


//az
dm.dsnahal.DataSet.FieldByName('az').AsFloat :=StrToFloat ('6'+Edit_id_tolid.Text+Edit_id_mahsol.Text+IntToS tr(10000001))-10000000;
DBGrid1.DataSource:=DM.dsnahal;

//ta
DM.dsnahal.DataSet.FieldByName('ta').AsFloat:=StrT oFloat( '6'+Edit_id_tolid.Text+Edit_id_mahsol.Text+IntToSt r(10000001))-10000000+StrToInt( Edit_tedad.Text);
DM.dsnahal.DataSet.Post;



واسه سفارش بعدی



//az

s2:=DBGrid4.Fields[0].AsString;
dm.dsnahal.DataSet.FieldByName('az').AsString:= s2;

//ta
dM.dsnahal.DataSet.FieldByName('ta').AsFloat:=StrT oFloat(s2)+StrToInt(Edit_tedad.Text);
DM.dsnahal.DataSet.Post;
DBGrid1.DataSource:=DM.dsnahal;


نتیجه خروجی

http://barnamenevis.org/forum/attachment.php?attachmentid=25137&stc=1&d=1225662555