全是一句话问题(20分)

  • 主题发起人 主题发起人 m&m
  • 开始时间 开始时间
M

m&m

Unregistered / Unconfirmed
GUEST, unregistred user!
1。如何使下面的语句通过:
datamodule1.query1.sql.add('select gsdm into a from
gs_ccc where gsmc=combobox1.text');
2。datamodule1.table1.filter :='JKSJ<='''+maskedit1.Text+''''
如果时间字段JKSJ的录入格式为’yyyy-mm-dd',而maskedit1.Text格
式为‘yyyy-mm'怎么办?
3。如果时间字段JKSJ的录入格式为’yyyy-mm-dd',maskedit1.Text格式
为‘yyyy-mm-dd',现在只比较’yyyy-mm‘的大小怎么办?
4。DELPHI中能定义时间变量吗?如何....?
 
1、...SQL.add('....'+comobobox1.text);
2、FormatDateTime函数将DateTime转换为指定格式的文本
3、文本->日期,再比较日期大小
4、var D:TDateTime
Delphi的日期、时间类型实际上是浮点数,以某一日为原点,
整数部分表示相差的天数,小数部分表示不足一天的部分
转换的函数有:
DecodeDate:日期类型->具体的年、月、日
DecedeTime:时间类型->具体的时、分、秒
等等

参见delphi help 关于date/time routines
 
to 蚯蚓:

2 和 3 能详细一点吗?
 
2.
filtered := true;
filter := '';
写OnFilterRecord事件:
if formatdatetime('yyyy-mm', datamodule1.table1.fieldbyname('JKSJ').asdate) = maskedit1.text then
accept := true
else
accept := false;

3. 同上, 只是比较:
if formatdatetime('yyyy-mm', datamodule1.table1.fieldbyname('JKSJ').asdate) = copy(maskedit1.text, 1, 7) then
accept := true
else
accept := false;
 
1.
datamodule1.query_dcdt.close;
datamodule1.query_dcdt.sql.clear;
datamodule1.query_dcdt.sql.add('select gsdm into a from gs_ccc where gsmc='+combobox1.text); //a 是string型变量
datamodule1.query_dcdt.open;
datamodule1.dcdt.filter :='dcmc='+a;
datamodule1.dcdt.filtered :=true;

上面的代码执行到第三句时有问题:
general sql error
missing keyword

 
if u use ms-sql , u can use select ... into ... from ...
if u use local database, such as paradox, foxpro, dbase. u'll luckly get an
error when u use such stuff. coz local-sql not support.
(actually this usage not supported by ansi sql-92 protocol).
 
...'select gsdm into '+a+' from .....
 
to 蚯蚓:

照你说的改了,还是同样的错,
难道QUERY组件有些属性没定义吗?
 
paradox根本不支持select xxxx into xxxx from xxxx (其实是local-sql不支持).
很奇怪为什么提问的和回答的都不相信?
 
to Another_eyeS :
我用的不是本地库,网络版的ORACLE。
 
TO 大连的 CAKK :

半个老乡,快救我!!!!
 
ORACLE我也不太懂牙! :-(
不过:
datamodule1.query_dcdt.sql.add('select gsdm into a from gs_ccc where gsmc='+combobox1.text); //a 是string型变量
这句话要干什么,语法没见过,是不是要把符合条件的纪录从gs_ccc转到a里面去?
我记得相应的sql语句应该是Insert Into a select * from gs_ccc where ...牙!

而且,还有疑问:
1.gsmc到底字段类型是什么? 数值型?
2.a既然是string变量,那么也应该是:
datamodule1.query_dcdt.sql.add('select gsdm into <font color=red>'+a+'</font> from gs_ccc where gsmc='+combobox1.text); //a 是string型变量

BTW:你是哪里人牙?
 
to CAKK:
I am a Tianjin-ese.
在大连海事上了四年,94年毕业。现在薄市长把大连变化得挺大了吧。

gsmc---公司名称---varchar2,
我是按 'select gsdm into '+a+' from gs_ccc ..... 这样改的。

ORACLE 和 SQL-SERVER 差不多。
 
CAKK 对不起,头招集大家开会,我得离开一下。
 
>>gsmc---公司名称---varchar2
既然是字符型变量,为什么sql语句里面不用单引号扩起来?
datamodule1.query_dcdt.sql.add('select gsdm into '+a+' from gs_ccc where gsmc='''+combobox1.text+''''); //

你确信select * into 的语法正确?
 
TO CAKK:

gsdm---varchar2----公司代码
a--- string -----变量 不是表名

 
你这句sql语句到底要完成什么功能呢?
感觉你的意思好像要像PB那样,把字段的值直接赋值给一个变量?
 
to CAKK:

select 字段名 into :变量 from table where 条件
这是标准SQL-PLUS的语法。在PL-SQL 中变量前不用加 冒号。
具体到DELPHI里能否支持,我就不太清楚了。
 
to CAKK:
这句SQL语句的完成功能:把表中符合条件的字段中的内容赋给变量,没错。
我要执行的是下面的一段代码,意思是从表GS_CCC中查出符合条件的公司的代码,
此代码作为表DCDT的过滤条件。
datamodule1.query_gs_ccc.close;
datamodule1.query_gs_ccc.sql.clear;
datamodule1.query_gs_ccc.sql.add('select gsdm into '+a+' from gs_ccc where gsmc='+combobox1.text);
datamodule1.query_gs_ccc.open;
datamodule1.dcdt.filter :='dcmc='+a;
datamodule1.dcdt.filtered :=true;
datamodule1.dcdt.Refresh;

另外,我也按你说的, '''+combobox1.text+'''' 这样试过,不行。

若按原来的写法,报错后,我检查过query_gs_ccc组件的SQL属性,有
如下代码:select gsdm into a from gs_ccc where gsmc='一公司'

所以我觉得没错。

 
>>select 字段名 into :变量 from table where 条件
很遗憾,delphi不支持这样做.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部