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

要如何用SQL寫出年月日流水號的自動序號

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



註冊時間: 2003-08-13
文章: 22
來自: Taiwan

第 1 樓

發表發表於: 星期三 四月 21, 2004 10:35 pm    文章主題: 要如何用SQL寫出年月日流水號的自動序號 引言回覆

請問各位大大:
我要寫一個程式(例如:出貨管理),欄位中有出貨單號,編碼方式為YYYYMMDDXXX(年月日+流水號),SQL可以將欄位訂義成自動增加,但是小弟的問題是,那流水號必需每日都從001號開始.
我現在是用程式去Check作業日期是否不相同,如果日期不同則去將流水號欄位改成001.
那不知道SQL是否可以直接在新增或儲存中程序直接做有如此設定或者是您有什麼其它處理方式可以給小弟建議.(希望由資料庫來處理不要透過程式).
謝謝您的指教! Very Happy
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
elleryq



註冊時間: 2007-06-21
文章: 766


第 2 樓

發表發表於: 星期四 四月 22, 2004 8:56 am    文章主題: 引言回覆

寫 SQL server 的 store procedure
記得欄位預設值的地方可以填 store procedure 的名字
如此一來就可以達到你要的要求了~~
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
ALLBEAUTY



註冊時間: 2003-08-13
文章: 22
來自: Taiwan

第 3 樓

發表發表於: 星期四 四月 22, 2004 4:06 pm    文章主題: 引言回覆

Elleryq:我對SQL不是很熟,是否可以請您寫一個範例給我學習。謝謝您
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
elleryq



註冊時間: 2007-06-21
文章: 766


第 4 樓

發表發表於: 星期五 四月 23, 2004 8:56 am    文章主題: 引言回覆

老實說,我也不是很熟~~

不過我知道當我知道原理以後
就可以去翻書邊測邊寫~~
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
ALLBEAUTY



註冊時間: 2003-08-13
文章: 22
來自: Taiwan

第 5 樓

發表發表於: 星期五 四月 23, 2004 9:17 am    文章主題: 引言回覆

我了解了,謝謝您
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
TIM001



註冊時間: 2004-04-29
文章: 4


第 6 樓

發表發表於: 星期四 四月 29, 2004 10:43 am    文章主題: 引言回覆

你的意思是字段的默認欄位中填寫store procedure 的名字??但是我又如何讓它在FOPM窗口中體現出來呢?Twisted Evil
回頂端
檢視會員個人資料 發送私人訊息
summer



註冊時間: 2003-06-19
文章: 32


第 7 樓

發表發表於: 星期四 四月 29, 2004 11:27 pm    文章主題: 引言回覆

elleryq 兄的方法可行,唯一的缺憾是除錯不易而且一旦出錯,資料可能返回會有問題...
給您另外一個建議,設計時,該欄位的值設成可 NULL ,然後在該資料表裡使用觸發器來完成這個欄位的計算及填寫工作,因為我在猜,您有可能是要寫會計帳用的傳票流水號欄位,這個方法比較麻煩,在您新增時,重新計算填寫該欄位,若不幸發生錯誤,您可以在設計時,決定該筆記錄要全數放棄或是不管他...
至於要form上顯示,可在觸發器完成後,由觸發器直接返回該欄位的值,由前端接收即可
回頂端
檢視會員個人資料 發送私人訊息
elleryq



註冊時間: 2007-06-21
文章: 766


第 8 樓

發表發表於: 星期二 五月 04, 2004 10:11 am    文章主題: 引言回覆

哈哈~~
summer 說的沒錯喔~~
還是該聽對 MS SQL 學有專精的人說的話才對~~
Smile
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
Ruey



註冊時間: 2003-03-12
文章: 1698
來自: tunglo

第 9 樓

發表發表於: 星期六 五月 08, 2004 2:36 pm    文章主題: 引言回覆

簡單描述一下.在Insert/Update時使用Trigger.
中使用PROCEDURE.即可完成自動編碼.
功能流程就像SUMMER說的一樣.


提共簡單的編碼方式.這只是Idea而已.要管控及強大.
自行想想羅.但已滿足功能的需求~


sample1:
代碼:
CREATE PROCEDURE [test2]
@table  varchar(20),
@field  varchar(20)
AS
declare @len1   int
declare @sno    varchar(10)
declare @YYYYMM varchar(6)
declare @strSql varchar(100)
  --取得年月
  IF len(DatePart(month, getDate())) <2
    set @YYYYMM=cast(DatePart(year, getDate()) as varchar) + '0' + cast(DatePart(month, getDate()) as varchar)
  Else
    set @YYYYMM=cast(DatePart(year, getDate()) as varchar) + cast(DatePart(month, getDate()) as varchar)
 
  --取得編號
  set @strSql='select  max('+ @field +')  from '+ @table +' where substring('+ @field +' ,1,6)='+ @YYYYMM
  --set @sno= (select  max( @field )  from  @table  where substring( @field  ,1,6)= @YYYYMM)
  print @strSql
  exec (@strSql)
 print @sno

GO


sample2:
代碼:
/*自動編號
   
*/
CREATE PROCEDURE usp_自動編號1    @sno  char(10) output
AS declare @YYYYMM char(6),
                 @ano char(10)                 
/*  取得年月   */
if datepart(month,getdate())<10
   select @YYYYMM=str(datepart(year,getdate()),4)+'0'+str(datepart(month,getdate()),1)
else
   begin
   select @YYYYMM=str(datepart(year,getdate()),4)+str(datepart(month,getdate()),2)
   end
/* 取得資料表之編號  */
select @ano=(select max(報價單號)  from 客戶報價單檔 where substring(報價單號,1,6)=@YYYYMM)
/* 給定編號*/
if @ano  is null
  begin
    select @sno=rtrim(@YYYYMM)+'0001'
    /*print @sno*/
  end
else
  begin
    select @sno=str(convert(int,max(@ano))+1)
    /*print @sno*/
  end

GO

_________________
#############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!

學會VFP使用者社區的搜尋,Code才會更有趣~
#############################
回頂端
檢視會員個人資料 發送私人訊息
Ruey



註冊時間: 2003-03-12
文章: 1698
來自: tunglo

第 10 樓

發表發表於: 星期六 五月 08, 2004 2:55 pm    文章主題: 引言回覆

elleryq 寫到:
寫 SQL server 的 store procedure
記得欄位預設值的地方可以填 store procedure 的名字
如此一來就可以達到你要的要求了~~


Access有提共欄位屬性設定自動編號.
但SQL Server應該是沒有辦法這樣做吧!!

另外我使用Firebird.發覺到若是使用IbExpert的話.
它有提共一個好用功能Autoincrement.
簡化你寫自動編碼的程式.
只要勾一勾此欄位就具有自動編號的功能.
編號方式不複雜.那我根本不用去改它.
真是省時省力!!

_________________
#############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!

學會VFP使用者社區的搜尋,Code才會更有趣~
#############################
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> SQL 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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