下面腳本是向資料庫中的表contract輸入資料,但是輸入資料后,只顯示原來就有的資料,無法顯示新輸入的內容,請各位看看,有沒有地方不對?
另外:我的另一個表staff,用了同樣的腳本,輸入資料,是可以顯示新輸入的內容,為什么contract表就不行呢?很是奇怪啊???
long ll_id,ll_i
date ld_open,ld_end
string ls_name,ls_sex,ls_tel,ls_idno,ls_company,ls_type,ls_city,ls_home
//資料格式檢驗
if sle_id.text="" or isnull(sle_id.text) then
messagebox("缺少資料","請輸入號碼")
sle_id.setfocus()
return
elseif sle_name.text="" or isnull(sle_name.text) then
messagebox("缺少資料","請輸入號碼")
sle_name.setfocus()
return
end if
ll_id=long(sle_id.text)
//取出性別選擇
if rb_man.checked=true then
ls_sex=rb_man.text
elseif rb_woman.checked=true then
ls_sex=rb_woman.text
end if
//檢查號碼是否重號
SELECT contract.sta_id
INTO:ll_i
FROM contract
WHERE contract.sta_id=:ll_id;
if ll_i<>0 then
messagebox("錯誤資訊","編號第"+string(ll_i)+"號重號!請改正。")
sle_id.setfocus()
return
end if
ls_name=trim(sle_name.text)
ls_idno=trim(sle_idno.text)
ls_tel=trim(sle_tel.text)
ls_company=trim(sle_company.text)
ls_type=trim(sle_type.text)
ls_city=trim(sle_city.text)
ls_home=trim(sle_home.text)
ld_open=date((sle_open.text))
ld_end=date((sle_end.text))
//向資料庫表contract輸入資料
INSERT INTO "contract"
("sta_id",
"name",
"idno",
"sex",
"home",
"city",
"type",
"tel",
"open",
"end",
"company",
"remark")
VALUES
(:ll_id,
:ls_name,
:ls_idno,
:ls_sex,
:ls_home,
:ls_city,
:ls_type,
:ls_company,
:ls_tel,
:ld_open,
:ld_end,
:mle_remark.text);
//資料寫入后,將輸入控制元件全部置空
sle_id.text=""
sle_name.text=""
sle_idno.text=""
sle_type.text=""
sle_company.text=""
sle_tel.text=""
sle_city.text=""
sle_home.text=""
sle_open.text=""
sle_end.text=""
mle_remark.text=""
sle_id.setfocus() //將游標放到“號碼”輸入欄
uj5u.com熱心網友回復:
提一個問題就可以了uj5u.com熱心網友回復:
只是insert 也不提交,你的程式不鎖表嗎?uj5u.com熱心網友回復:
long ll_id,ll_idate ld_open,ld_end
string ls_name,ls_sex,ls_tel,ls_idno,ls_company,ls_type,ls_city,ls_home
//資料格式檢驗
if sle_id.text="" or isnull(sle_id.text) then
messagebox("缺少資料","請輸入號碼")
sle_id.setfocus()
return
elseif sle_name.text="" or isnull(sle_name.text) then
messagebox("缺少資料","請輸入號碼")
sle_name.setfocus()
return
end if
ll_id=long(sle_id.text)
//取出性別選擇
if rb_man.checked=true then
ls_sex=rb_man.text
elseif rb_woman.checked=true then
ls_sex=rb_woman.text
end if
//檢查號碼是否重號
SELECT contract.sta_id
INTO:ll_i
FROM contract
WHERE contract.sta_id=:ll_id;
if ll_i<>0 then
messagebox("錯誤資訊","編號第"+string(ll_i)+"號重號!請改正。")
sle_id.setfocus()
return
end if
ls_name=trim(sle_name.text)
ls_idno=trim(sle_idno.text)
ls_tel=trim(sle_tel.text)
ls_company=trim(sle_company.text)
ls_type=trim(sle_type.text)
ls_city=trim(sle_city.text)
ls_home=trim(sle_home.text)
ld_open=date((sle_open.text))
ld_end=date((sle_end.text))
//向資料庫表contract輸入資料
INSERT INTO "contract"
("sta_id",
"name",
"idno",
"sex",
"home",
"city",
"type",
"tel",
"open",
"end",
"company",
"remark")
VALUES
(:ll_id,
:ls_name,
:ls_idno,
:ls_sex,
:ls_home,
:ls_city,
:ls_type,
:ls_company,
:ls_tel,
:ld_open,
:ld_end,
:mle_remark.text);
string ls_err
if sqlca.sqlcode=-1 then
ls_err = sqlca.sqlerrtext
rollback;
messgebox("",ls_err )
else
commit;
end if
//資料寫入后,將輸入控制元件全部置空
sle_id.text=""
sle_name.text=""
sle_idno.text=""
sle_type.text=""
sle_company.text=""
sle_tel.text=""
sle_city.text=""
sle_home.text=""
sle_open.text=""
sle_end.text=""
mle_remark.text=""
sle_id.setfocus() //將游標放到“號碼”輸入欄
uj5u.com熱心網友回復:
這樣寫,那用其他的工具比較好呀,uj5u.com熱心網友回復:
xys_777老大,我按照你的修改,重新運行,還是不行,提示出錯,好像是輸入的數值不對。唉.....怎么辦啊?uj5u.com熱心網友回復:
是否是欄位的型別和你insert的型別不一致造成的,檢查一下表結構吧uj5u.com熱心網友回復:
應該不是欄位型別和insert的型別不一致造成的,因為我另外一個表就可以,為什么這個表就不行呢?我的欄位型別、賦值、和定義型別如下:
long ll_id,ll_i
string ls_name,ls_sex,ls_tel,ls_idno,ls_company,ls_type,ls_city,ls_home
date ld_open,ld_end
欄位 型別 賦值
sta_id char, 賦值是:ll_id
name char,賦值是:ls_name
idno char,賦值是:ls_idno
sex char,賦值是:ls_sex
home char,賦值是:ls_home
city char,賦值是:ls_city
type char,賦值是:ls_type
tel char,賦值是:ls_tel
open date,賦值是:ld_open
end date,賦值是:ld_end
company char,賦值是:ls_company
remark varchar,賦值是:mle_remark
問:是否允許向一個資料庫中的幾個表格插入資料?
uj5u.com熱心網友回復:
提示出來就是好的,把提示的資訊全貼出來
uj5u.com熱心網友回復:
完全沒用上PB資料視窗的強大功能建議慢慢習慣用資料視窗的update
uj5u.com熱心網友回復:
xys_777老大,提示的內容如下:SQLSTATE=21S01
[Sybase][ODBC Driver][Adaptive Server Anywherr]Insert value list does not match column list:Wrong number of values for INSERT
uj5u.com熱心網友回復:
sta_id char, 賦值是:ll_id你的欄位型別和賦值的型別明顯不同啊,欄位是char型別的,賦值是long的,怎么會不報錯呢?
uj5u.com熱心網友回復:
還有你的報錯資訊里也已經提示了:SQLSTATE=21S01
[Sybase][ODBC Driver][Adaptive Server Anywherr]Insert value list does not match column list:Wrong number of values for INSERT
uj5u.com熱心網友回復:
那請問怎么賦值呢?uj5u.com熱心網友回復:
ls_name=trim(sle_name.text)這就是賦值的程序,應該是你賦值的變數中,其中某個欄位的資料型別和你資料庫中的對應的欄位的型別不一致導致保存報錯。
uj5u.com熱心網友回復:
insert陳述句里的欄位數,與你實際表中的欄位數不一致?看看欄位和表結構對應么。。
uj5u.com熱心網友回復:
賦值我已經在上面的代碼中寫了,ls_name=trim(sle_name.text)
ls_idno=trim(sle_idno.text)
ls_tel=trim(sle_tel.text)
ls_company=trim(sle_company.text)
ls_type=trim(sle_type.text)
ls_city=trim(sle_city.text)
ls_home=trim(sle_home.text)
ld_open=date((sle_open.text))
ld_end=date((sle_end.text))
smilysoft大俠,你可以看上面的代碼段,我貼出下面的定義,是想讓大家幫忙看看,是不是定義型別的時候弄錯了,如果錯了,應該怎么定型別。尤其是在寫入資料庫資料的代碼段。
uj5u.com熱心網友回復:
賦值型別和你的欄位型別不一致啊,是把ll_id轉成string再賦給sta_id就可以了啊。
其實sql提示的已經很清楚了,再檢查一下你的sta_id是不是char型別的,是的話就不能用long型別的ll_id賦給它的。
uj5u.com熱心網友回復:
變數和欄位型別不一致uj5u.com熱心網友回復:
頂一下!uj5u.com熱心網友回復:
確實是型別不一致造成的。uj5u.com熱心網友回復:
向高人學習學習再學習轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/86478.html
標籤:腳本語言
上一篇:update
