تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] نقل البيانات من ملف csv الي الداتا جريد فيو
#11
(25-09-18, 10:26 PM)elgokr كتب :
مرحباً اخى الغالي

اسف اولاً على التاخير بسبب يادوب جالس على جهازى
بالمرفقات السورس + برنامج للاختبار
السورس (2015)

مع برنامج الاختبار ملف من نوع csv
يحتوى على عدد 10 قيم من البيانات
لكل قيمة مكرر 5 مرات يتم اختبار التشابق من حيث التاريخ + نص الرسالة
ليبقي الناتج للعرض هما 2 من الـ 10 الموجود بالملف

تم معالجة التاريخ ليعرض طبقاً لما طلب وهو

التاريخ | اسم اليوم | الوقت | صباحاً - مساءاً

اتمنى الان ان السورس يكون ملخص كل ما تريده
الكود مسيط وبدون تعقيد وبدون اكواد مبالغ بها

محتوى كود الفورم كاملاً ...
كود :
Public Class Form1
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       DataGridView1.Rows.Clear()
       DataGridView1.Columns.Clear()
       Dim OFD_ As New OpenFileDialog
       Dim RdVal As IO.StreamReader
       Dim TxVal As String
       Dim SpVal As String()
       OFD_.DefaultExt = "csv"
       OFD_.FileName = Nothing
       OFD_.InitialDirectory = Application.StartupPath
       OFD_.Filter = "File [CSV]|*.csv"
       OFD_.Title = "Select file"
       If OFD_.ShowDialog() <> DialogResult.Cancel Then
           RdVal = IO.File.OpenText(OFD_.FileName)
           TxVal = RdVal.ReadToEnd()
           RdVal.Close()
           TxVal = TxVal.Replace(vbNewLine, ",")
           SpVal = TxVal.Split(",")
       Else
           Exit Sub
       End If

       DataGridView1.ColumnCount = 5
       For ii As Integer = 0 To 4
           DataGridView1.Columns(ii).Name = SpVal(ii)
       Next

       DataGridView1.Columns(0).Width = 30
       DataGridView1.Columns(1).Width = 240
       DataGridView1.Columns(2).Width = 100
       DataGridView1.Columns(3).Width = 50
       DataGridView1.Columns(4).Width = 750

       For i As Integer = 1 To Val(SpVal.Length / 5) - 1
           For ii As Integer = 0 To DataGridView1.RowCount - 1
               If DataGridView1.Rows(ii).Cells(1).Value = SpVal(Val(i * 5) + 1) And DataGridView1.Rows(ii).Cells(4).Value = SpVal(Val(i * 5) + 4) Then GoTo GoNextNow_
           Next
           Dim row As String() = New String() {SpVal(Val(i * 5)), SpVal(Val(i * 5) + 1), SpVal(Val(i * 5) + 2), SpVal(Val(i * 5) + 3), SpVal(Val(i * 5) + 4)}
           DataGridView1.Rows.Add(row)
GoNextNow_:
       Next

       DataGridView1.Refresh()
       DataGridView1.SelectAll()

       For ii As Integer = 0 To DataGridView1.RowCount - 1
           DataGridView1.Rows(ii).Cells(1).Value = DataGridView1.Rows(ii).Cells(1).Value.ToString.Replace(" at", Nothing)
           Dim SpDate As String() = DataGridView1.Rows(ii).Cells(1).Value.ToString.Split(Space(1))
           DataGridView1.Rows(ii).Cells(1).Value = SpDate(1) & SpDate(0) & SpDate(2) & SpDate(3)
       Next
   End Sub
End Class

الادوات المستخدمة عدد [ 1 ] Button1 و [ 1 ] DataGridView

تحياتى لك
وتمنياتى لك التوفيق

مرحبا بك اخي elgokr

بخصوص التاخير   ===>   ان تاتي متاخر خيرا من ألا تاتي

لي طلب اخر اعز الله قدرك

انا عايز ابحث بعمود التاريخ السابق انشائة  من الداتا تايمر مباشرة

استخدمت الكود التالي للبحث والفلترة ولكن لايعمل علي الرغم من ان نفس الكود يعمل عند اقتصاص التاريخ فقط من خلايا الداتا جريد فيو ويعمل نفس الكود التالي علي اي عمود بالداتا جريد فيو للبحث عن اي شيء

كود :
   On Error Resume Next
       For i As Integer = DATAGRID_NAME.Rows.Count - 1 To 0 Step -1
           If Not DATAGRID_NAME.Rows(i).Cells(1).Value.ToString.Contains(DATETIM_START.Value.ToShortDateString) Or DATAGRID_NAME.Rows(i).Cells(1).Value = Nothing Then
               DATAGRID_NAME.Rows.RemoveAt(i)
           End If
       Next
