一、 
数据库是Access的,现在要判断里面的数据表的字段类型,比如memo,char(n)啥的
如果 字段 是 整型
  则 A='i'!必须能判断出字符型的大小如Char(n)的n要判断得出来? 用了Field.datatype,可是不知道怎么拿来判断二、
DBgrid编辑怎么让它能编辑啊? 还有Dbedit那些的。都设了Dgediting=true,readonly=fasle 还是不行,query又没哪个选项可以设置的,奇怪了,只能看不能改了?三、QuickReport怎么动态分页?
可以动态地创建报表,可是分不了页,怎么判断才行?
能不能使用户能在报表上加自己的文字之类的? (就是报表创建完后)附加题: 怎么使窗体内的控件大小随窗口的缩放按比例缩放?谢谢

解决方案 »

  1.   

    1.大小,adoquery1.fields[0].Size;或者adoquery1.fieldByname('abc').Size;
    2.datatype
    if adoquery1.fields[0].DataType = ftinteger then
      showmessage('ok');
     其他的datatype:ftUnknown, ftString, ftSmallint, ftInteger, ftWord,
        ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime,
        ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo,
        ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString,
        ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob,
        ftVariant, ftInterface, ftIDispatch, ftGuid3.query又没哪个选项可以设置的
      如果是query则把RequestLive置为true
    4.附加题: 怎么使窗体内的控件大小随窗口的缩放按比例缩放?
      anchors属性的akLeft,akTop,akRight,akBottom都置为ture;
    5.能不能使用户能在报表上加自己的文字之类的
      放个qrLabel不就行了
      

  2.   

    谢谢 如果是query则把RequestLive置为true-- 可是它不让你设,会出错,就只要这一个选项吗? 奇怪就是不行5.能不能使用户能在报表上加自己的文字之类的
      放个qrLabel不就行了-- 可是它报表会充满一整页啊? 我放上去其他控件等到运行的时候就淹了?还有动态分页不知道怎么实现?
      

  3.   

    如果是query则把RequestLive置为true-- 确实会出错,会说 invalid use of key '...' 都不知道是啥
      

  4.   

    确实会出错,会说 invalid use of key '...' 都不知道是啥--database连接没有问题吧还有动态分页不知道怎么实现?只能是,满足条件后调用 QuickRep1.NewPage;
      

  5.   

    --database连接没有问题吧==数据库没问题,都行的,可以连上,也可以查看,插入,
    只差一个DbControls..的不能编辑了,我都没搞懂哪错了还有动态分页不知道怎么实现?只能是,满足条件后调用 QuickRep1.NewPage;
    ==我的程序大概就这样,分页还是错的啊。。for i:=0 to query1.FieldCount-1 do
             begin
              mylabel:=tqrlabel.Create(self);
              mylabel.Parent:=qrband2;
              with mylabel do
              begin
                 top:=0;
                 AutoSize:=false;
                 left:=myleft;
                 height:=qrband2.Height;
               //  hrep:=hrep+height;             // ........
                 font.Name:='宋体';
                  caption:=query1.Fields[i].FieldName;
                 alignment:=tacenter;
              end;   // with          // 表格内容
              mytext:=tqrdbtext.Create(self);
              mytext.Parent:=qrband3;
              with mytext do
               begin
                 top:=0;
                 AutoSize:=false;//一定要设置
                 left:=myleft;
                 width:=getFieldWidth(query1.Fields[i]);
                 dataset:=query1;
                  DataField:=query1.Fields[i].FieldName;
                 alignment:=tacenter;
               end;    //with
                 myleft:=myleft+getFieldWidth(query1.Fields[i]);           query1.Next;
          //    hrep:=height+hrep; //.............////////////////// 一加入这段想要分页,就错了////////////那怎么判断啊?
          {   if hrep>quickrep1.height then            //分页
               begin
               quickrep1.NewPage;
                 hrep:=qrband1.Height;           // 高度重新开始
               end;  }end; //for
     quickrep1.Page.Orientation:=poPortrait;
     quickrep1.DataSet:=query1;       
    // 这个不理解,不加这句只打印出一行,上面不是已经循环过了吗?为什么还要这句? quickrep1.Preview;============差不多上面的程序是可以输出一页,但如果数据集记录多的话,无法换页啊!一换页就是错的。。
      

  6.   

    借地方再问下:为什么我的Delphi里f:=21.012250033544;
    showMessage(formatFloat('0.00',f)); 结果: f=21,01         
    怎么让它用小数点. 来分割啊。。以前都不会,不知道什么时候就这样了
      

  7.   

    我知道的就是把RequestLive置为true,别的就只能等别人的了
    关于分页的,看不懂你写的,再想想newPage放在什么地方合适吧f:=21.012250033544;
    showMessage(formatFloat('0.00',f));我这里没问题
    可能你改了delphi的ide的什么设置了
      

  8.   

    f:=21.012250033544;
    showMessage(formatFloat('0.00',f));我这里没问题
    可能你改了delphi的ide的什么设置了==就是啊,我都奇怪了,连VB里也是逗点显示了,真奇怪,原来好像不会,不知道什么时候就会了