好看的小说 君子以泽,懒人听书,完美世界有声小说 http://m.shyd8.com PDM產品數據管理軟件、項目管理系統 Sun, 22 Jun 2025 02:12:37 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.8.3 http://m.shyd8.com/wp-content/uploads/2022/11/cropped-plmico512-32x32.png 腳本 – 共好plm系統 http://m.shyd8.com 32 32 SQLServer數據庫安全漏洞的防護(最重要一步) http://m.shyd8.com/3183/ Sun, 22 Jun 2025 01:46:03 +0000 http://m.shyd8.com/?p=3183 SQLServer數據庫安全漏洞攻擊思路

1.以管理員身份運行數據庫服務

2.已經獲得SQL數據庫的sysadmin權限

3.可以連接數據庫

SQLserver 的核心漏洞:MSSQL提權的關鍵是利用xp-cmdshell這個存儲過程

SQLServer 數據庫漏洞安全防護最基本的調整

考慮安全,一般可以禁用 sa 賬號;連接數據庫的賬號密碼的強度也要足夠

一)禁用 xp_cmdshell

— 1. 查看 xp_cmdshell 是否啟用 (若 run_value 為 1 表示已啟用,為 0 表示已禁用

EXEC sp_configure ‘show advanced options’, 1;

RECONFIGURE;

EXEC sp_configure ‘xp_cmdshell’;


— 1) 啟用高級選項(若未啟用)

EXEC sp_configure ‘show advanced options’, 1;

RECONFIGURE;

— 2) 禁用 xp_cmdshell

EXEC sp_configure ‘xp_cmdshell’, 0;

RECONFIGURE;


二)禁用 xp_regwrite

USE master;

GO

— 撤銷 PUBLIC 角色對 xp_regwrite 的執行權限

DENY EXECUTE ON xp_regwrite TO PUBLIC;

GO


三)禁用 Ole Automation Procedures

EXEC sp_configure ‘show advanced options’, 1;

RECONFIGURE; — 立即生效

GO

EXEC sp_configure ‘Ole Automation Procedures’, 0;

RECONFIGURE; — 立即生效

GO


最后: 重啟 sqlserver

 

]]>
mobox3 格式化日期 http://m.shyd8.com/3144/ Thu, 16 Jan 2025 07:04:46 +0000 http://m.shyd8.com/?p=3144  

–[[ 格式日期 2024-03-25T16:00:00.000Z 格式化為 2024-03-25?]]

function DayFromat(dateTimeStr)

local formattedDateStr =""
if (dateTimeStr == "" or dateTimeStr==nil ) then
return formattedDateStr
end

dateTimeStr = string.gsub(dateTimeStr, "T", " ")
print(dateTimeStr)

-- 使用模式匹配提取日期和時間部分
local dateStr, timeStr = dateTimeStr:match("(%d+-%d+-%d+) (%d+:%d+:%d+)")

if (dateStr == nil) then
formattedDateStr ="Date Format Error"
return formattedDateStr
end

-- 提取日期部分的年、月、日
local year, month, day = dateStr:match("(%d+)-(%d+)-(%d+)")

-- 將提取的月、日格式化為兩位數的字符串
month = string.format("%02d", tonumber(month))
day = string.format("%02d", tonumber(day))

-- 組合格式化后的日期和原始時間部分
local formattedDateStr = string.format("%s-%s-%s", year, month, day)
local formattedDateTime = string.format("%s %s", formattedDateStr, timeStr)

return formattedDateStr
end

— 示例使用
local date = “2024-03-25T16:00:00.000Z”
local formattedDate = DayFromat(date)
print(formattedDate) — 輸出: 2024-03-25

]]>
mobox3自定義參數的定義及獲取 http://m.shyd8.com/3084/ Sun, 08 Sep 2024 06:42:31 +0000 http://m.shyd8.com/?p=3084 mobox3運行過程中系統可以定義很多運行參數。這種運行參數可以匹配企業個性化需求。在這個基礎上mobox3開放了一些非系統參數自定義配置方式。舉例

這個用戶部署了 Gungho系統 ,而這個系統需要使用微信小程序。所以系統就會用到 gunghoAPI服務。(這個服務不是系統默認安裝的服務,需要手工單獨部署過)

這個服務部署后,我們客戶端怎樣去調用這個服務,我們就可以通過定義一個自定義參數來描述 gunghoAPI的的 IP及端口,方便客戶端調用

