| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
大量收QQ微信精准粉/交友粉,非诚勿扰千里之行 始于足下
共有 1831 人关注过本帖
标题:给SQL表增加字段的问题(字段名可以用变量代替吗)
只看楼主 加入收藏
looouuu
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2016-11-25
结帖率:80%
  已结贴   问题点数:20  回复次数:11   
给SQL表增加字段的问题(字段名可以用变量代替吗)
t=thisform.text1.value(这里假设输入的是yyy)
nsqlcon=sqlstringconnect("driver=sql server;server=192.168.1.110;uid=sa;pwd=a123456;database=PP1")
    TEXT TO VarName1 NOSHOW
        ALTER TABLE a1 ADD t float
    ENDTEXT
    sqlexec(nsqlcon,VarName1)   
SQLDISCONNECT(nsqlcon)
表里实际增加的字段名是t,而不是在TEXT1里输入的yyy。
ADD 后面如果想要变量代替字段,可以吗,应该是什么格式的。
2017-07-20 09:30
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:83
帖 子:2571
专家分:6306
注 册:2015-3-25
  得分:20 
可以。用宏。或者用运算符号,我喜欢 <<  >>这个,在TEXT TO ENDTEXT中很好用。
t=thisform.text1.value
nsqlcon=sqlstringconnect("driver=sql server;server=192.168.1.110;uid=sa;pwd=a123456;database=PP1")
     TEXT TO VarName1 NOSHOW
         ALTER TABLE a1 ADD <<t>> float
     ENDTEXT
     sqlexec(nsqlcon,VarName1)   
 SQLDISCONNECT(nsqlcon)
2017-07-20 10:53
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:83
帖 子:2571
专家分:6306
注 册:2015-3-25
  得分:0 
local cWhere,s1,s2
cWhere=""
s1=allt(thisform.text1.value) &&姓名
s2=allt(thisform.text2.value) &&性别
if !empty(s1)
   cWhere = " name= ?s1 "
endif
if !empty(s2)
   cWhere = iif(empty(cWhere)," sex= ?s2 "," and "+cWhere+"  sex= ?s2 ")
endif
if !empty(cWhere)
   cWhere = " where "+cWhere
endif

text to str1 noshow
select id,name,sex from tablename
<<cWhere>>
order by Id
endtext

sqlexec(nsqlcon,str1)
brow
2017-07-20 11:05
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:83
帖 子:2571
专家分:6306
注 册:2015-3-25
  得分:0 
上面的列子,可以做到动态条件查询SQL数据库的数据。<< cWhere >>,如果 cWhere 不是空,就会有 where 这个条件,经过运算符 << >>后
如:s1= "张三",s2="男",经过 << >>后,就相当于如下:
text to str1 noshow
 select id,name,sex from tablename
 where name=?s1  and sex=?s2
 order by Id
 endtext
2017-07-20 11:10
looouuu
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2016-11-25
  得分:0 
试了下,用<< >>不行,SQL表里没有增加新字段,还有其他运算符或办法吗?
2017-07-20 13:28
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:83
帖 子:2571
专家分:6306
注 册:2015-3-25
  得分:0 
以下是引用looouuu在2017-7-20 13:28:13的发言:

试了下,用<< >>不行,SQL表里没有增加新字段,还有其他运算符或办法吗?

你输出你字符串看看是什么?
text to VarName1 noshow
alter ...
endtext

messagebox(VarName1) &&看看是什么,看语法有没错误。然后。把这个语法。直接在SQL上运行看看。
2017-07-20 13:33
looouuu
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2016-11-25
  得分:0 
附件: 您没有浏览附件的权限,请 登录注册
2017-07-20 13:41
looouuu
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2016-11-25
  得分:0 
第 1 行: '<' 附近有语法错误。
2017-07-20 13:48
looouuu
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2016-11-25
  得分:0 
找到办法了
t=allt(thisform.text1.value)
nsqlcon=sqlstringconnect("driver=sql server;server=192.168.1.110;uid=sa;pwd=a123456;database=PP1")
    sqlexec(nsqlcon,'ALTER TABLE a1 ADD '+t+' float')   
SQLDISCONNECT(nsqlcon)
在我这里,这样就成功了,不能用TEXT TO ENDTEXT
2017-07-20 15:30
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:83
帖 子:2571
专家分:6306
注 册:2015-3-25
  得分:0 
以下是引用looouuu在2017-7-20 15:30:48的发言:

找到办法了
t=allt(thisform.text1.value)
nsqlcon=sqlstringconnect("driver=sql server;server=192.168.1.110;uid=sa;pwd=a123456;database=PP1")
    sqlexec(nsqlcon,'ALTER TABLE a1 ADD '+t+' float')   
SQLDISCONNECT(nsqlcon)
在我这里,这样就成功了,不能用TEXT TO ENDTEXT

你的text 少了其他参数,
附件: 您没有浏览附件的权限,请 登录注册
2017-07-20 15:41







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021115 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved