| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2707 人关注过本帖
标题:关于字符处理的问题
只看楼主 加入收藏
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
非常感谢吹水佬版主的解答,我已经解决了大部分问题,但还是存在一些疑问,发一个纯粹的字符处理
程序代码:
str_youguan=["select * from dbo.yonghu","yonghu"]

 字符串1=str_youguan

 FOR i=1 TO  1
       mystr="字符串"+ALLTRIM(STR(i))
        =MESSAGEBOX(&字符串1)
        =MESSAGEBOX(&mystr)
       

 endfor

两个消息框显示的内容居然不一样,这是怎么回事?
2022-01-12 21:27
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
而且用 &字符串1 可以正确执行远程查询,但是 &mystr 不行
2022-01-12 21:30
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1088
专家分:2682
注 册:2015-12-30
收藏
得分:0 
能一样就怪了
& 是把字符串两边的引号去掉以后的结果

&字符串1=str_youguan
&mystr=字符串1
2022-01-13 08:04
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用fanjinyu9108在2022-1-11 15:00:13的发言:

有一段代码,如下:
PUBLIC str_youguan,t_youguan,str_pinzhong,t_pinzhong
str_youguan="select * from youguan"
t_youguan="youguan"
str_pinzhng="select * from pinzhong"
t_pinzhong="pinzhong"

PUBLIC 字符串1,表1,字符串2,表2,字符串3,表3,字符串4,表4,字符串5,表5
字符串1=str_youguan
表1=t_youguan

字符串2=str_pinzhong
表2=t_pinzhong
表_数量=2

 连接临时_yk()   &&调用远程连接
 FOR i=1 TO  表_数量
    mystr="字符串"+ALLTRIM(STR(i))
    myt="表"+ALLTRIM(STR(i))
    ac=SQLEXEC(nhandle,mystr,myt)  &&这一步有问题
    IF  Ac<0
       =SQLDISCONNECT(nhandle)
       MESSAGEBOX("读取错误!",0,"错误信息")
       EXIT
       RETURN TO MASTER
    endif  
 ENDFOR
 IF ac<0
    RETURN TO MASTER
 else   
    =SQLDISCONNECT(nhandle)
    MESSAGEBOX("查询成功!")
 endif   

我的问题是如何使变量mystr 表示 "select * from youguan",而不是表示为 字符串1 。myt也是同样的问题

你分别看看mystr,myt是什么内容,和你真实的查询语句,是不是相同
messagebox(mystr)
messagebox(myt)
只这样,才能检查出你哪里出问题
2022-01-14 23:21
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
另外EXECSCRIPT()是在VFP中,执行多条命令,正常情况下,VFP只能支行1条命令的,如:
s1 = "create cursor t1(id i,name c(10))"
&s1 && 生成1个临时表 t1
但你想建立表后,在插入1行数据,那就是2条命令了,单纯的 宏,是不行了,这时,可以用这函数 EXECSCRIPT(),配合 text to
* 建立1个表,插入2个数据,然后,看数据,
TEXT TO s1 TEXTMERGE NOSHOW PRETEXT 4
create cursor t1(id i,name c(10))
INSERT INTO t1(id,name) VALUES (1,"张三")
INSERT INTO t1(id,name) VALUES (2,"李四")
BROWSE
ENDTEXT
EXECSCRIPT(s1)

2022-01-14 23:32
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
非常感谢mywisdom88版主的耐心解答,让我学会了TEXT TO 的使用,目前我已经找到了通用远程查询的解决办法,代码如下:
程序代码:
 PUBLIC 字符串1,字符串2,字符串3,字符串4,字符串5,字符串6,字符串7,字符串8,字符串_数量


 字符串1=str_yonghu   && str_yonghu是事先设定的

 字符串2=str_baoguan_b  && str_baoguan_b是事先设定的

 字符串_数量=2


 

 连接临时_yk()   &&调用远程连接

 FOR i=1 TO  字符串_数量
      DO case
          CASE i=1
             Ac=SQLEXEC(nhandle,&字符串1)
          CASE i=2
             Ac=SQLEXEC(nhandle,&字符串2)
          CASE i=3
             Ac=SQLEXEC(nhandle,&字符串3)
          CASE i=4
             Ac=SQLEXEC(nhandle,&字符串4)    
          CASE i=5
             Ac=SQLEXEC(nhandle,&字符串5)
          CASE i=6
             Ac=SQLEXEC(nhandle,&字符串6)
          CASE i=7
             Ac=SQLEXEC(nhandle,&字符串7)
          CASE i=8
             Ac=SQLEXEC(nhandle,&字符串8) 
      endcase 

      IF  Ac<0
           =SQLDISCONNECT(nhandle)
           MESSAGEBOX("读取错误!",0,"错误信息")
           EXIT 
           RETURN TO MASTER 
     endif  
endfor

 IF ac<0
    RETURN TO MASTER

 else   
    =SQLDISCONNECT(nhandle)
    MESSAGEBOX("查询成功!") 

 endif   

可能会有更加简洁的,但我觉得可以了

[此贴子已经被作者于2022-1-15 10:20编辑过]

2022-01-15 10:19
fanjinyu9108
Rank: 2
等 级:论坛游民
帖 子:694
专家分:20
注 册:2014-1-16
收藏
得分:0 
但是有一点和奇怪,比如下面的代码:
str_yonghu=["select * from dbo.yonghu","yonghu"]
 字符串1=str_yonghu
 FOR i=1 TO  1
       mystr="字符串"+ALLTRIM(STR(i))
        =MESSAGEBOX(&字符串1)
        =MESSAGEBOX(&mystr)
 endfor
  =MESSAGEBOX(&字符串1) 按道理应该显示 "select * from dbo.yonghu","yonghu" 但是奇怪的是显示 select * from dbo.yonghu 而且使用Ac=SQLEXEC(nhandle,&字符串1)
的指令可以通过,但是 =MESSAGEBOX(&mystr)显示的是"select * from dbo.yonghu","yonghu",使用Ac=SQLEXEC(nhandle,&mystr)却不能通过,有点奇怪了?


2022-01-15 10:36
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
MESSAGEBOX(&字符串1) 替换进去看看就清楚了:
实际执行是:
MESSAGEBOX("select * from dbo.yonghu","yonghu")
"select * from dbo.yonghu"是信息内容, "yonghu"是标题
2022-01-15 11:03
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
宏替换不能乱用,能不用就不用,不易读
2022-01-15 11:05
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
宏替换不能乱用,能不用就不用,不易读
2022-01-15 11:08
快速回复:关于字符处理的问题
数据加载中...
 
   



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

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