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

sql語法產生首尾筆的問題
前往頁面 上一頁  1, 2, 3, 4, 5  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
ckp6250



註冊時間: 2004-07-30
文章: 1642


第 46 樓

發表發表於: 星期三 十月 11, 2017 3:10 pm    文章主題: 引言回覆

goodnight 寫到:

ckp大大
忘了說, 程式的問題已經解決了, 要把語法貼上來嗎?
資料庫應該就不用上傳了吧?


  您是說,您的語法也是一行SQL嗎?如果是的話,您貼上來看看,和我想的是否一樣?

  如果您是用原來的prg解決的話,那資料庫要不要上傳,隨您便囉,我只是覺得,好像一行SQL可搞定,如果您有傳資料,我就幫您試試,如果您想【維持現狀】那也不錯呀,事情有解決最要緊。
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
ckp6250



註冊時間: 2004-07-30
文章: 1642


第 47 樓

發表發表於: 星期三 十月 11, 2017 3:16 pm    文章主題: 引言回覆

syntech 寫到:

但我目前覺得麻煩的地方在公司必須有一個自己的網頁主機,
PHP或是ASP.NET 都可以,
當作存取內外部資料的介面.
但這個對有點規模的公司是可以辦到,
不過對小公司就很難,對老公司更難.


您說到重點了,所以,我們的方案是採雲端租用,
小公司或老公司就不用強求他們搞主機了。
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
goodnight



註冊時間: 2008-10-13
文章: 472
來自: 台南市

第 48 樓

發表發表於: 星期三 十月 11, 2017 4:01 pm    文章主題: 引言回覆

ckp6250 寫到:
  公司有 wifi 呀,平板和手機利用同一個 wifi 區段上網,透過定位,就可以確保不會遠端偷打卡。

  s大說:『當然也可以設計成offline的app先把指紋呀,使用者id呀通通放到手機/平板, 但是別人偷走就完蛋, 我猜想這會設計成online的app』果然是行家。
 
  平板出 QR CODE 比較理想啦,同一時間,可以很多人一起個別又同時拍照,會比一個個讀取員工手機上的 QR CODE 要有效率一點。

  資料當然要傳回公司,員工在手機上按 Enter 時,員工編號,時間,就已經傳回主機了。

  我們的考量點除了時髦以外Laughing ,另外是該公司有很多分店,有時人員會調來調去支援,用傳統卡鍾的話,卡片要拿來拿去,而且也不知道這名員工在A店上幾天,B店上幾天,用手機的話,就沒這個問題了,在那裡照相,就知道是那個分店了。

  再說,平板也不會比卡鍾貴,又不用買紙卡,也不用什麼RS232傳輸之類的程序,資料直接進主機,比轉檔要順。

  更重要一點是,用平板搞QR CODE,彈性很大,想要塞什麼資料進去都行,不像硬體卡鍾,功能是固定的,無法改變。

  我們是頭一遭寫考勤啦,沒什麼豐富經驗可提供,只是覺得似乎可行。


我沒有智慧手機耶, 只有傳統手機, 怎麼辦??

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
goodnight



註冊時間: 2008-10-13
文章: 472
來自: 台南市

第 49 樓

發表發表於: 星期三 十月 11, 2017 4:04 pm    文章主題: 引言回覆

ckp6250 寫到:
goodnight 寫到:

ckp大大
忘了說, 程式的問題已經解決了, 要把語法貼上來嗎?
資料庫應該就不用上傳了吧?


  您是說,您的語法也是一行SQL嗎?如果是的話,您貼上來看看,和我想的是否一樣?

  如果您是用原來的prg解決的話,那資料庫要不要上傳,隨您便囉,我只是覺得,好像一行SQL可搞定,如果您有傳資料,我就幫您試試,如果您想【維持現狀】那也不錯呀,事情有解決最要緊。


我的功力還不到一行SQL啦, 雖然我很想, 我的程式是參考sy大提供的碼稍微改一下而成的,
請問程式碼要貼哪?? 是貼在第一樓, 還是直接用回覆的方式貼上?

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
syntech



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

第 50 樓

發表發表於: 星期三 十月 11, 2017 5:16 pm    文章主題: 引言回覆

goodnight 寫到:

