在ComboBox1中有选择的年份,ComboBox2有选择的月份。而在ComboBox3又有选择的年份,ComboBox4又有选择的月份。而要在另一个窗体中显示从ComboBox1的年月到ComboBox3年月中所有的月差(年份的选择不能超过12个月)是列出所有的月差月份!
请问应该如何建立数据库表月实现代码???

解决方案 »

  1.   

    看看delphi中dateutils这个单元中的内容,是否对你有帮助
      

  2.   

    我来了!
    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;
      

  3.   

    谢谢了,我是在WIC平台中开发的!想参考 Thanks
      

  4.   

    MonthsBetween(ANow,AThen:TDateTime);求出两个日期值之间的所有月差;
    求出的所有月份为:
    currentTime = ANow;
    While currentTime <= Athen do
    begin
       中间的某一月 := CurrentTime;
       CurrentTime := incMonth(currentTime,1);
    end;sql:
    用DateAdd,DateDiff等函数.具体看看帮助吧.
      

  5.   

    干嘛不直接用两个DatetimePicker控件呢,直接将两个控件的时间值相减,再根据需要取出其中年或月或日。
    或者用MonthCalendar控件
      

  6.   

    先判断ComboBox2和ComboBox4的大小,然后更据结果判断是否需要给ComboBox1和ComboBox3的差值-1;