سلام یه سوال
من تو بانکم چندتا فیلد دارم که از نوع کاراکتر یا نامبره
میخوام اونا رو ماسک کنم به این صورت که مثلا فیلد a مقدارش 00000 باشه و وقتی کاربر عدد 1 رو وارد میکنه مقدار فیلد 00001 بشه(یعنی عدد از سمت راست اضافه بشه)؟
سلام یه سوال
من تو بانکم چندتا فیلد دارم که از نوع کاراکتر یا نامبره
میخوام اونا رو ماسک کنم به این صورت که مثلا فیلد a مقدارش 00000 باشه و وقتی کاربر عدد 1 رو وارد میکنه مقدار فیلد 00001 بشه(یعنی عدد از سمت راست اضافه بشه)؟
می تونی تو بیفر پست دیتا بیس کدتو بنوبیسی before post
یا از کنترل های مسک استفاده کنی
سوالت کمی کنگ
منظورم اینه که وقتی رکورد جدید ایجاد میکنم dbedit1 که به فیلد name لینک شده مقدارش 5 تا صفر باشه و وقتی کاربر عدد رو وارد میکنه بجای اون صفرها قرار بگیره
مثلا وقتی عدد 123 رو وارد میکنه مقدار dbedit بشه 00123 یا وقتی عدد 1599 رو وارد میکنه عدد بشه 01599
همین طور اینکار در dbgrid امکان پذیر باشه
سلام
ساده ست اگر فيلد شما از نوع char باشه كافي هست با عددي كه مي خواي جمع كني و اگر از نوع int هم باشه فرقي نداره اما توي ديتابيس صفر قبل از عدد همونطور كه همه ميدونيم لحاظ نميشه ولي واسه نمايشش ميتوني تعداد صفري رو كه مي خواي توي مثلا edit قبل از عدد اضافه كني
من دارم برای یه شرکتی برنامه مینویسم که هر فیلدی اندازه مشخص داره مثلا "حساب سی"با طول 13 و "شماره ردیف" با طول 5 و .... که مثلا در فیلد "شماره ردیف" کاربر از 1 شروع میکنه و عدد 1 رو وارد میکنه ولی در بانک باید 00001 ثبت بشه و .... اینکار بخاطر اینه که وقتی در آخر میخوام بانک رو به یک فایل txt تبدیل کنم این عدد ها به اون صورتی که گفتم ذخیره بشه 0001 و 00002 و 00012354 و ......
چه راهنمایی می فرمائید
شما برای این کار باید ابتدا تعداد کارکترهای اون مقدار رو بدست بیارید و سپس به تعداد باقی مانده صفر به رشته مورد نظر اضافه کنید.
یا حق
بلهدوست عزیز شما میخواین دیسکت پرداخت بانک درست کنید ؟؟!
لطفا راهنمایی کامل کنید
توي رويداد BeforPost بنويس :
:= Format('%4.4d',[strtoint(Edit1.text)])
اگه اعداد الان تو بانك اطلاعاتي هستند تو رويداد OnGetText مي توني دستور بالا رو بنويسي
ويا از كد SQL زير استفاده كنيد
Select Right('00000000000' + LTRIM (STR(NumricField)) , 10) as XX from Table
اگر درست حدس زده باشم شما میخواین فایل دیسکت بانک صادرات رو درست کنید.من همچین برنامه ای رو نوشتم.
اولا شما در مورد ردیف هر رکورد کاری که باید بکنید اینه که ردیف رو در ریپورتتون تعریف کنید تا هر چندتا رکورد داشتین خودش براتون بزنه.یعنی مثلا در فست ریپورت باید LINE# رو اول هررکورد بزارین با فرمت #0000
برای سایر فیلداتون مثل مبلغ پرداختی هم باید موقع ورود مبلغ به سیستم صفرها اضافه بشن.در رویداد OnExit ادیت طول مبلغ چک میشه و به مقدار تفاضلش با 13 عدد صفر رو جایگزین کنید.
میتونم خواهش کنم این برنامه ای که نوشتید رو برام بگذارید یا یک دمویی از کدهای اونو بگذارید چون فرصتی که به من برای طراحی این برنامه دادن خیلی کمه حسابی به این برنامه شما احتیاج دارماگر درست حدس زده باشم شما میخواین فایل دیسکت بانک صادرات رو درست کنید.من همچین برنامه ای رو نوشتم.
من از کد زیر برای تفاضل صفرها در رویداد onexit برای dbedit استفاده میکنم به نظر شما راه حل خوبیه یا راه کوتاه تر و بهتری دارید البته یه مشکلی هست اونم اینه که وقتی از این dbedit به dbedit دیگه میرم و بعد تغییرات رو در دیتابیس ذخیره میکنم صفرها ذخیره نمیشن!!!!!!
var
a: integer;
begin
a:=length(adotable1.FieldValues['shomare siba'] );
a:=13-a;
while a<>0 do begin
dbedit6.Text:='0'+dbedit6.Text;
a:=a-1;
end;
یه مشکل دیگه اینه که در تبدیل بانک به فایل متنی از کد ذیر استفاده میکنم ولی درست کار نمیکنه و صفرها رو درست نمیزنه :
procedure TfrmMain.Button1Click(Sender: TObject);
var
radif,siba,mablagh:string;
a,b,c,d,e,f: integer;
st:string;
outfile:textfile;
filename:string;
temp:string;
begin
savedialog1.FileName:=filename;
if savedialog1.Execute then
begin
filename:=savedialog1.FileName;
assignfile(outfile,filename);
rewrite(outfile);
adotable1.First;
while (adotable1.Eof=false) do
begin
if adotable1.FieldValues['code']<>null then
begin
//////radif/////////////
a:=length(adotable1.FieldValues['shomare redif'] );
a:=5-a;
while a>0 do begin
radif:=adotable1.FieldValues['shomare redif'];
radif:='0'+radif;
a:=a-1;
end;
/////////////////siba
b:=length(adotable1.FieldValues['shomare siba'] );
b:=13-b;
while b<>0 do begin
siba:=adotable1.FieldValues['shomare siba'];
siba:='0'+siba;
b:=b-1;
end;
/////////////////// mablagh
c:=length(adotable1.FieldValues['mablagh'] );
c:=15-c;
while c<>0 do begin
mablagh:=adotable1.FieldValues['mablagh'];
mablagh:='0'+mablagh;
c:=c-1;
end;
//temp:=adotable1.FieldValues['code']+adotable1.FieldValues['name']+adotable1.FieldValues['family'];
writeln(outfile,radif{+siba+mablagh+'0000000000000 00'});
adotable1.Next
end
else
adotable1.Next;
end;
closefile(outfile);
end;
end;
سلام
من این تابع را در بخش Sql براتون پیدا کردم.درست هم جواب میده.کافیه اونا ایجاد و به شکل زیر استفاده کنین.
CREATE Function SetZero(@N Bigint,@L Tinyint) Returns VarChar(255) As
Begin
Return Right(Replicate('0',20)+Convert(Varchar(20),IsNull (@N,0)),@L)
End
برای استفاده:
select setzero(5,100)
ممنونم ولی من در دلفی اصلا در مورد بانک اطلاعاتی کار نکردم و فقط در بخش مالتی مدیا ،فلش و گرافیک کار کردم این اولین کارمه. لذا نمیدونم چطور باید این کد sql رو وارد کردمن این تابع را در بخش Sql براتون پیدا کردم.درست هم جواب میده.کافیه اونا ایجاد و به شکل زیر استفاده کنین.
لطفا راهنمایی کنیید
بسیار ممنونم
شما کافیه تابع فوق را در کوئری آنالایزر بنویسید و اجرا بگیرید.
سپس توی دلفی رشته مربوط به دستور Sql را در یه Adoquery بنویسید.
مثال:
adoquery1.sql.text:='select *,setzero(10,4) from table1'
adoquery1.close
adoquery1.openاین تابع یه عدد و تعدای دامنه را از شما میپرسه و اون چیزی که شما میخاین را به شما میده