标题:给SQL表增加字段的问题(字段名可以用变量代替吗)
只看楼主
looouuu
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2016-11-25
结帖率:84.62%
已结贴  问题点数: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 后面如果想要变量代替字段,可以吗,应该是什么格式的。
搜索更多相关主题的帖子: SQL 增加 字段 变量 代替 
2017-07-20 09:30
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册: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: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册: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: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册: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
等 级:新手上路
帖 子:36
专家分:0
注 册:2016-11-25
得分:0 
试了下,用<< >>不行,SQL表里没有增加新字段,还有其他运算符或办法吗?
2017-07-20 13:28
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册: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
等 级:新手上路
帖 子:36
专家分:0
注 册:2016-11-25
得分:0 
2017-07-20 13:41
looouuu
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2016-11-25
得分:0 
第 1 行: '<' 附近有语法错误。
2017-07-20 13:48
looouuu
Rank: 1
等 级:新手上路
帖 子:36
专家分: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: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-479497-1-1.html




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

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