الرد }}}
تم الشكر بواسطة: elgokr
#12
(26-09-18, 10:33 AM)محمد اسماعيل كتب : مرحبا بك اخي elgokr

بخصوص التاخير   ===>   ان تاتي متاخر خيرا من ألا تاتي

لي طلب اخر اعز الله قدرك

انا عايز ابحث بعمود التاريخ السابق انشائة  من الداتا تايمر مباشرة

استخدمت الكود التالي للبحث والفلترة ولكن لايعمل علي الرغم من ان نفس الكود يعمل عند اقتصاص التاريخ فقط من خلايا الداتا جريد فيو ويعمل نفس الكود التالي علي اي عمود بالداتا جريد فيو للبحث عن اي شيء

كود :
   On Error Resume Next
       For i As Integer = DATAGRID_NAME.Rows.Count - 1 To 0 Step -1
           If Not DATAGRID_NAME.Rows(i).Cells(1).Value.ToString.Contains(DATETIM_START.Value.ToShortDateString) Or DATAGRID_NAME.Rows(i).Cells(1).Value = Nothing Then
               DATAGRID_NAME.Rows.RemoveAt(i)
           End If
       Next

عدم عمل كود البحث
لان القيمة فى الجدول للتاريخ عبارة عن نص
وللبحث بالطريقة يجب ان تجعل هيئة التاريخ طبقاً لما هو موجود فى النص

بمعنى لو النص يحتوى على التاريخ بالشكل التالى
30/12/2018

فيجب ان تجعل القيمة المشتخدمة من DATETIM_START
بنفس الطريقة بمعنى
بدل من استخدام ToShortDateString
استخدم ToString لتجعل هيئتها بالشكل التالى "dd/MM/yyyy"

طبعاً ستقوم بالتطبيق طبقاً لطريقة عرض التاريخ

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: محمد اسماعيل
#13
(26-09-18, 11:44 PM)elgokr كتب :
(26-09-18, 10:33 AM)محمد اسماعيل كتب : مرحبا بك اخي elgokr

بخصوص التاخير   ===>   ان تاتي متاخر خيرا من ألا تاتي

لي طلب اخر اعز الله قدرك

انا عايز ابحث بعمود التاريخ السابق انشائة  من الداتا تايمر مباشرة

استخدمت الكود التالي للبحث والفلترة ولكن لايعمل علي الرغم من ان نفس الكود يعمل عند اقتصاص التاريخ فقط من خلايا الداتا جريد فيو ويعمل نفس الكود التالي علي اي عمود بالداتا جريد فيو للبحث عن اي شيء

كود :
   On Error Resume Next
       For i As Integer = DATAGRID_NAME.Rows.Count - 1 To 0 Step -1
           If Not DATAGRID_NAME.Rows(i).Cells(1).Value.ToString.Contains(DATETIM_START.Value.ToShortDateString) Or DATAGRID_NAME.Rows(i).Cells(1).Value = Nothing Then
               DATAGRID_NAME.Rows.RemoveAt(i)
           End If
       Next

عدم عمل كود البحث
لان القيمة فى الجدول للتاريخ عبارة عن نص
وللبحث بالطريقة يجب ان تجعل هيئة التاريخ طبقاً لما هو موجود فى النص

بمعنى لو النص يحتوى على التاريخ بالشكل التالى
30/12/2018

فيجب ان تجعل القيمة المشتخدمة من DATETIM_START
بنفس الطريقة بمعنى
بدل من استخدام ToShortDateString
استخدم ToString لتجعل هيئتها بالشكل التالى "dd/MM/yyyy"

طبعاً ستقوم بالتطبيق طبقاً لطريقة عرض التاريخ

تحياتى لك
وتمنياتى لك التوفيق

حاولت بالطريقة دية ومفيش نتيجة

كود :
Dim dc As Date = DATETIM_START.Value
           dc = Format(dc, "yyyy/MM/dd")
           If Not DATAGRID_NAME.Rows(i).Cells(1).Value.ToString.Contains(dc) Or DATAGRID_NAME.Rows(i).Cells(1).Value = Nothing Then
               DATAGRID_NAME.Rows.RemoveAt(i)
           End If

الي هيجنني ان لما باستقطع التاريخ من الداتا جريد وابحث بية بيبحث عادي لكن لما بيكتب يدوي او من الداتا تايم مباشرة لا يبحث
الرد }}}
تم الشكر بواسطة:
#14
مرحباً اخى محمد اسماعيل

السبب لان التاريخ المدرج من الملف الرئيسيى csv
الارقام خاصة التاريخ عبارة عن رموز ارقام وليست ارقام

ولهذا السبب عند عملا البحث بالتاريخ
من خلال DateTimePicker او كتابة تاريخ فى TextBox
لا يتمكن من المطابقة بينهم والسبب ان ترميز بان الارقام على ترميز UTF-8-BOM