我沒有智慧手機耶, 只有傳統手機, 怎麼辦??


一次攻頂.
iphone8 或是 note8,
遇到緊急情況,還可以把手機扔出去當成手榴彈. Shocked Shocked Shocked Shocked

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

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



註冊時間: 2004-07-30
文章: 1642


第 51 樓

發表發表於: 星期三 十月 11, 2017 6:09 pm    文章主題: 引言回覆

goodnight 寫到:

我的功力還不到一行SQL啦, 雖然我很想, 我的程式是參考sy大提供的碼稍微改一下而成的,
請問程式碼要貼哪?? 是貼在第一樓, 還是直接用回覆的方式貼上?


我對dbf比較有興趣,但我講了三回了,您都不提上來,不想理您啦。 Rolling Eyes
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
ckp6250



註冊時間: 2004-07-30
文章: 1642


第 52 樓

發表發表於: 星期三 十月 11, 2017 6:12 pm    文章主題: 引言回覆

goodnight 寫到:

我沒有智慧手機耶, 只有傳統手機, 怎麼辦??


您是聘請山頂洞人嗎?我還真沒遇到這樣的人耶。

但真要是遇到了,也好辦,二條路,自己選

1、趕快去買一支
2、自我了斷
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
syntech



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

第 53 樓

發表發表於: 星期四 十月 12, 2017 8:59 am    文章主題: 引言回覆

我們家版的CSV 檔案.

上班時間 8:00~12:00 13:00~17:00
7:30 以前算加班,算到 8:00
18:00 以後算加班.
重複打卡,上班以較早的為準,下班以較晚的為準.
上班時數及加班時數要分開計算.
上班時數要扣除休息時間,計算為小時.
加班時數也要扣除休息時間,一樣計算為小時.
假日也可以上班(檔案每日重新建立),
計算時應考慮一例一休.休息日加班1~4小時以4小時計算,5~8小時以8小時計算,
超過8小時再加計加班時數.

請用一條長長~~~~~~~~~的SQL 寫完,
並保留日後調整空間.



班別:0上班,1下班,2忘了.
這個範例算正常一點的.

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

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



註冊時間: 2004-07-30
文章: 1642


第 54 樓

發表發表於: 星期四 十月 12, 2017 11:09 am    文章主題: 引言回覆

底下這行不算太長的SQL指令,符合這二個條件,

1、重複打卡,上班以較早的為準,下班以較晚的為準.
2、班別:0上班,1下班,2忘了.

這二個條件足以逹到goodnight大大之所需了,
s大其它的條件我就暫不理它了,又沒錢可拿,也沒有seafood可享用Laughing

代碼:
SELECT a.工號,;
a.姓名,;
MAX(a.上班時間) AS 上班時間, ;
MAX(a.下班時間) AS 下班時間, ;
MAX(a.忘了) AS 忘了 ,;
MAX(備註) AS 備註 ;
from (;
SELECT 工號,;
姓名,;
刷卡時間 AS '上班時間',;
SPACE(10) AS '下班時間',;
SPACE(10) AS '忘了',;
iif(cnts>1,'上班重覆打卡',SPACE(20)) AS '備註';
FROM (SELECT 工號,姓名,MIN(刷卡時間) AS 刷卡時間,COUNT(*) AS cnts  FROM abc WHERE 班別代碼='0' GROUP BY 工號) aa;
UNION ;
SELECT 工號,;
姓名,;
SPACE(10) AS '上班時間',;
刷卡時間 AS '下班時間',;
SPACE(10) AS '忘了',;
iif(cnts>1,'下班重覆打卡',SPACE(20)) AS '備註';
FROM (SELECT 工號,姓名,MAX(刷卡時間) AS 刷卡時間,COUNT(*) AS cnts  FROM abc WHERE 班別代碼='1' GROUP BY 工號) bb ;
UNION ;
SELECT 工號,;
姓名,;
SPACE(10) AS '上班時間',;
SPACE(10) AS '下班時間',;
刷卡時間 AS '忘了',;
SPACE(20) AS  '備註' ;
FROM abc ;
where 班別代碼='2') a ;
group by a.工號


ckp6250 在 星期四 十月 12, 2017 11:57 am 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
syntech



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

