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

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

[复制链接]
发表于 2019-10-15 14:56:26 | 显示全部楼层
xuanniao110 发表于 2019-10-15 14:29
这样出来的$pdz  不管你是有2019sx列  还是没有2019sx列   它的值都是0

這句話 不懂 請展示

我覺得 你是整個搞錯了
发表于 2019-10-15 15:04:14 | 显示全部楼层
xuanniao110 发表于 2019-10-15 14:56
依然一样   判断值还是0  不管是有列还是没列

那就表示你有地方錯了   我需要看到 你實係測試出來的東西 跟語法 不然我無法回答你的問題
 楼主| 发表于 2019-10-15 15:12:45 | 显示全部楼层
本帖最后由 xuanniao110 于 2019-10-15 16:48 编辑

$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
                                EndIf
             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 15:59:46 | 显示全部楼层
本帖最后由 kk_lee69 于 2019-10-15 16:00 编辑
xuanniao110 发表于 2019-10-15 15:12
$conn = ObjCreate("ADODB.Connection")
                $RS = ObjCreate("ADODB.Recordset")
          ...

請直接下SQL 語法查詢 請不要使用AU3 任何程式

請不要套用到你的任何程式  單純使用 查詢 跟取回值  請不要使用任何有畫面的AU3程式

发表于 2019-10-15 16:04:09 | 显示全部楼层
xuanniao110 发表于 2019-10-15 15:12
$conn = ObjCreate("ADODB.Connection")
                $RS = ObjCreate("ADODB.Recordset")
          ...

要詢問問題  請把問題簡化成 單純的程式  你套用到自己的程式  有太多的可能性 造成錯誤.....請用最單純 最直接的方式 找問題
发表于 2019-10-15 16:07:50 | 显示全部楼层
xuanniao110 发表于 2019-10-15 15:12
$conn = ObjCreate("ADODB.Connection")
                $RS = ObjCreate("ADODB.Recordset")
          ...

$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) ;循??表 有?料就跑回圈  ??料就?跳出
$Ai = $RS.Fields(0).value ;此位置真不知道在AU3中是如何用?据集里面的???表?返回值的
$RS.movenext
WEnd
MsgBox(0, "Ai為", $Ai)

使用上面的語法 都不要更動 只要連線你的資料庫   執行兩次 截圖  秀出 有 2019sx 跟 沒有 2019sx 的狀況
 楼主| 发表于 2019-10-15 16:32:02 | 显示全部楼层
kk_lee69 发表于 2019-10-15 16:07
$conn = ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$conn.Open("driver={SQL ...
$mdb_data_Server = "172.16.102.40"
$mdb_data_id = "sa"
$mdb_data_pwd = "100200300"
$mdb_data_Company = "TestSQL"
$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) ;循??表 有?料就跑回圈  ??料就?跳出
$Ai = $RS.Fields(0).value ;此位置真不知道在AU3中是如何用?据集里面的???表?返回值的
$RS.movenext
WEnd
MsgBox(0, "Ai為", $Ai)

本帖子中包含更多资源

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

×
发表于 2019-10-15 22:09:19 | 显示全部楼层
本帖最后由 kk_lee69 于 2019-10-15 22:11 编辑

改一下 語法

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 like '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='[01mon]' )  as a  Where  RTRIM(name)='2019sx'

发表于 2019-10-15 22:14:26 | 显示全部楼层

以這個表來說 這樣的結果是不合理的..........

可以 用 你一開始的SQL 查詢工具  查詢 兩個表的結果

select b.name from sysobjects as a, syscolumns as b where a.xtype = 'U' and a.id = b.id and a.name='[01mon]'

跑這個功能就好  ...........

或者 使用 SQL 查詢工具  直接查詢
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'

這樣的結果.....
发表于 2019-10-15 22:20:33 | 显示全部楼层

方便的話  可否 上傳 TETSSQL 資料庫的備份檔案 ........ 方便研究
 楼主| 发表于 2019-10-16 11:43:21 | 显示全部楼层
kk_lee69 发表于 2019-10-15 22:20
方便的話  可否 上傳 TETSSQL 資料庫的備份檔案 ........ 方便研究


数据库已经上传  请查收

本帖子中包含更多资源

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

×
发表于 2019-10-16 13:04:53 | 显示全部楼层
xuanniao110 发表于 2019-10-16 11:43
数据库已经上传  请查收

資料庫 是 哪個版本的 SQL 多少的
发表于 2019-10-16 13:18:36 | 显示全部楼层
xuanniao110 发表于 2019-10-16 11:43
数据库已经上传  请查收

可不可以採用備份的方式 備份資料庫 請不要直接給我 資料庫檔案  我怕 這樣  會有一些資訊無法載入
发表于 2019-10-16 13:23:13 | 显示全部楼层
xuanniao110 发表于 2019-10-16 11:43
数据库已经上传  请查收

找出原因了 !~~~  你的語法錯誤  不可以使用  '[01mon]'   要使用 '01mon'
 楼主| 发表于 2019-10-16 13:34:19 | 显示全部楼层
kk_lee69 发表于 2019-10-16 13:23
找出原因了 !~~~  你的語法錯誤  不可以使用  '[01mon]'   要使用 '01mon'

果然是   就是这个原因   我现在获取到就是1  非常感谢你的帮助   如此之耐心   感谢之情无法言表
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-6 14:37 , Processed in 0.072114 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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