George Cheng

George Cheng

115 posts
VBA

Excel 宏语言R1C1公式表示法

Excel录宏的时候如果写公式,看代码就会发现代码里公式写的不一样。首先代码设置的cell属性叫FormulaR1C1,说明它采用的是一种叫R1C1表示法来表示公式的单元格,这种方法在填写大量规则公式时很方便。表示格式如下:R[横位移]C[纵位移]。即记录相对于当前单元格的位移量。如求和列为E,那么在E列的任何单元格(除标题)均可填入=SUM(R[-4]C[0]:R[-1]C[0])含义为求当前单元格左四格到当前单元格左一格的总和。 顺带一提,Excel VBA中提供FormulaR1C1Local属性,用于换算成本地公式。如一个写了=SUM(R[-4]C[0]:R[-1]C[0])的工作簿在Excel德文版中提取FormulaR1C1Local属性会自动得出=SUMME(R[-4]C[

Access

Access SQL中一些针对表(而不是记录)的操作

只复制表结构:SELECT INTO 新表名 FROM 旧表名 WHERE FALSE; 只复制表数据:INSERT INTO 新表名 SELECT FROM 旧表名 WHERE TRUE; 复制表结构+数据:SELECT INTO 新表名 FROM 旧表名 WHERE TRUE; 删除表:DROP TABLE 表名; 重命名需要可以复制+删除或者使用ATOX对象。 确认表存在要改管理权限,或者try一下SELECT * FROM 表名 WHERE FALSE;

ADO.NET

ADO.NET DEBUG收获

今儿无聊写ADO.NET,DataAdapter更新字段的时候直接蹦错误“INSERT INTO 语法错误”。 经DEBUG,注释掉DATE和TIME两个蛋疼名字的字段就可以正常执行。看来里面自动生成的INSERT INTO语句里面直接把DATE和TIME这两个关键字写进去了,我尝试把所有字段写到SELECT里面,DATE和TIME加方括号,继续无效。翻API,发现CommandBuilder有两个神奇的属性。 OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter); builder.QuotePrefix = "["; builder.QuoteSuffix = "]"; 运行成功。API里面说就是遇到SQL关键字的时候的前后缀,Access是方括号MySQL是引号什么的,太他喵的人性化了。 另外一个小收获是以前一直不知道为什么我的代码里DataSet.Tables写[0]就好使写表名就不好使。今天发现丫不是自动找SELECT语句里的表名,应该是在Fill里面自动制定,(不指定默认就是Table?)例: DataSet set = new DataSet(