配置過程如下

這樣,我們就定義了一個編號為 9001 的參數。 這個參數可以通過 lua腳本來獲取

lua 獲取自定義編號的參數定義

nRet, strCanSu= mobox.getParameter(strLuaDEID, ‘9001’)

 

]]>
mobox3對excel導入(表頭帶分組) http://m.shyd8.com/3079/ Thu, 05 Sep 2024 07:26:12 +0000 http://m.shyd8.com/?p=3079 mobox3對excel數據導入是一個非常重要的及常見的工作。但用戶為了excel更直觀,有可能會對excel表頭設置分組。參考下圖

我們可以看到,excel第一行是分組行(項目基礎信息,P1,P2)

在P1 下面有 計劃日期;在P2下面也有 計劃日期 ,2個字段名稱是一樣的。我們做讀取數據的時候必須要依賴分組 P1P2的定義才能區分

我們在做excel導入的時候,針對這類表格。我們需要如下處理

1、導入按鈕設置

 

2、在導入腳本的地方主要通過分組屬性來區分字段

?if (strAttr == ‘計劃日期’) then
?strValue = ProcessDayTimeStr(strValue) –日期格式轉換
?if (ext_col_info[1]==”P0″) then? ? ? ? ? — 判斷是哪個分組的
strP0 = strValue
strAddAttr = strAddAttr .. ‘{“attr”:”D_PX”,”value”:”‘ .. strP0 .. ‘”},’
elseif (ext_col_info[1] == ‘P1’) then
strP1 = strValue
strAddAttr = strAddAttr .. ‘{“attr”:”D_P1″,”value”:”‘ .. strP1 .. ‘”},’
end
end
]]>
AM群消息歷史記錄服務器端清理 http://m.shyd8.com/2903/ Mon, 01 Jul 2024 04:11:03 +0000 http://m.shyd8.com/?p=2903 AM群消息默認是永久保留,但數據過大后可能會影響速度。我們可以分析一下要保留的年限,按需要可以對群消息記錄做一下清理操作

Declare @strSQL as nvarchar(1024)
Declare @strTable as nchar(19)
Declare @nOrder as int
Declare @strTabOrder as nvarchar(3)
Set @nOrder = 1
While @nOrder < 1000
Begin
Set @strTabOrder = REPLACE( str( @nOrder, 3 ), N’ ‘, N’0’ )
Set @strTable= N’OI_CROWD_C_MSG_T’ + @strTabOrder
— 判斷數據表是否存在,不存在就結束
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[‘ + @strTable + ‘]’) AND OBJECTPROPERTY(id, N’IsUserTable’) = 1)
RETURN
— 執行刪除記錄,刪除指定日期之前的記錄
Set @strSQL = N’Delete ‘ + @strTable + N’ Where T_C5 < ”2017-10-07”’
EXECUTE sp_executesql @strSQL
Set @nOrder = @nOrder + 1
End
腳本里面的 ”2017-10-07”’ ,是需要自己改的,意思是清理掉這個日期之前的記錄

 

]]>
Mobox數據庫版本的查看 http://m.shyd8.com/2875/ Thu, 20 Jun 2024 01:45:06 +0000 http://m.shyd8.com/?p=2875 Mobox數據庫版本的查看

— 20171220 以后用這個查詢,以前的用 showdbver20171226 – oldziduan.txt 查詢

— 使用前 請修改 老的數據庫名稱 目前用的是 OIOrg.dbo OIAm.dbo OIFile.dbo OIMobox.dbo (老庫用 DMS.dbo)

declare @OIOrgDBVer varchar(40)
declare @AMDBVer varchar(40)
declare @OIFileDBVer varchar(40)
declare @DMSDBVer varchar(40)
declare @CODEDBVer varchar(40)
declare @GunghoVer varchar(40)
declare @REMINDDBVer varchar(40)
declare @WMSDBVer varchar(40)
declare @ISSUEDBVer varchar(40)
declare @PRINTDBVer varchar(40)

select @OIOrgDBVer = ‘OIOrgDB ‘ +(select S_C1 from OIOrg.dbo.OI_ORG_DBVER) + ‘ New- 20230327’

select @AMDBVer = ‘AM8DB ‘ +(select S_C1 from OIAm.dbo.OI_STK_DBVER) + ‘ New- 20200327’

