找回密码
 加入
搜索
楼主: xuanniao110

[AU3基础] [已解决]关于查找与判断SQL表中列的存在问题,请指教怎么判断有或者无

[复制链接]
发表于 2019-10-15 13:10:57 | 显示全部楼层
不要亂改我給你的語法 請先 把 中文字的地方改成 你的 資料表名稱  你就懂意思
 楼主| 发表于 2019-10-15 13:14:10 | 显示全部楼层
kk_lee69 发表于 2019-10-15 13:10
不要亂改我給你的語法 請先 把 中文字的地方改成 你的 資料表名稱  你就懂意思


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2019-10-15 13:18:34 | 显示全部楼层

你有看到 你只有  ID  RQ  2018CS  2018SX  那不就會知道 你缺了 2019 嗎??

你是這個意思嗎??
 楼主| 发表于 2019-10-15 13:20:09 | 显示全部楼层
kk_lee69 发表于 2019-10-15 13:18
你有看到 你只有  ID  RQ  2018CS  2018SX  那不就會知道 你缺了 2019 嗎??

你是這個意思嗎??

这个是列出了数据表01mon所有列名   你的意思是让我用 2019sx来对比这列出来的所有列名   如果没有就创建  有就执行保存?
发表于 2019-10-15 13:22:12 | 显示全部楼层
xuanniao110 发表于 2019-10-15 13:20
这个是列出了数据表01mon所有列名   你的意思是让我用 2019sx来对比这列出来的所有列名   如果没有就创建 ...

當然阿............  這是方法一

也可以變化一下啊  方法二
SELECT COUNT(*)  FROM  ( select b.name from sysobjects as a, syscolumns as b where a.xtype = 'U' and a.id = b.id and a.name='資料表單名稱' )  as a  Where name='2019CX'

返回0  就是 沒有  返回 1  就是有
发表于 2019-10-15 13:27:05 | 显示全部楼层
xuanniao110 发表于 2019-10-15 13:20
这个是列出了数据表01mon所有列名   你的意思是让我用 2019sx来对比这列出来的所有列名   如果没有就创建 ...

這樣 你的疑問 解決了嗎
 楼主| 发表于 2019-10-15 13:36:58 | 显示全部楼层
kk_lee69 发表于 2019-10-15 13:22
當然阿............  這是方法一

也可以變化一下啊  方法二

我想要你的第二种方法   我不想去遍列数据表的列名
发表于 2019-10-15 13:38:12 | 显示全部楼层
這樣 後面的  你想做的 都有辦法解決了嗎??
 楼主| 发表于 2019-10-15 13:39:04 | 显示全部楼层
kk_lee69 发表于 2019-10-15 13:38
這樣 後面的  你想做的 都有辦法解決了嗎??

现在就是第二种方法  不晓得怎么来获取啊   那返回值
发表于 2019-10-15 13:40:19 | 显示全部楼层
..................你的AU3  程式 我看看??
发表于 2019-10-15 13:46:02 | 显示全部楼层
本帖最后由 kk_lee69 于 2019-10-15 14:10 编辑
xuanniao110 发表于 2019-10-15 13:39
现在就是第二种方法  不晓得怎么来获取啊   那返回值
$RS.open ("SELECT COUNT(*)  FROM  ( select b.name from sysobjects as a, syscolumns as b where a.xtype = 'U' and a.id = b.id and a.name='資料表單名稱' )  as a  Where name='2019CX'  " )
        While (Not $RS.eof And Not $RS.bof);迴圈讀表
        $Ai=$RS.Fields(0).value
                $RS.movenext;跳出迴圈
        WEnd;結束迴圈讀表
$RS.close;關閉數據分表
IF $Ai = 0 Then
        MsgBox(0,"","沒有這個2019CX欄位")
ELSE 
        MsgBox(0,"","有這個2019CX欄位")
EndIf


請參考
http://www.autoitx.com/forum.php?mod=viewthread&tid=30083&highlight=SQL
 楼主| 发表于 2019-10-15 14:29:16 | 显示全部楼层
