在ComboBox1中有选择的年份,ComboBox2有选择的月份。而在ComboBox3又有选择的年份,ComboBox4又有选择的月份。而要在另一个窗体中显示从ComboBox1的年月到ComboBox3年月中所有的月差(年份的选择不能超过12个月)是列出所有的月差月份!
请问应该如何建立数据库表月实现代码???
请问应该如何建立数据库表月实现代码???
解决方案 »
- DELPHI引用其它单元
- 关于 kbmMW 的 kbmMWTCPIPIndyMessagingServerTransport1.Subscriptions
- 如何判断鼠标点击的是GRIDEH的标题栏而不是表内的行?
- 怎样在导出到excell的时候把dbgrid中的颜色也复制出来?我以前的问题找不到了,所以重新提问
- 100分求解:如何能使得PrintDBGridEh打印时水平居中显示?
- ISxpress能否把整个MSSQL server打包进去?
- 关于文件类型关联的问题
- 菜鸟问题!--在线等待。
- 请教用过FAST REPORT的前辈,怎样设置打印出来的纸张大小
- 请问NMUDP这个控件应该怎么用
- 请问QUERY是不是不能处理bigint型的字段啊,我Query的结果中找不到bigint字段啊?
- 谁能帮我把这段C++的声明改成DELPHI的,谢谢
1.以下是ComboBox1与ComboBox2的onchange事件代码,你复制到你的程序.
2.加一个ListBox1控件.
3.将ComboBox3的onchange事件指向ComboBox1的onchange事件.
4.将ComboBox4的onchange事件指向ComboBox2的onchange事件.uses DateUtils;procedure TForm1.ComboBox1Change(Sender: TObject);
begin
if (ComboBox1.Text<>'') and (ComboBox3.Text<>'') then
if strtoint(ComboBox1.Text)>strtoint(ComboBox3.Text) then
messagebox(0,'开始的年份小于结束年份','错误',MB_ICONERROR)
end;procedure TForm1.ComboBox2Change(Sender: TObject);
var
rstr,estr:string;
i,j:integer;
begin
if (ComboBox1.Text<>'') and (ComboBox2.Text<>'')
and (ComboBox3.Text<>'') and (ComboBox4.Text<>'') then begin
rstr:=ComboBox1.Text+'-'+ComboBox2.Text+'-1';
estr:=ComboBox3.Text+'-'+ComboBox4.Text+'-1';
i:=MonthsBetween(strtodate(rstr),strtodate(estr)); if i>=12 then
messagebox(0,'选择的月份差大于12个月','错误',MB_ICONERROR)
else begin
for j :=1 to i-1 do
ListBox1.Items.Add(FormatdateTime('YYYY-MM',IncMonth(strtodate(rstr),j)));
end;
end;
end;
求出的所有月份为:
currentTime = ANow;
While currentTime <= Athen do
begin
中间的某一月 := CurrentTime;
CurrentTime := incMonth(currentTime,1);
end;sql:
用DateAdd,DateDiff等函数.具体看看帮助吧.
或者用MonthCalendar控件