لاحظ التاريخ التالى
PHP كود :
٠٨/١٢/٢٠١٧ 


ولاحظ عند الكتابة يدوياً هنا كيف شكله
PHP كود :
08/12/2017 

ستلاحظ مهما عملت نسخ ولصق التاريخ
سيبقى بالارقام النعرف عامة وهو العربية

بينما التاريخ اثاني سيختلف حسب حالة الكتابة
اذا كان وسط نصوص عربية او انجليزة عكس الاخر

جرب افتح ملف csv وانسخ اى رقم من التاريخ وليكن 2017

وتعال كده فى المشروع واكتب السطر التالى 
كود :
Dim date_ As Integer = ???

استبدل ؟؟؟ بالرقم اللى نسخته من الملف
من المفترض انه رقم لو كتبت يدوياً 2017 لا يحدث مشكلة
ولكن اذا عملت لصق للرقم اللى نسخته انظر ماذا سيحدث

طيب كيف حل المشكلة حتى اتمكن من البحث فى الملف بدون هذه المشكلة
كل ما عليك عمل الاتي كما موضح فى الشرح التالى

اولاً تعال على ملف csv وقم بتحريره من خلال برنامج NotePad
الخاص نسخة الوندوز وليس برنامج NotePad++

ثانياً من قائمة File اختار Save As...

ثالثاً عند خيار Save as type: اجعل القيمة All Files
وعند الخيار Encoding: تاكد بانك قمت بنفسك باختيار Utf-8 حتى واذا كانت محددة
الان ناتى للخطوة الاخير وهو عند الخيار File name: اجعل القيمة وليكن 123.csv

تذكر ثم تذكر ثم تذكر بان يكون اسم الملف قمت بوضع معه امتداد الملف وهو
.csv كما هو منبه باللون الاحمر مع الاسم وليس تكتب 123 فقط

رابعاً ناتى فى السورس قم باضافة عدد [ 1 ] DateTimePicker  وكذلك عدد [ 1 ] Button

وقم باستخدام الكود بهذا الشكل داخل الزر الذى تم اضافته
كود :
       On Error Resume Next
       For i As Integer = DataGridView1.Rows.Count - 1 To 0 Step -1
           If Not DataGridView1.Rows(i).Cells(1).Value.ToString.Contains(DateTimePicker1.Value.ToString("dd/MM/yyyy")) Or DataGridView1.Rows(i).Cells(1).Value = Nothing Then
               DataGridView1.Rows.RemoveAt(i)
           End If
       Next

الان قم باستخراج البرنامج واذهب لاختبار الملف الذى تم حفظه مؤخراً
وقم بتحديد التاريخ واضغط على الزر لتاكيد الاختبار

اتمنى ان يكون الشرح وافى وموضح تفاصيل مفصل كاملاً
عن سبب المشكلة وحلها وان لا اكون بخلت فى الشرح  Big Grin

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: محمد اسماعيل


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مشكلة فى جمع عمود فى داتا جريد فيو احمد خطاب 3 160 06-03-24, 07:49 PM
آخر رد: احمد خطاب
  حذف الاسطر الفارغه من الداتا جريد فيو اليوم السابع 3 2,378 03-03-24, 12:57 AM
آخر رد: مصمم هاوي
  كيفية جمع أرقام عمود فى الداتا جريد فيو بناءاً على بيانات معينة heem1986 5 235 25-02-24, 11:26 PM
آخر رد: heem1986
  [VB.NET] حل مشكلة الاتصال بقواعد البيانات access loay775 2 168 25-02-24, 06:29 AM
آخر رد: loay775
  كيفية تنفيذ امر عند التعليم على checkbox بالداتا جريد فيو heem1986 2 162 21-02-24, 01:37 AM
آخر رد: heem1986
  سؤال عن عملية حذف سجل من قاعدة البيانات assuhimi 3 260 11-02-24, 08:43 PM
آخر رد: assuhimi
  [VB.NET] مشكلة التاريخ في الداتا قريد فيو مبرمج صغير 1 6 404 24-01-24, 10:12 PM
آخر رد: annagui
  [VB.NET] منع تكرار البيانات في عند الادخال مبرمج صغير 1 2 266 24-01-24, 05:18 PM
آخر رد: مبرمج صغير 1
  [VB.NET] مساعدة في استدعاء البيانات معينه من form الأول إلى form 2 بدون التعديل loay775 2 281 18-01-24, 05:04 PM
آخر رد: loay775
  [VB.NET] إعادة استدعاء البيانات من قاعدة بيانات اكسس والاهم الصورة مبرمج صغير 1 1 282 13-01-24, 01:17 PM
آخر رد: مبرمج صغير 1

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم