新增修改有關NULL的問題(ASP+SQL)

Table:t_wf_scrap_metal(ASP+SQL)

名稱 空值? 型態

----------------- --------------- ----------------------

SEQNUM NUMBER(4)

TECH NOT NULL VARCHAR2(12)

LAYER NOT NULL VARCHAR2(4)

AU NUMBER

DENSITY NUMBER

PT NUMBER

PD NUMBER

AG NUMBER

(1)如何判斷新增data時,與主鍵(tech+layer)重複了呢?

(2)如何判斷修改data時,不能修改主鍵(tech+layer)呢?

已更新項目:

我try不出來a~提姆

O7Conn.execute("select count(*) CNT from t_wf_scrap_metal where tech='"& trim(B(i))&"'and layer='"& trim(C(i))&"'")

IF (CNT)>0 Then

response.write ("注意!*為主鍵,無法修改!")

END IF

2 個已更新項目:

我換個模式也try不出來

strsql="select count(*) CNT from t_wf_scrap_metal where tech='"& trim(B(i))&"'and layer='"& trim(C(i))&"'"

Set rs = O7Conn.Execute(strsql)

set rs = server.createobject("adodb.recordset")

rs.open strsql,O7Conn

3 個已更新項目:

IF (CNT)>0 Then

response.write ("注意!*為主鍵,無法修改!")

END IF

4 個已更新項目:

TO:enigma

有辦法做到,判斷如動到就出現訊息框告知的訊息嗎?

1.新增時,出現Tech and Layer己重複了!

2.修改時,出現Tech or Layer 禁止修改!

5 個已更新項目:

我補充我新增的程式如下

strsql="insert into pldmes.t_wf_scrap_metal values('"+request("seqnum")+"','"+request("tech")+"','"+request("layer")+"','"+.........)"

Set rs = O7Conn.Execute(strsql)

6 個已更新項目:

我補充我修改的程式如下

O7Conn.execute("update t_wf_scrap_metal set seqnum='"& trim(A(i))&"' ,Au='"& trim(D(i))&"'.............. where tech='"& trim(B(i))&"'and layer='"& trim(C(i))&"'")

4 個解答

評分
  • 1 0 年前
    最佳解答

    1.新增前先下一個判斷是否有重複的pk值

    EX:

    SELECT COUNT(*) AS CC FROM t_wf_scrap_metal

    WHERE TECH = '"& 帶進來檢查的值 &"' AND LAYER = '"& 帶進來檢查的值 &"'

    2.修改時注意程式,TECH跟LAYER是不允許讓USER異動

    EX:

    UPDATE t_wf_scrap_metal SET SEQNUM = 1, AU = 2, DENSITY = 3, PT= 4, PD = 5, AG = 6 WHERE TECH = '"& 原本的KEY值 &"' AND LAYER = '"& 原本的KEY值 &"'

    2008-09-29 14:37:53 補充:

    不是很懂你想要的是什麼樣的狀況,一般判斷有無重複key,就照上述的sql,有資料就表是有,前端程式加個alert('已有相同的key');來判斷。

    而修改時通常因關聯性的關係,沒人會把key改掉,那是程式上的控制,而不是你想的那樣,要update時再去alert。

    參考資料: 自己, 自己
  • 匿名使用者
    6 年前
  • 1 0 年前

    交付投票吧!

  • 提姆
    Lv 5
    1 0 年前

    假設你畫面上有控制項txtTECH, txtLAYER

     

    執行SQL式並傳回Recordset

    "select count(*) CNT from t_wf_scrap_metal where tech='" & txtTECH& "'

    and layer='"& txtLAYER &"'"

    判斷Recordset("CNT")>0即為重覆。

     

    修改時禁止動txtTECH與txtLAYER即可,不必檢查。

還有問題?馬上發問,尋求解答。