第 55 樓

發表發表於: 星期四 十月 12, 2017 11:35 am    文章主題: 引言回覆

這樣驗收不會過關.
因為沒有把時數算出來.
沒有時數就算不出錢.
尤其是外勞加班費,
漏算加班費,外勞會跟你拼命.



之所以用傳統命令來搞,
就是因為一開始就判斷要求絕對無止境,
可能某天一覺醒來又想加入新的條件.
但所擁有的資訊真正來說只有打卡時間.

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

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



註冊時間: 2004-07-30
文章: 1642


第 56 樓

發表發表於: 星期四 十月 12, 2017 11:48 am    文章主題: 引言回覆

  s大說的是,我只是初步要完成goodnight大圖二的需求而己,沒有多著墨。

  其實,若還要再算時數或其它需求,那麼這行sql指令又要再拆成更細分,一種狀況獨立一行sql指令,最後再把它整合起來,綁綁成一串,這其實和傳統指令的做法,沒什麼兩樣。


如果要符合七個條件,把時數和加班也算進來的話,

1、上班時間 8:00~12:00 13:00~17:00
2、7:30 以前算加班,算到 8:00
3、18:00 以後算加班
4、上班時數要扣除休息時間,計算為小時.
5、加班時數也要扣除休息時間,一樣計算為小時.
6、重複打卡,上班以較早的為準,下班以較晚的為準.
7、班別:0上班,1下班,2忘了.

sql指令就會再稍長一些些∼


代碼:

SELECT 工號,;
姓名,;
上班時間, ;
下班時間, ;
忘了 ,;
IIF(!EMPTY(上班時間) AND !EMPTY(下班時間) ,worktime1,0000)+IIF(!EMPTY(上班時間) AND !EMPTY(下班時間) ,IIF(worktime2>240,240,worktime2),0000)  AS '正常分鍾',;
IIF(!EMPTY(上班時間) AND !EMPTY(下班時間) AND overtime1>30,overtime1,0000)+IIF(!EMPTY(上班時間) AND !EMPTY(下班時間) AND overtime2>0,overtime2,0000) as "�[班分鍾",;
備註 ;
FROM (;
SELECT 工號,;
姓名,;
上班時間, ;
下班時間, ;
忘了 ,;
備註 ,;
(HOUR(CTOT('08:00'))*60+MINUTE(CTOT('08:00')))-(HOUR(CTOT(上班時間))*60+MINUTE(CTOT(上班時間))) AS overtime1 ,;
(HOUR(CTOT('12:00'))*60+MINUTE(CTOT('12:00')))-(HOUR(CTOT(IIF(上班時間<'08:00','08:00',上班時間)))*60+MINUTE(CTOT(IIF(上班時間<'08:00','08:00',上班時間)))) AS worktime1 ,;
((HOUR(CTOT(下班時間))*60+MINUTE(CTOT(下班時間))-HOUR(CTOT('18:00'))*60+MINUTE(CTOT('18:00')))) AS overtime2 ,;
((HOUR(CTOT(IIF(下班時間<'18:00','17:00',下班時間)))*60+MINUTE(CTOT(IIF(下班時間<'18:00','17:00',下班時間)))-HOUR(CTOT('13:00'))*60+MINUTE(CTOT('13:00')))) AS worktime2 ;
from (;
SELECT 工號,;
姓名,;
LEFT(MAX(上班時間),5) AS 上班時間, ;
LEFT(MAX(下班時間),5) AS 下班時間, ;
MAX(忘了) AS 忘了 ,;
MAX(備註) AS 備註 ;
from (;
SELECT 工號,;
姓名,;
刷卡時間 AS '上班時間',;
SPACE(10) AS '下班時間',;
SPACE(10) AS '忘了',;
iif(cnts>1,'上班重覆打卡',SPACE(20)) AS '備註';
FROM (SELECT 工號,姓名,MIN(刷卡時間) AS 刷卡時間,COUNT(*) AS cnts  FROM abc WHERE 班別代碼='0' GROUP BY 工號) aa;
UNION ;
SELECT 工號,;
姓名,;
SPACE(10) AS '上班時間',;
刷卡時間 AS '下班時間',;
SPACE(10) AS '忘了',;
iif(cnts>1,'下班重覆打卡',SPACE(20)) AS '備註';
FROM (SELECT 工號,姓名,MAX(刷卡時間) AS 刷卡時間,COUNT(*) AS cnts  FROM abc WHERE 班別代碼='1' GROUP BY 工號) bb ;
UNION ;
SELECT 工號,;
姓名,;
SPACE(10) AS '上班時間',;
SPACE(10) AS '下班時間',;
刷卡時間 AS '忘了',;
SPACE(20) AS  '備註' ;
FROM abc ;
where 班別代碼='2') a ;
group by a.工號) b) c


  我把它算到分鍾啦,若想用小時,就再除60就好,我有聽過一個同業說,有員工連3分鍾都計較。