select @OIFileDBVer = ‘OIFileDB ‘ +(select S_C1 from OIFile.dbo.OI_FILE_DBVER) + ‘ New- 20151106’

select @DMSDBVer = ‘DMSDB ‘ +(select CN_S_DMS from OIMobox.dbo.OI_SYS_DBVER) + ‘ New- 20240321’

select @GunghoVer = ‘GunghoDB ‘ +(select CN_S_GUNGHO from OIMobox.dbo.OI_SYS_DBVER) + ‘ New- 20240516’

select @WMSDBVer = ‘WMSDB ‘ +(select CN_S_WMS from OIMobox.dbo.OI_SYS_DBVER) + ‘ New- 20240419’

— select @ISSUEDBVer= ‘ISSUEDB ‘ +(select CN_S_ISSUE from OIMobox.dbo.OI_SYS_DBVER) + ‘ New- 20171110’

select @PRINTDBVer = ‘PRINT ‘ +(select CN_S_PRINT from OIMobox.dbo.OI_SYS_DBVER) + ‘ New- 20171110’

— select @CODEDBVer = ‘CODEDB ‘ +(select CN_S_CODE from OIMobox.dbo.OI_SYS_DBVER) + ‘ New- 20171110’

print ‘列出目前所有數據庫版本日期’
print @OIOrgDBVer
print @AMDBVer
print @OIFileDBVer
print @DMSDBVer
print ‘———————- Mobox3Ver 20240613’
print @GunghoVer
— print @CODEDBVer
print @WMSDBVer
— print @ISSUEDBVer
print @PRINTDBVer

 

]]>
Mobox 3000功能點頁面按鈕隱藏的lua實現方法 http://m.shyd8.com/2590/ Thu, 18 Apr 2024 03:06:07 +0000 http://m.shyd8.com/?p=2590 需求,我們有一個任務執行后,需要對這個任務做后做評價。為此與任務系統集成通過3000功能點定義了一個任務評分的功能點。任務評分后,不能通過新增,對這個任務再次增加一個評分。因此第一個任務評分后,需要將頁面按鈕(新增)隱藏掉

腳本列子

— 功能:
— 3000 功能點 列出與某一個taskid相關的數據
— 若列出數據已經有,將 新增 頁面按鈕屏蔽 (這個功能是做任務評測結果的,結果只能有一個,不可能多個)
————————————————————————–
json = require (“json”)
mobox = require (“OILua_JavelinExt”)

function shownowtaskdata ( strLuaDEID )

local nRet, strRetInfo
local nType
local strTaskID
local bHidden=false
local strClsID=""
--拿到數據對象標識
nRet, strRetInfo = mobox.getCurEditExtInfo( strLuaDEID )
if ( nRet ~= 0 ) then
    mobox.error( strLuaDEID, "系統獲取擴展屬性失敗 "..strRetInfo )
    return
end
if ( strRetInfo =='' or strRetInfo==nil or strRetInfo=='{}' ) then
    mobox.error( strLuaDEID, "系統獲取擴展屬性為空!" )
    return
end
local extinfo = json.decode( strRetInfo )
strClsID=extinfo.cls_id -- 得到當前cls的id ,下面操作需要

— 獲取任務全局屬性 (這個案例是與 Gungho任務系統集成,所以需要這個參數,別的環境這個可以忽略
nRet, strRetInfo = mobox.getGlobalAttr( strLuaDEID, “task_id” )
if ( nRet ~= 0 or strRetInfo == ” ) then
mobox.error( strLuaDEID, “系統無法獲取任務號 “..strRetInfo )
return
end
local input_paramter = json.decode( strRetInfo )
local strTaskID = input_paramter[1].value

local strCondition
strCondition = "G_TASK_ID='"..strTaskID.."'"

--增加隱藏按鈕的依據-通過條件查詢返回符合數據>0 既隱藏
-- local strQeuryCondition="S_TESTITEM='X'" (定義grid某一個字段內有某些數值 這里沒有啟用)
nRet, strRetInfo = mobox.getDataObjCount(strLuaDEID, strClsID, strCondition)
if (nRet ~= 0 ) then
    mobox.error(strLuaDEID, "得到數據數量失敗,原因:" .. strRetInfo)
    return
end

--轉為整數類型
local nDataCount = tonumber(strRetInfo)
if (nDataCount >0) then
    bHidden=true
end

--隱藏頁面按鈕 “新增”
local strHiddenButton = ''
if (bHidden) then
    strHiddenButton =
    ',{"action_type":"hidden_button","value":[{"name":"新增"}]}'
end

local strAction = '[{"action_type":"set_query_condition","value":{"where":"' .. strCondition .. '","order":""}}'
strAction = strAction .. strHiddenButton .. ']'
mobox.setAction( strLuaDEID, strAction )
end
這個列子也可以用于別的一些非法字符串的處理
]]>
lua 對回車(%3Cbr%3E)處理方法 http://m.shyd8.com/2537/ Thu, 11 Apr 2024 05:02:28 +0000 http://m.shyd8.com/?p=2537 我們在Gird列出數據的時候,若數據內帶%3Cbr%3E,其實是回車的意思,若grid讀出數據不做任何處理,那么就會影響系統表達

