ورود

View Full Version : سوال: درج بین دو تاریخ



hsn_abieteh
شنبه 08 مرداد 1390, 22:52 عصر
سلام
همانطور که در عکس ديده ميشه دو تا تاريخ از کاربر مي گيريم
دوستان چطور ميشه وقتي دوتا تاريخ از کاربر گرفتيم editbox ها خودش از تاريخ اول تا تاريخ دوم کامل بشه
کسي هست بتونه راهنمايي کنه؟

BORHAN TEC
یک شنبه 09 مرداد 1390, 10:26 صبح
شما در اینجا چهار تا edit گذاشته اید که تاریخ های میانی در آنها درج می شود. خوب اگر فاصله بین تاریخ ها 100 روز باشد چی؟
در ضمن اگر هم این مشکل هم با ListBox ویا کامپوننت های دیگر حل کرده اید. لطفاً کامپوننت و یا ماژولی که در برنامه برای تاریخ شمسی به کار برده اید را معرفی کنید تا بتوانیم راهنمایی کنیم.

hsn_abieteh
یک شنبه 09 مرداد 1390, 17:02 عصر
درست میگین. اصلا این کاری که من می خوام بکنم منطقی هم نیست. بهتره کامل تر بگم قصدم چیه
آقای عشایری اصل کاری که من می خوام بکنم چیزی مثل شکل زیر هستش. اطلاعات داخل بانک اکسس قرار هست که اینگونه ذخیره بشه
http://ir.webuda.com/images/58ac8403eb9c.jpg
طرحی که من ریختم اول از کاربر میخوام تا داخل یک تکست باکس کل اسامی افراد رو یکی یکی وارد کنه. و یک دکمه گذاشتم تا هر بار که کلیک کرد نام اون فرد داخل یک combobox ذخیره بشه. پس اینجوری مشخص میشه تعداد چند نفرن. و میشه combobox رو شمرد و افراد مورد نظر هم که داخل combobox مشخص میشن دیگه.

http://ir.webuda.com/images/3fcd68e5673f.jpg

حالا اون combobox رو در فرم اصلی قرار میدم و کاربر میتونه یکی یکی افراد مورد نظرش رو انتخاب کنه و داخل بانک درج کنه. و تاریخ شروع هم در همون صفحه اصلی از کاربر گرفته میشه.
مثلا اگر کاربر تاریخ شروع رو 01/05/1390 داد جدول مثل بالا تنظیم بشه.
نظر شما چیه؟ چطوری اینکارو انجام بدم؟
خودم فکر میکنم اول کل combobox رو در جدول با دستور insert کاربر یکی یکی درج کنه.(چون افراد مشخص هستند ولی ترتیبشون رو باید خود کاربرمون مشخص کنه) بعد یک دکمه قرار بدم که تاریخ رو شروع کنه به درج کردن از اولین رکورد تا پایان فایل(eof)
راستش خودم الگوریتمی که تو ذهنم هست و رو برگه نوشتم شبیه زیر هست ولی احساس می کنم راه حل بهتری باید باشه برا انجام اینکار.
اول که اون تاریخ اول رو که کاربر بهمون میده رو با دستور copy می ریزیم داخل سه تا متغیر به تفکیک روز و ماه و سال
یعنی اگر کاربر تاریخ رو 01/05/1390 وارد کنه میشه(day:=01; month:=05; year:=1390)

تعداد c:=combobox;
x:=0;
while x<c do
if day<32 and month<7 then
begin
day:=day+1;
label.caption:=year+'/'+month+'/'+day;
;(adoquery1.sql.text:='insert into tablename(date1) values(:l0
;adoquery1.sql.parameters[0].values:=lable.caption
;adoquery1.execsql
if day=32 then
begin
;day:=1; month:=month+1
; end
;x:=x+1
;end

else if day<32 and month>6 then
begin
;day:=day+1
if day=31 then
begin
;day:=1
;month:=month+1
if month = 13 then
begin
;year:= year+1
;month:=1
;end
;label.caption:=year+'/'+month+'/'+day
;(adoquery1.sql.text:='insert into tablename(date1) values(:l0
;adoquery1.sql.parameters[0].values:=lable.caption
;adoquery1.execsql
;end

;x:=x+1
;next

راه حل بهتری به نظرتون نمیرسه؟
تازه این هم که من نوشتم خیلی کار داره تا یه چیز درست از آب در بیاد:اشتباه:

hsn_abieteh
پنج شنبه 13 مرداد 1390, 23:43 عصر
procedure THistoryset.Button3Click(Sender: TObject);
var
s,monthh:string;
count,day,month,year,c,x:integer;
begin
s:=dateedit1.Text;
c:=0;

day:=StrToInt(copy(s,9,2));
month:=StrToInt(copy(s,6,2));
year:=StrToInt(copy(s,3,2));


ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM afsarjaneshin');
ADOQuery1.Open;

while not ADOQuery1.Eof do
begin
c:=c+1;
ADOQuery1.Next;
end;

x:=0;
edit4.Text:=inttostr(c);

while x < c do
begin
if (day < 32) and (month < 7) then
begin
day:=day+1;

if day=32 then
begin
day:=1; month:=month+1;
end
end
else if (day<32) and (month>6) then
begin
day:=day+1;
if day=31 then
begin
day:=1; month:=month+1;
if month = 13 then
begin
year:= year+1; month:=1;
end;
end;
end;
x:=x+1;
end;

edit1.text:=inttostr(year) + '/' + inttostr(month) + '/' + inttostr(day);

end;
اون چیزی که می خواستم رو به این شکل جواب گرفتم.
فقط چون عدد هست اون صفرها رو برنمی گردونه و تاریخ رو به این شکل نمایش میده
مثلا:2/5/90
تو دلفی تابعی هست که مستقیم بهش بگم قبل از کاراکتر چهارم یک صفر بذار؟