kk_lee69 发表于 2019-10-15 13:46
$RS.open ("SELECT COUNT(*)  FROM  ( select b.name from sysobjects as a, syscolumns as b where a.xt ...
$conn = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$conn.Open("driver={SQL Server};server=" & $mdb_data_Server & ";uid=" & $mdb_data_id & ";pwd=" & $mdb_data_pwd & ";database=" & $mdb_data_Company)
$RS.ActiveConnection = $conn
$RS.Open("SELECT COUNT(*)  FROM  ( select b.name from sysobjects as a, syscolumns as b where a.xtype = 'U' and a.id = b.id and a.name='[01mon]' )  as a  Where name='2019sx'") ;读取这一列的列名称
While (Not $RS.eof And Not $RS.bof) ;循环读表 有资料就跑回圈  没资料就会跳出
$pdz = $RS.Fields(0).value ;此位置真不知道在AU3中是如何用数据集里面的参数来表达返回值的
$RS.movenext
WEnd
MsgBox(0, "判断值", $pdz)
If $pdz = 0 Then
$conn = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$conn.Open("driver={SQL Server};server=" & $mdb_data_Server & ";uid=" & $mdb_data_id & ";pwd=" & $mdb_data_pwd & ";database=" & $mdb_data_Company)
$RS.ActiveConnection = $conn
$RS.Open("ALTER TABLE [" & $mon & "mon" & "] ADD [" & $sxlm & "] FLOAT DEFAULT 'null'")
$RS.Open("ALTER TABLE [" & $mon & "mon" & "] ADD [" & $cslm & "] FLOAT DEFAULT 'null'")
$conn.close
MsgBox(0, "创建成功", "!!!!!!!")
bc()
Else
bc()
EndIf
EndIf

这样出来的$pdz  不管你是有2019sx列  还是没有2019sx列   它的值都是0
 楼主| 发表于 2019-10-15 14:32:01 | 显示全部楼层
本帖最后由 xuanniao110 于 2019-10-15 16:48 编辑
kk_lee69 发表于 2019-10-15 13:46
$RS.open ("SELECT COUNT(*)  FROM  ( select b.name from sysobjects as a, syscolumns as b where a.xt ...

如图   查询出来的值  依然是0
发表于 2019-10-15 14:35:21 | 显示全部楼层
xuanniao110 发表于 2019-10-15 14:29
这样出来的$pdz  不管你是有2019sx列  还是没有2019sx列   它的值都是0
$conn = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$conn.Open("driver={SQL Server};server=" & $mdb_data_Server & ";uid=" & $mdb_data_id & ";pwd=" & $mdb_data_pwd & ";database=" & $mdb_data_Company)
$RS.ActiveConnection = $conn
$RS.Open("SELECT COUNT(*)  FROM  ( select b.name from sysobjects as a, syscolumns as b where a.xtype = 'U' and a.id = b.id and a.name='[01mon]' )  as a  Where name='2019sx'") ;?取?一列的列名?
While (Not $RS.eof And Not $RS.bof) ;循??表 有?料就跑回圈  ??料就?跳出
$pdz = $RS.Fields(0).value ;此位置真不知道在AU3中是如何用?据集里面的???表?返回值的
$RS.movenext
WEnd
MsgBox(0, "判?值", $pdz)
If $pdz = 0 Then
        $RS.Open("ALTER TABLE [" & $mon & "mon" & "] ADD [" & $sxlm & "] FLOAT DEFAULT 'null'")
        $RS.Open("ALTER TABLE [" & $mon & "mon" & "] ADD [" & $cslm & "] FLOAT DEFAULT 'null'")

        MsgBox(0, "?建成功", "!!!!!!!")
        bc()
Else
        bc()
EndIf
 楼主| 发表于 2019-10-15 14:56:04 | 显示全部楼层
kk_lee69 发表于 2019-10-15 14:35
$conn = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$conn.Open("driver={S ...

依然一样   判断值还是0  不管是有列还是没列
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-6 05:29 , Processed in 0.069695 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表