為了解決這個問題,我們可以編輯一個lua腳本,將這個數據做處理后再顯示(在顯示前事件里面定義這個lua腳本)

腳本列子

–[[
? ? 功能說明:
? ? ? ? 1) 顯示前做一些字段的處理
? ? ? ? 2)前端導入,新增有換行符號 %%3Cbr%%3E  ,替換成 <br> 前端html支持的換行內容
? ? ? ? 3)內容中有&,替換成 & 前端解析 &不支持,最好在輸入時進行替換
–]]
json = require(“json”)
mobox = require(“OILua_JavelinExt”)
require(“oi_basestrfunc”)
function BeforeGridShow(strLuaDEID)
? ? local nRet, strRetInfo
? ? local arobjs, attrs, success
? ? — 獲取輸入的DataJson數據包
? ? nRet, strRetInfo = mobox.getCurEditDataPacket(strLuaDEID)
? ? if (nRet ~= 0) then
? ? ? ? mobox.error(strLuaDEID, “無法獲取數據包!”)
? ? ? ? return
? ? end
? ? if (strRetInfo == ” or strRetInfo == nil) then
? ? ? ? return
? ? end
? ? — 解析數據包,數據包格式
? ? — [{“id”:””,”attrs”:[{“attr”:””,”value”:””},..]},..]
? ? local n, nCount
? ? success, arobjs = pcall(json.decode, strRetInfo)
? ? if (success == false) then
? ? ? ? mobox.error(strLuaDEID, “非法的JSON格式!”)
? ? ? ? return
? ? end
? ? nCount = #arobjs
? ? if (nCount == 0) then
? ? ? ? return
? ? end
? ? local obj, attrs
? ? local nattr_count
? ? local strRow, strAttr, strItem
? ? local strDataJson
? ? local id, strValue
? ? local strAttrs
? ? strDataJson = ‘[‘
? ? local seg = {}
? ? local nSegCount = 0
? ? for n = 1, nCount do
? ? ? ? obj = arobjs[n]
? ? ? ? attrs = obj.attrs
? ? ? ? nattr_count = #attrs
? ? ? ? id = obj.id
? ? ? ? strAttrs=”
? ? ? ? — 開始過濾顯示數據對象屬性
? ? ? ? for nIndex = 1, nattr_count do
? ? ? ? ? ? strAttr = attrs[nIndex].attr
? ? ? ? ? ? strValue = attrs[nIndex].value
? ? ? ? ? ? strValue = strValue:gsub(“%%3Cbr%%3E”, “<br>”)
? ? ? ? ? ? strValue = strValue:gsub(“&”, “&”)
? ? ? ? ? ? strItem = ‘{“attr”:”‘ .. strAttr .. ‘”,”value”:”‘ .. strValue .. ‘”},’
? ? ? ? ? ? strAttrs = strAttrs .. strItem
? ? ? ? end
? ? ? ? — 取消最后一個,號
? ? ? ? strAttrs = trim_laster_char(strAttrs)
? ? ? ? strRow = ‘{“id”:”‘ .. id .. ‘”,”attrs”:[‘ .. strAttrs .. ‘]},’
? ? ? ? strDataJson = strDataJson .. strRow
? ? end
? ? — 取消最后一個,號
? ? strDataJson = trim_laster_char(strDataJson)
? ? strDataJson = strDataJson .. ‘]’
? ? local strAction = ‘[{“action_type”:”reset_data_attr”,”value”:’ .. strDataJson .. ‘}]’
? ? mobox.setAction(strLuaDEID, strAction)
end
這個列子也可以用于別的一些非法字符串的處理
]]>
SQLServer 2008 以上版本數據庫日志清理(親測) http://m.shyd8.com/2393/ Sun, 24 Mar 2024 07:54:25 +0000 http://m.shyd8.com/?p=2393 當數據庫的日志文件太大的情況下,SQLServer 2008 以上版本進行數據庫日志清理,需要采用的方法如下(執行前 將數據庫名 改成你需要清理的數據名稱)


