1Foxtable常用代码汇总1Col打开列窗口WithTables(员工).Cols(照片).OpenWindow().Cols(备注).CloseWindow()EndWith按钮或菜单2Col关闭列窗口WithTables(员工).Cols(照片).OpenWindow().Cols(备注).CloseWindow()EndWith按钮或菜单3Col移动列到指定位置WithTables(订单).Cols(日期).Move(0).Cols(客户).Move(1).Cols(产品).Move(2)EndWith按钮或菜单将日期、客户、产品移到前三列的位置4Col冻结列CurrentTable.Cols.Frozen=2按钮或菜单冻结前两列5Col取消冻结列CurrentTable.Cols.Frozen=0按钮或菜单6Col从Table中移除指定的列IfTables(订单).Cols.Contains(折扣)ThenTables(订单).Cols.Remove(折扣)EndIf按钮或菜单在订单表中移除折扣列7Col一次移除多列Tables(订单).Cols.Remove(折扣,金额)按钮或菜单8DataCol锁定某表某列DataTables(订单).DataCols(折扣).AllowEdit=False按钮或菜单9DataCol取消锁定某表某列DataTables(订单).DataCols(折扣).AllowEdit=True按钮或菜单10DataCol动态地修改表达式列的计算公式DataTables(订单).DataCols(金额).Expression=数量*单价DataTables(订单).DataCols(金额).Expression=数量*单价*(1-折扣)按钮或菜单Expression属性只对表达式列有效11DataCol返回列的名称ForEachdcAsDataColInDataTables(订单).DataColsOutput.Show(dc.Name)Next按钮或菜单列出订单表中所有列的名称12DataCol增加临时列,并可给临时列设置表达式DataTables(订单).DataCols.Add(金额,GetType(Double),[数量]*[单价]*(1-[折扣]))按钮或菜单通过代码增加的临时列,在重新打开项目文件后,将不复存在13DataCol删除临时列IfDataTables(订单).DataCols.Contains(金额)ThenDataTables(订单).DataCols.Delete(金额)EndIf按钮或菜单通过Add方法增加的临时列,可以用Delete方法删除14DataCol一列设公式,另列得结果Ife.DataCol.Name=第一列ThenIfe.DataRow.IsNull(第一列)Thene.DataRow(第二列)=NothingElsee.DataRow(第二列)=Eval(e.DataRow(第一列),e.DataRow)EndIfEndIf2DataColChanged事件假定希望根据第一列输入的计算公式,在第二列得出计算结果15DataRow删除行DataTables(订单).DataRows(0).Delete()按钮或菜单删除订单表中的第一行Delete会返回逻辑值,如果删除成功,则返回True,否则返回False16DataRow重新加载行DataTables(订单).DataRows(1).Load()按钮或菜单重新加载订单表的第二行17DataRow撤销修改DataTables(订单).DataRows(1).Load(False)按钮或菜单撤销对订单表第二行的修改18DataRowDataTable中增加一行WithDataTables(订单).DataRows.AddNew()'增加一行EndWith按钮或菜单19DataRow删除指定位置的行WithDataTables(订单).DataRows.Delete(0)'删除第一行EndWith按钮或菜单20DataRow清除所有行WithDataTables(单).DataRows.Delete(0)'删除第一行EndWith按钮或菜单21DataRow按日期列求月份DimdrAsDataRow=e.DataRowife.DataCol.Name=开始时间Thenifdr.IsNull(开始时间)=falseThendr(月)=dr(开始时间).MonthElsedr(月)=NothingEndIfEndIf表DataColChanged事件22DataRow新增行编号自动加1e.DataRow(编号)=e.DataTable.Compute(Max(编号))+1DataRowAdding事件假定表中有一个编号列,希望新增行的时候,编号列能够自动加1这个例子其实没有什么意义的,对于外部表使用自动增量主键列,对于内部表使用表达式列引用内部编号列“_Identidy”,是更好的选择。23DataTable获得指定名称的DataTableDimdtAsDataTabledt=DataTables(订单)按钮或菜单24DataTable锁定表DataTables(订单).AllowEdit=False按钮或菜单AllowEdit属性25DataTable取消锁定表DataTables(订单).AllowEdit=True按钮或菜单AllowEdit属性26DataTable按回车键向下移动光标DataTables(订单).EnterKeyActionDown=True按钮或菜单EnterKeyActionDown属性27DataTable在DataTable中增加一行,DimdrAsDataRow按钮或菜单其实我们很少直接向DataTab28DataTable保存数据DataTables(订单).Save()按钮或菜单单保存数据29DataTable同时保存数据和设置DataTables(订单).Save(True)按钮或菜单保存设置比较耗时,会影响保存速度。菜单中的保存命令是同时保存数据和设置的。30DataTable自制保存按钮ForEachdtAsDataTableInDataTables按钮或菜单这个按钮就能保存所有表,但是不会保存设置;对于一个成熟的、已经交付使用的项目,有时是没有必要保存设置的。31DataTable删除符合条件的行DataTables(订单).DeleteFor([日期]#2/1/2007#)按钮或菜单删除订单表中2007年2月1日以前的行32DataTable对新增行设置初始值DimrAsRow=CurrentTable.Rows.AddNew()r(姓名)=User.Namer(日期)=Date.Today按钮或菜单上述的代码首先在当前表增加一行,然后将新增行的姓名列设为当前用户名,日期列设为当天日期。User表示当前登录用户,我们会在后续章节介3绍它。提示:此方法和Table的AddNew方法完全等效。33DataTable在DataTable查找符合条件的行DimdrAsDataRowdr=DataTables(产品).Find(产品编号='03')'找出编号为03的产品WithDataTables(订单)dr=.Find(产品='PD01',日期)'找出第一次订购PD01产品的记录dr=.Find(产品='PD01',日期,1)'找出第二次订购PD01产品的记录EndWith按钮或菜单34DataTable以集合的形式,返回所有符合指定条件的行DimdrsAsList(OfDataRow)drs=DataTables(订单).Select([产品]='PD01'And[日期]=#1/4/1999#)ForEachdrAsDatarowIndrsdr(折扣)=0.12Next按钮或菜单对于1999年1月4日订购PD01的订单,希望将其折扣统一设置为0.1235DataTable班级自动生成总分排名'获得所有班级名称,保存在集合中DimbjsAsList(OfString)=DataTables(成绩表).GetUniqueValues(,班级)ForEachbjAsStringInbjs'获得该班级的全部行,按总分降序排序DimdrsAsList(OfDataRow)=DataTables(成绩表).Select([班级]=&bj,总分DESC)FornAsinteger=0Todrs.Count-1'遍历所有行Ifn0AndAlsodrs(n)(总分)=drs(n-1)(总分)Then'如果总分和上一行相同drs(n)(总分排名)=drs(n-1)(总分排名)'则排名等于上一行Elsedrs(n)(总分排名)=n+1'设置排名EndIfNextNext按钮或菜单例子,可以参考CaseStudy目录下的文件:成绩排名.Table36DataTable找出符合条件的行,并将指定列的内容替换为指定值DataTables(订单).ReplaceFor(折扣,0.15,[数量]600)按钮或菜单将订单表中,订购数量大于600的订单的折扣设为0.1537DataTable选定某一区域CurrentTable.Select(1,2,7,6)按钮或菜单选定当前表第二行第三列至第八行第7列之间的区域38DataTable选定指定位置的单元格CurrentTable.Select(0,0)按钮或菜单选定当前表的第1行第1列39DataTable选定整个某列CurrentTable.Select(0,1,CurrentTable.Rows.Count-1,1)按钮或菜单选定整个第二列40DataTable保存并重新加载所有表ForEachdtAsDataTableInDataTablesdt.LoadNext按钮或菜单在多人同时编辑数据的时候,通过执行此方法,可以得到最新的数据41DataTable设置加载条件重新加载WithDataTables(订单).LoadFilter=[产品]='PD01'.Load()EndWith按钮或菜单加载产品为PD01的订单42DataTable撤销对表A的修改DataTables(表A).RejectChanges()按钮或菜单撤销自打开文件或最近一次保存以来,对该表做出的修改43DataTable移除符合条件的行DataTables(订单).RemoveFor([产品]='PD01')按钮或菜单44DataTable根据条件统计表中数据DimTotalAsIntegerDimAmountAsDoubleWithDataTables(订单)4Total=.Compute(Sum(数量))Amount=.Compute(Sum(金额))EndWith按钮或菜单计算总的销售数量和金额45DataTable根据条件统计表中数据DimTotalAsLongTotal=DataTables(订单).Compute(Sum(数量),产品='PD01')按钮或菜单计算产品PD01的销售数量46DataTable根据条件统计表中数据DimCustomersAsList(OfString)DimTotalAsIntegerCustomers=DataTables(订单).GetUniqueValues(,客户)ForEachCustomerAsStringInCustomersTotal=DataTables(订单).Compute(Sum(数量),[客户]='&Customer&')Output.Show(Customer&:&Total)Next按钮或菜单计算每个客户的订购数量47DataTable删除表DataTables.Delete(统计表1)按钮或菜单删除通过代码增加的临时表。48DataTables按条件填充并求和DimdAsDate=Date.TodayDimmAsInteger=d.MonthdimfAsNewFillerf.