ClientDataSet中用Sql语句查询XML的数据问题!
查询方法一:
DM1->cdsReceive->Close();
DM1->cdsReceive->CommandText = "select * from Receive where No = '3'" ;
// DM1->cdsReceive->CommandText = "select top 3 No from Receive for xml auto";
DM1->cdsReceive->Open();
查询方法二:
DM1->cdsReceive->Filtered=false;
DM1->cdsReceive->Filter = "No = 3";
DM1->cdsReceive->Filtered=true;
(1)为什么用第一种查询方法返回整个数据集的数据,而用第二种方法就可以实现?
(2)用第二种设置过滤属性的查询方法,如果查询的是DateTime数据格式(前面该字段数据用TTime数据赋值),filter内容应该是"Time = ?" ,比如取数据表里的随便一个存在的数,这里面的?该为何值。在DBGrid中第一条记录的time显示为'1899-12-30 20:26:11' 我试过'20:26:11'和'1899-12-30 20:26:11'和'18991230T20:26:11703'(第三个出错) 都没有查到数据。
(3)我的解决方法是,设置该字段数据类型为string,赋值的时候用Time.TimeString(),可以正确查询。可否不改变类型,就是用(2)的方法??
一个xml文件如下
===============================================================================================
<?xml version="1.0" standalone="yes" ?>
- <DATAPACKET Version="2.0">
- <METADATA>
- <FIELDS>
<FIELD attrname="No" fieldtype="i2" />
<FIELD attrname="uA" fieldtype="i4" />
<FIELD attrname="uB" fieldtype="i4" />
<FIELD attrname="uC" fieldtype="i4" />
<FIELD attrname="Date" fieldtype="dateTime" />
<FIELD attrname="Time" fieldtype="dateTime" />
</FIELDS>
<PARAMS CHANGE_LOG="1 0 4 2 0 4 3 0 4 4 0 4 5 0 4 6 0 4 7 0 4 8 0 4 9 0 4 10 0 4 11 0 4 12 0 4 13 0 4 14 0 4 15 0 4 16 0 4 17 0 4 18 0 4 19 0 4 20 0 4 21 0 4 22 0 4 23 0 4 24 0 4 25 0 4 26 0 4 27 0 4 28 0 4 29 0 4 30 0 4 31 0 4 32 0 4 33 0 4 34 0 4 35 0 4 36 0 4 37 0 4 38 0 4 39 0 4 40 0 4 41 0 4 42 0 4 43 0 4 44 0 4 45 0 4 46 0 4 47 0 4 48 0 4 49 0 4 50 0 4 51 0 4 52 0 4 53 0 4 54 0 4 55 0 4 56 0 4 57 0 4 58 0 4 59 0 4 60 0 4 61 0 4 62 0 4 63 0 4 64 0 4 65 0 4 66 0 4 67 0 4 68 0 4 69 0 4 70 0 4 71 0 4 72 0 4 73 0 4 74 0 4 75 0 4 76 0 4 77 0 4 78 0 4 79 0 4 80 0 4 81 0 4 82 0 4 83 0 4 84 0 4 85 0 4 86 0 4 87 0 4 88 0 4 89 0 4 90 0 4 91 0 4 92 0 4 93 0 4 94 0 4 95 0 4 96 0 4 97 0 4 98 0 4 99 0 4 100 0 4 101 0 4 102 0 4 103 0 4 104 0 4 105 0 4 106 0 4 107 0 4 108 0 4 109 0 4 110 0 4 111 0 4 112 0 4 113 0 4 114 0 4 115 0 4 116 0 4 117 0 4 118 0 4 119 0 4 120 0 4 121 0 4 122 0 4 123 0 4 124 0 4 125 0 4 126 0 4 127 0 4 128 0 4 129 0 4 130 0 4 131 0 4 132 0 4 133 0 4 134 0 4 135 0 4 136 0 4 137 0 4 138 0 4 139 0 4 140 0 4 141 0 4 142 0 4 143 0 4 144 0 4 145 0 4 146 0 4 147 0 4 148 0 4 149 0 4 150 0 4 151 0 4 152 0 4 153 0 4 154 0 4 155 0 4 156 0 4 157 0 4 158 0 4 159 0 4 160 0 4 161 0 4 162 0 4 163 0 4 164 0 4 165 0 4 166 0 4 167 0 4 168 0 4 169 0 4 170 0 4 171 0 4 172 0 4 173 0 4 174 0 4 175 0 4 176 0 4 177 0 4 178 0 4 179 0 4 180 0 4 181 0 4 182 0 4 183 0 4 184 0 4" />
</METADATA>
- <ROWDATA>
<ROW RowState="4" No="3" uA="6718" uB="7232" uC="7601" Date="20090416" Time="18991230T20:26:11703" />
<ROW RowState="4" No="4" uA="6814" uB="7405" uC="7587" Date="20090416" Time="18991230T20:26:11703" />
<ROW RowState="4" No="1" uA="6296" uB="7020" uC="7426" Date="20090416" Time="18991230T20:33:31859" />
<ROW RowState="4" No="2" uA="6477" uB="7147" uC="7535" Date="20090416" Time="18991230T20:33:31859" />
<ROW RowState="4" No="3" uA="6718" uB="7232" uC="7601" Date="20090416" Time="18991230T20:33:31859" />
<ROW RowState="4" No="4" uA="6814" uB="7405" uC="7587" Date="20090416" Time="18991230T20:33:31859" />
</ROWDATA>
</DATAPACKET>
===================================================================================================