–1)查詢指定數據庫的 <數據庫日志文件名稱>? ,通過下面的sql的語句查詢到<數據庫日志文件名稱>,替換到下面sql的<數據庫日志文件名稱>
USE [數據庫名]
GO
SELECT name FROM SYS.database_files WHERE type_desc=’LOG’

–2)執行后清理該數據庫日志文件
USE [master]
GO
ALTER DATABASE [數據庫名] SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE [數據庫名] SET RECOVERY SIMPLE
GO
USE [數據庫名]
GO
DBCC SHRINKFILE (N’數據庫日志文件名稱‘ , 0,TRUNCATEONLY)
GO
USE [master]
GO
ALTER DATABASE [數據庫名] SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE [數據庫名] SET RECOVERY FULL
GO
]]>
Gungho任務二次開發-任務分類集成3000功能的擴展屬性excel導入 http://m.shyd8.com/2176/ Mon, 26 Feb 2024 05:43:40 +0000 http://m.shyd8.com/?p=2176 Gungho任務二次開發-任務分類集成3000功能的清單導入

這個是一個標準的導入模板 ,使用前可以通過修改 表名,字段名稱,字段中文名,字段對應賦值變量名稱。

–[[

這個是一個標準的腳本,可以

1、修改里面的數據對象名稱 樣品技術參數

2、字段相關名稱(字段中文名、字段名稱、字段賦值變量名稱)

字段名稱? ? ? ? ? ? ? ? ? ? ? ? ? ? 字段中文名? ? ? ? ? 字段對應賦值變量名

N_SN? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?序號? ? ? ? ? ? ? ? ? ? ?nSN

S_ITEM_NAME? ? ? ? ? ? ? ? ?名稱? ? ? ? ? ? ? ? ? ? ?strItemName

S_ITEM_M_S_N? ? ? ? ? ? ? ?型號_規格_數量? ?strItemMSN

S_ITEM_CODE? ? ? ? ? ? ? ? ?編號? ? ? ? ? ? ? ? ? ? ?strItemCode

S_MANUFACTURER? ? ? ? 生產單位? ? ? ? ? ? ? strFacturer

3、若字段不夠多,或太多,需要調整程序

4、里面的唯一性判斷是 task_id + S_ITEM_NAME + S_ITEM_CODE (需要根據情況調整)

–]]

功能說明:json = require(“json”)

mobox = require(“OILua_JavelinExt”)

require(“oi_basestrfunc”)

function ImportExcle(strLuaDEID)

local nRet, strRetInfo

local strPrjID = ”

local strTaskID = ”

— 獲取全局變量 prj_id, task_id

nRet, strRetInfo = mobox.getGlobalAttr( strLuaDEID, “task_id”,”prj_id” )

if ( nRet ~= 0 or strRetInfo == ” ) then

mobox.error( strLuaDEID, “系統無法獲取全局變量 “..strRetInfo )

return

end

local input_paramter = json.decode( strRetInfo )

strTaskID = input_paramter[1].value

strPrjID = input_paramter[2].value

if ( strTaskID == ” ) then

mobox.error( strLuaDEID, “必須要有項目及任務相關信息” )

return

end

— 獲取導入的單條數據, 返回 {“id”:”xxx”,”attrs”:[{“attr”:”attr1″,”value”:”xxx1″},{“attr”:”attr2″,”value”:”xxx2″}, …]}

nRet, strRetInfo = mobox.getInputParameter(strLuaDEID)

if (nRet ~= 0 or strRetInfo == ” ) then

mobox.error(strLuaDEID, “無法獲取導入數據!”..strRetInfo)

return

end

local n, nCount, nValue

local strAddAttr = ”

local strAttr = ”

local strSetSQL = ”

— 一些關鍵屬性 (腳本 后期只需要改字段名稱就可以)

local nSN? ? ? ? ? ? ? ? ? ? ? ? ? ?— 對應 序號 N_SN

