zoukankan      html  css  js  c++  java
  • DELPHI TADOQuery 和Excel 相关

    1. 使用程序生成的Excel文件,出现"格式不对的'错误。通过Excel程序再存下盘就OK了。
    2. Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=c:\ee.xlsx;Mode=Share Deny None;Extended Properties=Excel 8.0;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:HDR=NO
    3. 不正常地定义参数对象提供了不一致或不完整的信息"的解决办法,TADOQUERY.ParamCheck:=False; OK!

      Excel文件select * from [Sheet2$A3:E6]不区分大小写 OK!

      原因:在delphi用AdoQuery执行SQL语句时TADOQuery对象会把SQL语句中":"后的字符当作变量来使用,导致数据识别错误,因此只要将这种检查取消掉就可以了,在TADOQuery属性中正好ParamCheck就是设置检查的关键所在,设为False,这样它就可以跳过检查直接执行SQL语句。

    4. Delphi测试,

    SQL语句的构造如下,[Sheet1$a1:e4] a a.id a.flowid

    表名:[Sheet1$a1:e4] [Sheet1$] [MyNamedRange]

    别名:a

    列:a.id a.flowid

     

    对 Excel 工作簿中表(或范围)的有效引用。
    若要引用完全使用的工作表的范围,请指定后面跟有美元符号的工作表名称。例如:

    select * from [Sheet1$]
    若要引用工作表上的特定地址范围,请指定后面跟有美元符号和该范围的工作表名称。例如:

    select * from [Sheet1$A1:B10]
    若要引用指定的范围,请使用该范围的名称。例如:

    select * from [MyNamedRange]

    说明:
    可以引用Excel 工作簿中的三种对象:
    • 整张工作表:[Sheet1$]  ,Sheet1 就是工作表的名称
    • 工作表上的命名单元格区域:[MyNamedRange] (不需要指定工作表,因为整个xls中命名区域只能唯一)
    XLS命名方法:选中单元格范围》插入》名称》定义
    • 工作表上的未命名单元格区域 :[Sheet1$A1:B10]
    (在关系数据库提供的各种对象中(表、视图、存储过程等),Excel 数据源仅提供相当于表的对象,它由指定工作簿中的工作表和定义的命名区域组成。命名区域被视为"表",而工作表被视为"系统表")

       

    注意:
    •必须使用[](方括号),否将报:
    FROM 子句语法错误
    •必须跟$(美元符号),否则报:
    Microsoft Jet 数据库引擎找不到对象'Sheet2'。请确定对象是否存在,并正确地写出它的名称和路径。
    •如果工作表名称不对,或者不存在,将报:
    'Sheet2$' 不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长。

  • 相关阅读:
    C. 1D Sokoban 二分,思维
    E. Almost Fault-Tolerant Database 暴力枚举 + 分类讨论 + 思维 Codeforces Round #704 (Div. 2)
    Tkinter(六):Checkbutton 复选按钮
    LeetCode260. 只出现一次的数字 III
    LeetCode297. 二叉树的序列化与反序列化
    LeetCode300. 最长上升子序列
    LeetCode299. 猜数字游戏
    LeetCode295. 数据流的中位数
    你真的知道嵌入式系统的优先级吗?
    学习4412开发板gdb和gdbserver的调试
  • 原文地址:https://www.cnblogs.com/xyicheng/p/1685942.html
Copyright © 2011-2022 走看看