منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] مساعدة في عرض جملة sql - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] مساعدة في عرض جملة sql (/showthread.php?tid=13825)

الصفحات: 1 2


مساعدة في عرض جملة sql - alzmohammed - 15-11-15

السلام عليكم

لدي جدول كالتالي :  جدول حضور وانصراف

رقم الموظق  - تاريخ دق البصمة - الوقت - الحالة  ( 01  دخول  03  خروج ) 


مثال بيانات  كالتالي

 100 - 01/02/205 - 13:25 - 01
100 - 01/02/2015 -  23:36 -03
100 - 05/03/2015 -  11:25 - 01
100 - 05/03/2015 - 17:55 - 03

المطلوب عرض   الموظف رقم  100  مثلا  الخروج والدخول لنفس اليوم  في سطر واحد  كالتالي

100 - 01/02/2015  - 13:25  - 23:36  - 01 - 03
100 - 05/03/2015 - 11:25 - 17:55  - 01 - 03

 ضروري  وشكرا  على المساعدة


RE: مساعدة في عرض جملة sql - HASAN6.0 - 15-11-15

اخي الكريم ,, عادة يقوم الموظف بوضع بصمته اكثر من عشرين مرة اذا كان من هواه وعشاق سماع صوت الماكنة , Tongue
لذا عليك عمل فلترة على الموظفين .
PHP كود :
 SELECT DISTINCT Name 

ثم البحث بين تاريخين ..
ثم عرض الوقت فقط . من الاصغر الى الاكبر

ارفع الملف وسوف اقوم بعمل واجهة الفلترة .


RE: مساعدة في عرض جملة sql - حريف برمجة - 15-11-15

(15-11-15, 11:28 AM)alzmohammed كتب : السلام عليكم

لدي جدول كالتالي :  جدول حضور وانصراف

رقم الموظق  - تاريخ دق البصمة - الوقت - الحالة  ( 01  دخول  03  خروج ) 


مثال بيانات  كالتالي

 100 - 01/02/205 - 13:25 - 01
100 - 01/02/2015 -  23:36 -03
100 - 05/03/2015 -  11:25 - 01
100 - 05/03/2015 - 17:55 - 03

المطلوب عرض   الموظف رقم  100  مثلا  الخروج والدخول لنفس اليوم  في سطر واحد  كالتالي

100 - 01/02/2015  - 13:25  - 23:36  - 01 - 03
100 - 05/03/2015 - 11:25 - 17:55  - 01 - 03

 ضروري  وشكرا  على المساعدة

وعليكم السلام

اسم الجدول Table1
حقل رقم الموظف a1
حقل التاريخ a2
حقل وقت الدخول + وقت الخروج a3
حقل الحالة للدخول + الحالة للخروج a4

AS COMMING = وقت الدخول
AS OUT = وقت الخروج
AS STATE1 = الحالة للدخول
AS STATE2 = الحالة للخروج


كود :
SELECT Table1.a1 , Table1.a2, First(Table1.a3) AS COMMING , Last(Table1.a3) AS OUT , First(Table1.a4) AS STATE1, Last(Table1.a4) AS STATE2 
FROM Table1
WHERE (((Table1.a2)="01/02/2015"))
GROUP BY Table1.a1, Table1.a2;
تمت التجربة بنجاح


RE: مساعدة في عرض جملة sql - alzmohammed - 15-11-15

شكرا على الردود  

الاخ حريف برمجة  الكود الذي وضعتة    استخدمت اي اصدار من sql server   علما بأن  المطلوب على      
   sql server 2000
دالة first  last  غير مدعومة    الضاهر عاملة على الاكسيس


RE: مساعدة في عرض جملة sql - مهموم - 15-11-15

السلام عليكم ورحمة الله

أخي محمد

ما اسم الجدول واسماء الأعمدة وأنواعها؟


RE: مساعدة في عرض جملة sql - alzmohammed - 16-11-15

اسم الجدول - punch
رقم الموظف - empcode nvarchar
حقل تااريخ empdate
حقل وقت emptime
حقل حاله tacode intger

ويكون كالتالي empcode - empdate - emptime - tacode ويعتبر سجل او حركة حظور اما دخول او خروج لموظف بتاريخ معين

