sql&updatesql的问题(150分)

  • 主题发起人 主题发起人 gzlitao
  • 开始时间 开始时间
G

gzlitao

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟不才有三个问题想问?

1。我用SQL查找出的信息修改后。
为什么我UPDATE会出现下面的问题?
query1.not in cached update mode.(弹出对话框)
但它照常写入库中。
我的设置是
TUpdateSQL 控件(name:UpdateSQL1);
Query 的:CatchedUpdates= false,RequestLive=true,
UpdateObject=UpdateSQL1.

Query1.ApplyUpdates;
Query1.CommitUpdates;

但我设置cachedupdate:=true;就没有这会事,可是
就更新cache,而不写入库中。请问如何修改去掉呢。(话框)


2。为何用下面的sql语句查找会出现下面的问题?
但它查找中文名字/中文地址就行。
查找数字/日期都不行(就算用美式都不行)。

type mismatch in expression(弹出对话框)


query1.close;
query1.sql.clear;
query1.sql.add('select * from "C:/gdtv36/gdtv36.dbf"');
query1.sql.add('where 用户卡号 like"%'+edit2.text+'%"');
query1.open;
end;

3。如何用上面的SQL语句将edit2.text输入的中国式的日期变成
美式的日期型?


谢谢。



 
gzlitao:
对于时间,一般采用一下方法(因为每个计算机得时间格式可能都不同,一般由
delphi去解决)
query1.close;
query1.sql.clear;
query1.sql.add('select * from "C:/gdtv36/gdtv36.dbf"');
query1.sql.add('where 时间=:PTime');
query1.ParamByName('PTime').AsDateTime:=now;
query1.Prepare;
query1.open;

 
2:
好象数字与日期不能用like.一般用'=' 'between .. and ..'等!
 
感快,使下先。
 

前卫兄私下问你?
可否给你email邮箱地址我呢?
我的是gzlitao@163.net or gzlitao@21cn.com
 
shenqw@cmmail.com
 

前卫兄:
不是时间啊,日期啊?
query1.close;
query1.sql.clear;
query1.sql.add('select * from "C:/gdtv36/gdtv36.dbf"');
query1.sql.add('where 进入日期=:PTime');
********
query1.ParamByName('PTime').AsDateTime:=now;
query1.Prepare;
query1.open;



 
你正在上网,吃了饭没有。(新年好)
 
update可有。。。扒刀
 
》不是时间啊,日期啊?
什么意思?
 
1. updatesql就是配合cachedupdate:=true修改数据库的. 出来那个提示框
看来只是个提示. 想去掉用try...finally...end试试看.
要将cache里的修改写盘请调用TDateSet.ApplyUpdates.
 
answer 1
TUpdateSQL 控件(name:UpdateSQL1);
Query 的:CatchedUpdates= TRUE,RequestLive=False,
UpdateObject=UpdateSQL1.
在TUpdateSQL的属性中选择是ModifySql还是DeleteSql或insertsql
在选定的属性中写入动作例如:
set Name = :Name, Capital = :Capital, Continent = :Continent
where Name = :OLD_Name
然后 Query1.ApplyUpdates就可以了
 
1。我用SQL查找出的信息修改后。
为什么我UPDATE会出现下面的问题?
query1.not in cached update mode.(弹出对话框)
但它照常写入库中。
我的设置是
TUpdateSQL 控件(name:UpdateSQL1);
Query 的:CatchedUpdates= false,RequestLive=true,
UpdateObject=UpdateSQL1.

Query1.ApplyUpdates;
Query1.CommitUpdates;

但我设置cachedupdate:=true;就没有这会事,可是
就更新cache,而不写入库中。请问如何修改去掉呢。(话框)
就算用 try....finyall... 也不行。或许我写不行,
那位可以教我一下。(有位人兄教我用Tdataset但我又不会)

2。为何用下面的sql语句查找会出现下面的问题?
但它查找中文名字/中文地址就行。
查找数字.

type mismatch in expression(弹出对话框)


query1.close;
query1.sql.clear;
query1.sql.add('select * from "C:/gdtv36/gdtv36.dbf"');
query1.sql.add('where 用户卡号="%'+edit2.text+'%"');//不行
query1.open;
end;

但它这样就行。(下面)


query1.close;
query1.sql.clear;
query1.sql.add('select * from "C:/gdtv36/gdtv36.dbf"');
query1.sql.add('where 用户卡号="%'84444444'%"');
query1.open;
end;


谢谢。
 
1:
try
{....}
except
on Except do ;
end;
2:
query1.sql.add('where 用户卡号="%'84444444'%"');
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这句你肯定写错了!检查一下从新贴出来!
 

这段时间怎么的老进不了。

前卫兄:
谢谢你的帮忙,在此谢了。
我还是想问查找的日期的问题,上面的例子看不明白
(就是苯“猛K脑袋”) 望解答一下。


希望大家帮帮忙也发表一下意见嘛。(分数随时可变的嘛)
多给例子。


谢谢
 
gzlitao:
能不能将你的“查找的日期的问题”说的更详细些,上面的示例已经比较完整了?
 


等一下,今天工作很多,好累,我现在才刚回家,我得马上睡觉了,
明天我,详细的说。。。。。。

谢谢你,和大家。。。

晚安
 

在edit2.text中输入下面的日期,可以查找出来。( 请给例子。 )
: date=2000-01-30
:
:如: query1.sql.add('select * from lion.dbf');
: query1.sql.add('where 日期="%'+edit2.text+'%"'); //如何改
:
他人教的改法 不行啊。。。。。(请看一下如何修改)
query1.close;
query1.sql.clear;
query1.sql.add('select * from "C:/gdtv36/gdtv36.dbf" where 交费止日期 = :curDate');
parambyname('curDate').asdate := StrToDate(Edit1.Text);
// query1.sql.add('select * from "C:/gdtv36/gdtv36.dbf"');
// query1.sql.add('where 交费止日期 like"%'+edit2.text+'%"');
query1.open;
 
方法1:
输入时间采用TDateTimePicker.选取时间后

query1.close;
query1.sql.clear;
query1.sql.add('select * from "C:/gdtv36/gdtv36.dbf" where 交费止日期 = :curDate');
Query1.parambyname('curDate').asdate :=TDateTimePicker.Date;
Query1.Open;

方法2:
就是你上面的程序,你说不行,是擦不到结果,还还是其他异常。
是否将"交费止日期 = :curDate" 该为"交费止日期 < :curDate" 或
“交费止日期 > :curDate”,如果是由StrToDate(Edit1.Text)引起的
,我再教你其他方法!
 
不可能行. 除非别用query
query不支持多句select
 
后退
顶部