若要連底下三條件也考慮進來的話,

假日也可以上班(檔案每日重新建立),
計算時應考慮一例一休.休息日加班1~4小時以4小時計算,5~8小時以8小時計算,
超過8小時再加計加班時數.

  那就再往上堆疊sql就是了,只要有充足資訊,不會有問題。

  sql指令,功能強大,它能發揮多大威力,就看個人的想像力了,我個人的偏好是,sql能做的,我就不用傳統指令去執行,因為我很懶。

  本人可以掛保證,三天後,我就看不懂自己在寫什麼了。 Sad

  對了,這論壇程式是怎麼搞的,原始碼會有亂碼?
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
perry



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


第 57 樓

發表發表於: 星期四 十月 12, 2017 8:48 pm    文章主題: 引言回覆

打卡簽到的狀況又煩又多,若想寫的完善,
建議樓主還是用
scan
do case
endc
ends
人員資料又不是有多大,每天處理資料沒佔多久時間,
只用 SQL 會增加自己的困擾!!

若碰到同時有三班制,輪班制,實際簽到制,
固定班制,那樓主豈不要瘋了!
回頂端
檢視會員個人資料 發送私人訊息
syntech



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

第 58 樓

發表發表於: 星期四 十月 12, 2017 9:34 pm    文章主題: 引言回覆

為了只用SQL完成,
肯定會用到N次TABLE SCAN 及 M次 CURSOR 合併,
還好台灣大多是中小企業.

只要超過2次 TABLE SCAN,
我會優先用XBASE 解決.
除了用非XBASE 工具(例如PHP,C++,VB,VBA)等工具開發.
因為這些工具通常是以物件陣列或是物件連結串列(Linked List) 模擬CURSOR,
效率更糟.

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

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



註冊時間: 2004-07-30
文章: 1642


第 59 樓

發表發表於: 星期四 十月 12, 2017 10:04 pm    文章主題: 引言回覆

效率的問題,要實際比較才知道,
但因為現時電腦 cpu 夠強,ram 夠大,ssd又夠快,
如果索引檔開得好,所謂效率問題,根本不用考慮,

大型企業不敢說,台灣中小型企業,資料量能有多大?1000萬筆?
一行sql和一百行傳統指令,能差幾秒?

我的習慣是,我會優先用sql指令去跑,除非它真的很慢,我才會改回
scan
do case
endc
ends

當然啦,各種情況會有各種應變措施,程式設計師就是要靈活,才能生存下去,不必拘泥於那一種方法。

神而明之,存乎其人。
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
syntech



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

第 60 樓

發表發表於: 星期四 十月 12, 2017 11:17 pm    文章主題: 引言回覆

當你遇到有客戶被他朋友誤導去買了用INTEL ATOM CPU 的"文書電腦",
你會後悔沒有一次攻頂.

Orz

等他唉了半年後,
請他換成最低階的intel i3 pc,
一切問題都解決了.


----
不過我也自己去買了INTEL ATOM CPU +win10 的電視棒電腦.
因為要給出門在外的業務用teamviewer 聯進來查資料.
這種INTEL ATOM CPU 電視棒電腦.
好處就是超省電(相較於pc/nb).

本來是買來替換目前的 android 電視棒,
但是發現這個東西連解1080p 的高清影片都解不動,
只好另外想用途.

解高清影片就交給 htc m7/m9, asus zf3u 等等.

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

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 上一頁  1, 2, 3, 4, 5  下一頁
4頁(共5頁)

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


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