مثل الموظف رقمة 100 عمل حركة دخول بتاريخ 01/01/2015 الساعة 13:45 وتمثل بسجل او سطر في قاعدة البيانات
100 -01/01/2015 - 13:45 - 01

الموظف رقمة 100 عمل حركة خروج بتاريخ 01/01/2015 الساعة 23:10 وتمثل بسجل او سطر في قاعدة البيانات
100 - 01/01/2015 - 23:10 - 03

بعتبار حالة الدخول 01 والخروج 03

المطلوب او الفكرة كيف جعل كالتالي 100 - 01/01/2015 - 13:45 - 23:10 - 01 - 03 في الاستعلام ياخذ لنفس التاريخ وهكذا لبقية الايام


RE: مساعدة في عرض جملة sql - مهموم - 16-11-15

السلام عليكم ورحمة الله

أخي محمد

الكود التالي سيظهر لك تماماً ما طلبت
PHP كود :
Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
    MsgBox
(getEmployeeReport(100))
End Sub


Function getEmployeeReport(ByVal employeeID As Integer) As String

    Dim sb 
As New System.Text.StringBuilder

    Dim dataContext 
As New DataClasses1DataContext
    Dim days 
=
        
From x In dataContext.punches
        Where x
.empcode employeeID
        Group By x
.empcodex.empdate
        Into grp 
GroupCount()

    For 
Each d In days

        Dim time 
As New List(Of String)
        
Dim mode As New List(Of String)

        For 
Each g In d.grp
            time
.Add(DateTime.Parse(g.emptime.Value.ToString()).ToString("HH:mm"))
            
mode.Add(Val(g.tacode).ToString("00"))
        
Next

        sb
.AppendLine(
            
String.Concat(
                
d.empcode" - "DateTime.Parse(d.empdate.ToString).ToString("dd/MM/yyyy"),
                
" - ",
                
String.Join(" - "time.ToArray), " - "String.Join(" - "mode.ToArray)
                )
            )
    
Next

    
Return sb.ToString

End 
Function 

السلام عليكم ورحمة الله

أخي محمد

لمعرفة كيف يعمل الكود عليك بتعلم LinqToSql عن طريق دروس الأستاذ خضر:
الدرس الأول : Linq To SQL
الدرس الثاني : Linq To SQL
الدرس الثالث : Linq To SQL
الدرس الرابع : Linq To SQL

لا تقلق من LinqToSql فهي سهلة جداً، فقط إبدأ...


RE: مساعدة في عرض جملة sql - حريف برمجة - 16-11-15

(15-11-15, 08:39 PM)alzmohammed كتب : شكرا على الردود  

الاخ حريف برمجة  الكود الذي وضعتة    استخدمت اي اصدار من sql server   علما بأن  المطلوب على      
   sql server 2000
دالة first  last  غير مدعومة    الضاهر عاملة على الاكسيس

انت لم تحدد نوع قاعدة البيانات فتوقعت اكسس ،، حصل خير

هذا الكود للاسكيوال سيرفر

كود :
SELECT        empcode, empdate, MIN(emptime) AS Expr1, MAX(emptime) AS Expr3, MIN(tacode) AS Expr2, MAX(tacode) AS Expr4
FROM            punch
WHERE        (empdate = N'01/02/2015')
GROUP BY empcode, empdate



RE: مساعدة في عرض جملة sql - alzmohammed - 16-11-15

شكرا للاعضاء الكرام على سرعة الرد والتفاعل وسوف اجرب الاكواد المطروحة


RE: مساعدة في عرض جملة sql - مهموم - 17-11-15

السلام عليكم ورحمة الله

أخي محمد

ما ذكره أخي الأستاذ خضر صحيح، لو كان لا يتم تسجيل أكثر من دخول وخروج واحد في اليوم.

أخي الأستاذ خضر، أعتقد أكثر التعامل في أجهزة الحضور والإنصراف تتم باعتماد سطر مستقل في كل عملية تتم، تحسبا لخروج الشخص لمده قصيرة ثم العودة في نفس اليوم.

وكنت قد أعددت كود على أساس عمود واحد يشمل التاريخ والوقت، ولكني أضطررت لتغييره عندما وجدت أخي محمد قد وضع عمود خاص بالتاريخ وعمود خاص بالوقت.