VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

當利用sql語法創立新欄位時被自動設定NOT NULL!想取消該如何試好?

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
sthuang66



註冊時間: 2014-04-27
文章: 171


第 1 樓

發表發表於: 星期一 十一月 30, 2015 6:39 pm    文章主題: 當利用sql語法創立新欄位時被自動設定NOT NULL!想取消該如何試好? 引言回覆

R1表為 seq_n,name,item,fee_N,CHECK_NO,payment它們資料型態是N(6), c(10), C(25), N(6), c ( 8 ) ,C(3)
R2表是 CH_P,payment 它們資料型態是c(6), c(3)
當我把
SELECT R1.seq_n,R1.name,R1.item,R1.fee_N,R1.payment,ALLTRIM(R2.ch_p)+ALLTRIM(R1.check_no) as CHECK_N FROM R1 LEFT JOIN R2 ON R1.payment = R2.payment INTO TABLE DATA
這時候新產生的CHECK_N 欄位會被自動設成NOT NULL格式,我知道是可以用modify structure改正, 我用CAST()函數不行,用set null on 放在select 之前也不行,懇請各位高手指正
---------------------------------------------------------------------------------
我會有這樣需求是因為R1是利用form取的數據!在check_no支票號碼不想每次key快十個字所以利用R2的檔來把資料完備,因為有時的資料不會有key check_no,當利用left join 就會跳出null
回頂端
檢視會員個人資料 發送私人訊息
sthuang66



註冊時間: 2014-04-27
文章: 171


第 2 樓

發表發表於: 星期一 十一月 30, 2015 6:54 pm    文章主題: 引言回覆

我是有想過就ALTER TABLE R1 ADD COLUMN CHECK_N C(12)
接下來把ALLTRIM(CHECK_NO) ----->R1
ALLTRIM(CH_P)-------->R2
兩個表中的兩個欄位相加填入新欄位的傳統VFP語法我就不會了
懇請各位高手教導
回頂端
檢視會員個人資料 發送私人訊息
perry



註冊時間: 2014-07-20
文章: 203


第 3 樓

發表發表於: 星期一 十一月 30, 2015 7:01 pm    文章主題: 引言回覆

試試
SELECT R1.seq_n,R1.name,R1.item,R1.fee_N,R1.payment,left(ALLTRIM(R2.ch_p)+ALLTRIM(R1.check_no)+spac(12),12) as CHECK_N FROM R1 LEFT JOIN R2 ON R1.payment = R2.payment INTO TABLE DATA

ALLTRIM(R2.ch_p)+ALLTRIM(R1.check_no) 這個寫法會造成欄位長度不確定
回頂端
檢視會員個人資料 發送私人訊息
sthuang66



註冊時間: 2014-04-27
文章: 171


第 4 樓

發表發表於: 星期一 十一月 30, 2015 7:53 pm    文章主題: 引言回覆

我試過CAST()!以下不行
SELECT R1.seq_n,R1.name,R1.item,R1.fee_N,R1.payment,CAST(ALLTRIM(R2.ch_p)+ALLTRIM(R1.check_no) AS C(12) NULL) CHECK_N FROM R1 LEFT JOIN R2 ON R1.payment = R2.payment INTO TABLE DATA

TO perry
left(ALLTRIM(R2.ch_p)+ALLTRIM(R1.check_no)+spac(12),12) as CHECK_N 也是會造成新欄位不允許NULL
回頂端
檢視會員個人資料 發送私人訊息
perry



註冊時間: 2014-07-20
文章: 203


第 5 樓

發表發表於: 星期一 十一月 30, 2015 8:00 pm    文章主題: 引言回覆

您 po 的 Select SQL ,VFP 6.0 測不會產生問題!!!
當 r1=r2 時,新欄位有資料,r1#r2 則新欄位出現 .NULL.
回頂端
檢視會員個人資料 發送私人訊息
sthuang66



註冊時間: 2014-04-27
文章: 171


第 6 樓

發表發表於: 星期二 十二月 01, 2015 11:59 am    文章主題: 引言回覆

真的是太厲害了!謝謝perry的指導!
因為我的總表有支票也有現金欄位 現金是不填入Check_no的所以正如你所說的當r1<>r2時會跳null
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4212
來自: Taipei,Taiwan

第 7 樓

發表發表於: 星期二 十二月 01, 2015 1:11 pm    文章主題: 引言回覆

就直接清掉就好了.

代碼:

******************    DENULL
*   將 alias 中,文數字欄位有 .null. 清為空字串或是0
*
*   傳入值:  字串 cALIAS  欲處理的資料表別名
*   傳回值:  無
*   使用方式:  DENULL("ADS")
*
PROCEDURE DENULL
   PARAMETER  cALIAS
   SELECT   &cALIAS
   FCOUNT=AFIELDS(FARRAY,cALIAS)
   FOR I=1 TO FCOUNT
         cSQL="UPDATE "+cALIAS+" SET "
         DO CASE
            CASE   FARRAY(I,2) = 'C'
               cSQL=cSQL+ALLTRIM(FARRAY(I,1))+"=IIF(ISNULL("+ALLTRIM(FARRAY(I,1))+"),'',"+ALLTRIM(FARRAY(I,1))+")"            
               &cSQL
            CASE    FARRAY(I,2) $ 'NFIBY'
               cSQL=cSQL+ALLTRIM(FARRAY(I,1))+"=IIF(ISNULL("+ALLTRIM(FARRAY(I,1))+"),0,"+ALLTRIM(FARRAY(I,1))+")"         
               &cSQL               
            OTHERWISE   
         ENDCASE
      
   NEXT
ENDPROC


CUSROR 唯讀? 請自己搜尋解法. XD
也可以變化一下,用 ALTER TABLE XXXX ALTER COLUMN OOOO NULL 調整


代碼:

SELECT R1.seq_n,R1.name,R1.item,R1.fee_N,R1.payment,ALLTRIM(R2.ch_p)+ALLTRIM(R1.check_no) as CHECK_N FROM R1 LEFT JOIN R2 ON R1.payment = R2.payment INTO TABLE DATA

=DENULL("DATA")

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
perry



註冊時間: 2014-07-20
文章: 203


第 8 樓

發表發表於: 星期二 十二月 01, 2015 3:25 pm    文章主題: 引言回覆

若真的不想顯示 .Null.
Set NullDisplay to ''
回頂端
檢視會員個人資料 發送私人訊息
oldbb



註冊時間: 2007-02-28
文章: 83


第 9 樓

發表發表於: 星期二 十二月 01, 2015 3:45 pm    文章主題: 引言回覆

NVL(R2.ch_p-R1.check_no, "") as CHECK_N
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作