local strItemName = ”? ? ? ? — 對應 名稱 S_ITEM_NAME

local strItemMSN = ”? ? ? ? ?— 對應 型號_規格_數量 S_ITEM_M_S_N

local strItemCode = ”? ? ? ? ?— 對應 編號 S_ITEM_CODE

local strFacturer = ”? ? ? ? ? ? — 對應 生產單位 S_MANUFACTURER

 

— 因為每次導入只傳一條記錄,所以當前條寫入 prj_id 及 task_id

strAddAttr = strAddAttr .. ‘{“attr”:”G_TASK_ID”,”value”:”‘ .. strTaskID .. ‘”},’

strAddAttr = strAddAttr .. ‘{“attr”:”G_PRJ_ID”,”value”:”‘ .. strPrjID .. ‘”},’

local retJson =json.decode(strRetInfo)

local input_rows =retJson[“parameter”]

— 步驟1 獲取從excel導入的一行數據,根據excel的列定義進行屬性組合 strAddAttr

nCount = #input_rows

for n = 1, nCount do

strAttr = input_rows[n].attr

strValue = input_rows[n].value

— 根據導入的excel列頭名稱進行判斷

— 關鍵屬性判斷

if (strAttr == “名稱”) then

if (strValue == ”) then

mobox.error(strLuaDEID, strAttr .. “不能為空!”)

return

end

strItemName = strValue
strAddAttr = strAddAttr .. ‘{“attr”:”S_ITEM_NAME”,”value”:”‘ .. strItemName .. ‘”},’

 

— 常規屬性

elseif (strAttr == “序號”) then

nSN = strValue
strAddAttr = strAddAttr .. ‘{“attr”:”N_SN”,”value”:”‘ .. nSN .. ‘”},’

elseif (strAttr == “型號_規格_數量”) then

strItemMSN = strValue
strAddAttr = strAddAttr .. ‘{“attr”:”S_ITEM_M_S_N”,”value”:”‘ .. strItemMSN .. ‘”},’

elseif (strAttr == “編 號”) then

strItemCode= strValue
strAddAttr = strAddAttr .. ‘{“attr”:”S_ITEM_CODE”,”value”:”‘ .. strItemCode .. ‘”},’

elseif (strAttr == “生產廠家”) then

strFacturer = strValue
strAddAttr = strAddAttr .. ‘{“attr”:”S_MANUFACTURER”,”value”:”‘ .. strFacturer .. ‘”},’

end

end
–去除最后一個,
local strAddAttr1 = trim_laster_char(strAddAttr)

— 步驟2 根據 (名稱+編號+taskid) 來判斷導入的檢測數據是否已經存在
— 如果已經存在,根據導入的數據進行覆蓋
— 如果不存在需要創建
local attrs
local strCondition = “S_ITEM_NAME='” .. strItemName .. “‘ and G_TASK_ID='”..strTaskID..”‘ and S_ITEM_CODE='” .. strItemCode.. “‘”
nRet, strRetInfo = mobox.existThisData(strLuaDEID, “樣品技術參數”, strCondition)
if (nRet ~= 0 ) then

mobox.error(strLuaDEID, “在檢查樣品技術參數是否存在時失敗! ” .. strRetInfo)

return
end

if (strRetInfo == ‘yes’) then

— 已經存在,根據導入的數據進行覆蓋

strCondition = “S_ITEM_NAME='” .. strItemName .. “‘ and G_TASK_ID='”..strTaskID..”‘ and S_ITEM_CODE='” .. strItemCode.. “‘”

strSetSQL = “N_SN='” ..nSN.. “‘, S_ITEM_NAME = ‘” .. strItemName ..”‘ , S_ITEM_CODE ='” ..strItemCode .. “‘ , S_ITEM_M_S_N = ‘” .. strItemMSN ..”‘ “

nRet, strRetInfo = mobox.updateDataAttrByCondition(strLuaDEID, “樣品技術參數”, strCondition, strSetSQL)

if (nRet ~= 0) then

mobox.error(strLuaDEID, strRetInfo)

return

end

elseif (strRetInfo == ‘no’) then

— 創建 樣品技術參數

— mobox.writeSysLog(“strAddAttr1”, strAddAttr1)

strAddAttr1 = ‘[‘ .. strAddAttr1 .. ‘]’

mobox.writeSysLog(“strAddAttr2”, strAddAttr1)

nRet, strRetInfo = mobox.createDataObj(strLuaDEID, “樣品技術參數”, strAddAttr1)

if (nRet ~= 0) then

mobox.error(strLuaDEID, “創建樣品技術參數失敗! ” .. strRetInfo )

return
end

end
end

 

function
]]>
亚洲成熟丰满熟妇高潮XXXXX| 亚洲VA成无码人在线观看| 亚洲AV成人精品日韩一区麻豆| 亚洲国产精品久久精品成人网站| 夜夜精品无码一区二区三区 | 偷拍亚洲另类无码专区制服| 亚洲第一无码精品一区| 中文字幕丰满乱子伦无码专区 | 伊人久久精品亚洲午夜| 被黑人猛男强伦姧人妻完整版| 国产成人精品白浆久久69| 精品精品国产欧美在线| 欧美成人精品 一区二区三区| 色欲香天天综合网站| 亚洲AV自慰白浆喷水网站少妇| 中文字幕AⅤ天堂在线| 初尝人妻少妇中文字幕| 果冻传媒一二三工厂免费观看| 某处紧密的结合在一起| 四虎AV永久在线精品免费观看| 亚洲人成人无码www五月婷| XXXX18HD亚洲HD护士| 国产午夜福利精品久久| 拒嫁豪门少奶奶99次出逃| 日本强伦姧人妻久久影片| 羞羞午夜爽爽爽爱爱爱爱人人人| 中国亚洲女人69内射少妇| 公和熄洗澡三级在线观看| 精品无码国产一区二区三区麻豆 | きょこんきょうしゃ在线| 国产午夜成人免费看片APP| 母亲とが话していま在线观看| 熟女一区二区蜜桃视频| 一二三四影视在线观看免费视频| 成人无码无遮挡很H在线播放| 精品国产乱码一区二区三区APP| 亲孑伦视频一区二区三区| 亚洲AⅤ爽爽香蕉久久影片| 99久久人妻精品免费二区| 国产亚洲AV寡妇| 屁屁草草影院CCYYCOM| 亚洲国产成人精品女人久久久 | 美丽人妻被按摩中出中文字幕| 天天做天天爱夜夜夜爽毛片| 中文在线っと好きだった| 国产女人18毛片水真多18精品 | 饥渴人妻被快递员玩弄视频 | www.xx欧美大鸡巴| 精品 日韩 国产 欧美 视频| 日韩AV午夜在线观看| 一本久久A精品一区二区| 国产激情久久久久久熟女老人 | 国产女主播喷水视频在线观看| 妺妺窝人销魂体色www| 亚洲AV色一区二区三区蜜桃 | 国产农村妇女毛片精品久久麻豆| 欧美大屁股XXXX高跟欧美黑人| 亚洲AV网站在线| 成人无码AⅤ久久精品国产传媒| 久久久国产精品一区二区18禁| 天堂在/线中文在线资源8| 最新高清中文字幕免费MV| 狠狠噜天天噜日日噜AV| 色欲av无码一区二区人妻精油| 中文字幕AV无码一区电影DVD| 国产又黄又爽胸又大免费视频 | H纯肉无码精品动漫在线观看| 激情射精爆插热吻无码视频| 四虎无码永久在线影库网址一个人| 中文字字幕在线中文无码| 黄桃AV无码免费一区二区三区 | 反差婊吃瓜黑料热门网曝| 麻豆熟妇人妻XXXXXX| 亚洲国产AV无码一区二区三区| 观看国产色欲色欲色欲WWW| 欧美成本人网站免费观看| 亚洲欧洲无码AV电影在线观看| 国产精品久久久久精品麻豆| 人妻系列无码专区久久五月天| 中国CHINAGARY武警网站| 精产国品一二三产品区别在哪里| 偷炮少妇宾馆半推半就激情| 宝宝又大了1V1| 内射女校花一区二区三区| 亚洲一码二码三码区别在哪| 国产午夜无码视频在线观看| 色婷婷色综合激情国产日韩| FREEHDⅩXXXXSEX| 蜜桃国产乱码精品一区二区三区w| 亚洲精品成人久久久| 国产偷国产偷亚洲高清日韩| 舌头伸进去添的我好爽高潮欧美 | 亚洲色偷偷偷综合网 | 亚洲AV成人无码久久精品澳门| 国产A1A2A3| 日韩免费无码成人久久久久久片| Chinese老女人老熟妇HD| 迷迷糊糊挺进岳身体| 亚洲香蕉成人AV网站在线观看| 怀孕挺大肚子疯狂高潮AV毛片| 午夜A级成人免费毛片| 国产ZLJZLJZLJZLJ| 色欲av无码一区二区人妻精油| 把腿张开老子cao烂你n视频| 欧美人与动牲交免费观看视频| 中文字幕乱码亚洲无线码三区| 久久人人做人人妻人人玩精品HD| 亚洲欧美另类在线观看| 婚后失控BY南城非梦| 亚洲精品AⅤ中文字幕乱码| 豪妇荡乳1一5潘金莲2在线| 新版孕妇BBWBBW| 国产免费一区二区三区免费视频| 无码精品、日韩专区| 国产精品久久久久精品综合紧| 天天躁日日躁狠狠躁欧美老妇 | 熟女俱乐部五十路二区AV| 成熟丰满女人丰满妇女aⅴ| 日韩欧美成人免费观看| 成人无码午夜在线观看| 日韩午夜理论免费TV影院| 对白脏话肉麻粗话AⅤ| 色婷婷欧美在线播放内射| 国产69精品久久久久久人妻精品| 少妇┅┅快┅┅用力| 国产GV无码永久精品同性男男| 熟女乱中文字幕熟女熟妇| 国产高清不卡一区二区| 无码人妻久久一区二区三区 | 男生听到女生喘气是什么心理现象| 中文字幕AV一区| 欧美极度残忍另类| 差差差很疼30分钟视频| 色噜噜狠狠色综合久色AⅤ网| 公交车上拨开她湿润的内裤| 玩弄肥美高大的熟妇| 国产肉体XXXX裸体137大胆| 亚洲成人AV免费| 久久久久精品精品6精品精品| 一边做一边喷17P亚洲乱妇| 免费无码AV片在线观看网站| 69日本人XXXX16-18| 人人妻人人澡人人爽人人| 纯肉无遮挡H肉动漫在线观看国产| 熟妇女人妻丰满少妇中文字幕性生活| 国产成人免费AV一区二区午夜 | 国产精品亚洲色婷婷99久久精品| 午夜成人理论无码电影在线播放| 狠狠色噜噜狠狠狠888米奇视频| 亚洲日本乱码一区二区在线二产线| 久久亚洲私人国产精品| FREEZEFRAME丰满老妇| 色哟哟网站在线观看入口| 国产精品一区二区 尿失禁| 亚洲国产精品久久久久秋霞影院 | 亚洲色成人网站www观看入口| 开丫头小嫩苞疼死了| Chinese丰满熟妇高潮| 色在线 | 国产| 狠狠色丁香婷婷综合潮喷| 伊人久久精品久久亚洲一区| 欧美又粗又长XXXXBBBB疯| 国产999精品成人网站| 亚洲AV永久无码精品尤物| 老湿机69福利区无码| www.av在线.com| 天天天欲色欲色WWW免费| 精品国产免费人成网站| 国产L精品国产亚洲区久久| 日本做受高潮好舒服视频| 国产精品一区二区AV麻豆| 野花日本免费完整版高清版8| 欧美人与物VIDEOS另类XX| 国产WW久久久久久久久久| 亚洲精品一区二区丝袜图片| 哦┅┅快┅┅用力啊┅┅在线观看 | 啊轻点内射在线视频| 无码人妻一区二区三区密桃手机版 | ASS年轻少妇BBWPICS| 婷婷五月花丁香综合| 久久精品国产亚洲AⅤ无码| XXXX性×XX老少配| 性欧美丰满熟妇XXXX性| 蜜臀人妻四季AV一区二区不卡| 敌伦交换第21部分剧情介绍| 亚洲AV永久无码精品无码流畅| 麻豆传煤入口免费进入2023| 俄罗斯女人与马Z00Z视频| 亚洲国产美女久久久久 | AV片在线观看网站免费| 污污免费看锕锕锕锕锕锕| 久久五月丁香综合中文亚洲| 成午夜福利人试看120秒| 亚洲国产成人久久一区二区三区| 女人两腿扒开图片大全| 国产亲妺妺乱的性69视频播放| 19岁MACBOOKPRO日本| 午夜欧美精品久久久久久久| 男女无遮挡XX00动态图120秒| 国产老熟女狂叫对白|