تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] نقل البيانات من ملف csv الي الداتا جريد فيو
#1
السلام عليكم


عندي ملف رسائل مسحوبة من الموبايل بصيغة csv

الملف ياخذ الشكل التالي :-

Sno,Date,Contact Name,Number,SMS Body

1,الأربعاء ٢٢/٠٨/٢٠١٨ at ٠١:٢٦:٣٠ م,Hekaya,Hekaya,خصم 50% علي تجديد الباقه الشهرية لمدة شهر كلم #10*011* للاشتراك قبل التجديد



 بنقل محتوي الملف الي الداتا جريد فيو بناء علي نقل كل قيمة بعد الفاصلة , بالملف كعمود بالداتا جريد فيو

المشكلة اما مي كالاتي

1- اظهار الرسائل المرسلة بعنوان  mony وهيا نفس المكان الخاص Hekaya   بالفاصلة 2  بالجملة الواحدة بالملف النصي

2- حذف الرسائل التي لا تحتوي علي مرسل باسم  mony او قيمتها null

3- بعض اللينات بالملف النصي تكون مكررة الرسائل او قيمتها فارغة اريد حذفها

4- التاريخ يظهر بالشكل الاتي   =   الأربعاء ٢٢/٠٨/٢٠١٨ at ٠١:٢٦:٣٠ م      اريد حذف at وتبديلها باسم اليوم  بالشكل التالي

  ٢٢/٠٨/٢٠١٨ الأربعاء ٠١:٢٦:٣٠ م   بدل من الأربعاء ٢٢/٠٨/٢٠١٨ at ٠١:٢٦:٣٠ م

5- طبعا طريقة الريجيستر لا اجداستخدامها ساعدني احد الاخوة لحذف جزء من اللينات لاستخراج المبالغ المحولة الي واريدها كما هيا


الكود الي استخدمتة 

مشاكلة

1- عدم حذف المكرر مباشرتا من الملف اثناء نقلة

2- عدم حذف القيم الفارغة كما سبق وذكرت

3- تعديل التاريخ كما سبق


كود :
Sub removduplicate()
       On Error Resume Next
       ' حذف المكرر
       For intI = DATAGRID_NAME.Rows.Count - 1 To 0 Step -1
           For intJ = intI - 1 To 0 Step -1
               If DATAGRID_NAME.Rows(intI).Cells(1).Value = DATAGRID_NAME.Rows(intJ).Cells(1).Value AndAlso DATAGRID_NAME.Rows(intI).Cells(3).Value = DATAGRID_NAME.Rows(intJ).Cells(3).Value Or DATAGRID_NAME.Rows(intI).Cells(2).Value = Nothing Then
                   DATAGRID_NAME.Rows.RemoveAt(intI)
               End If
           Next
       Next

       DATAGRID_NAME.Refresh()
       For i As Integer = 0 To DATAGRID_NAME.Rows.Count - 1
           DATAGRID_NAME.Rows(i).Cells(0).Value = (i + 1).ToString
           Label2.Text = i + 1
       Next
   End Sub
   Private Sub LIST_FILE_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles LIST_FILE.SelectedIndexChanged
       On Error Resume Next
       DATAGRID_NAME.Rows.Clear()
       Dim txt As String = IO.File.ReadAllText(LIST_FILE.SelectedItem)

       Dim arr() As String = (From m In Regex.Matches(txt, "\d+,.+") Select CStr(m.Value)).ToArray
       For Each a In arr
           Dim r = a.Split(",")
           If Not IsDBNull(r(2)) AndAlso r(2) = "mony" Then
               Dim tel As String = Regex.Match(r(4), "(?<=(من رقم)\s?\(?\s?)\d{10,}").Value
               Dim code As String = Regex.Match(r(4), "(?<=(رقم العملية)\s?\(?\s?)\d{10,}").Value
               Dim MONY As String = Regex.Match(r(4), "(?<=(مبلغ)\s?\(?\s?)\d{1,}").Value
               Dim lst As New List(Of String)(r)
               lst.Add(code)
               lst.Add(tel)
               lst.Add(MONY)

               Me.DATAGRID_NAME.Rows.Add(lst.ToArray)
           End If
       Next
       DATAGRID_NAME.Refresh()
       removduplicate()

   End Sub
الرد
تم الشكر بواسطة:
#2
لم ترفق المشروع للتجربة على أن يشمل ملف csv مع توضيح أكثر لدور كلمة mony
الرد
تم الشكر بواسطة: elgokr
#3
(24-09-18, 12:34 AM)r49 كتب : لم ترفق المشروع للتجربة على أن يشمل ملف csv مع توضيح أكثر لدور كلمة mony

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

كلمة mony  خاصة باسم الرسالة بالاشعارات او عنوان الرسالة الي انا مهتم بيها وفيها العمليات النقدية

وبيظهر مع الرسائل طبعا العروض اليومية والخدمات الي مش محتجها تظهر بالداتا جريد وبتاتي باسماء اخري غير mony
الرد
تم الشكر بواسطة: elgokr
#4
(24-09-18, 01:37 AM)محمد اسماعيل كتب : صعب انقل الملف فية اكواد العملية وارقام العملاء واكواد خاصة بشرحتي

كلمة mony  خاصة باسم الرسالة بالاشعارات او عنوان الرسالة الي انا مهتم بيها وفيها العمليات النقدية

وبيظهر مع الرسائل طبعا العروض اليومية والخدمات الي مش محتجها تظهر بالداتا جريد وبتاتي باسماء اخري غير mony


اخى محمد اسماعيل

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

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

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

ساهم دائماً فى تقديم   لكل من يقوم بالمساهمة
فى حل اى مشكلة او استفسار لديك مع اضافة رد بشكره ودعوة له
فالجميع هنا يعمل على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله
الرد
تم الشكر بواسطة:
#5
(24-09-18, 11:28 AM)elgokr كتب :
(24-09-18, 01:37 AM)محمد اسماعيل كتب : صعب انقل الملف فية اكواد العملية وارقام العملاء واكواد خاصة بشرحتي

كلمة mony  خاصة باسم الرسالة بالاشعارات او عنوان الرسالة الي انا مهتم بيها وفيها العمليات النقدية

وبيظهر مع الرسائل طبعا العروض اليومية والخدمات الي مش محتجها تظهر بالداتا جريد وبتاتي باسماء اخري غير mony


اخى محمد اسماعيل

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

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

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

هشيل البيانات ارقام الخطوط وغير اكواد العملية

ملف الرسائل


الملفات المرفقة
.rar   Combined.rar (الحجم : 830 بايت / التحميلات : 5)
الرد
تم الشكر بواسطة:
#6
مرفق السورس + برنامج للاختبار
السورس (2015)

الادورات المستخدمة عدد [ 1 ] Button1 و [ 1 ] DataGridView
تم تعطيل التعديل والحذف والاضافة من DataGridView

كود الفورم كاملاً
كود :
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
           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)
       Next

       DataGridView1.Refresh()
       DataGridView1.SelectAll()
   End Sub
End Class

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


الملفات المرفقة
.zip   Pro.zip (الحجم : 8.35 ك ب / التحميلات : 6)
.zip   Test.zip (الحجم : 17.08 ك ب / التحميلات : 6)
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى تقديم   لكل من يقوم بالمساهمة
فى حل اى مشكلة او استفسار لديك مع اضافة رد بشكره ودعوة له
فالجميع هنا يعمل على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله
الرد
تم الشكر بواسطة:
#7
(24-09-18, 02:12 PM)elgokr كتب :
مرفق السورس + برنامج للاختبار
السورس (2015)

الادورات المستخدمة عدد [ 1 ] Button1 و [ 1 ] DataGridView
تم تعطيل التعديل والحذف والاضافة من DataGridView

كود الفورم كاملاً
كود :
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
           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)
       Next

       DataGridView1.Refresh()
       DataGridView1.SelectAll()
   End Sub
End Class

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

اشكرك علي ردك

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

لمشكلة اما مي كالاتي



1- بعض اللينات بالملف النصي تكون مكررة الرسائل او قيمتها فارغة اريد حذفها

2- التاريخ يظهر بالشكل الاتي   =   الأربعاء ٢٢/٠٨/٢٠١٨ at ٠١:٢٦:٣٠ م      اريد حذف at وتبديلها باسم اليوم  بالشكل التالي

  ٢٢/٠٨/٢٠١٨ الأربعاء ٠١:٢٦:٣٠ م   بدل من الأربعاء ٢٢/٠٨/٢٠١٨ at ٠١:٢٦:٣٠ م

5- طبعا طريقة الريجيستر لا اجداستخدامها ساعدني احد الاخوة لحذف جزء من اللينات لاستخراج المبالغ المحولة الي واريدها كما هيا


الكود الي استخدمتة 

مشاكلة

2- تعديل التاريخ كما سبق
الرد
تم الشكر بواسطة: elgokr , elgokr
#8
الشكر لله والحمد لله
والحمد لله على كل حال

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

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

ساهم دائماً فى تقديم   لكل من يقوم بالمساهمة
فى حل اى مشكلة او استفسار لديك مع اضافة رد بشكره ودعوة له
فالجميع هنا يعمل على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله
الرد
تم الشكر بواسطة: محمد اسماعيل
#9
(25-09-18, 10:58 AM)elgokr كتب :
الشكر لله والحمد لله
والحمد لله على كل حال

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

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

بانتظارك إنشاء الله
الرد
تم الشكر بواسطة:
#10
مرحباً اخى الغالي

اسف اولاً على التاخير بسبب يادوب جالس على جهازى
بالمرفقات السورس + برنامج للاختبار
السورس (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

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


الملفات المرفقة
.zip   Pro.zip (الحجم : 8.71 ك ب / التحميلات : 5)
.zip   Test.zip (الحجم : 17.15 ك ب / التحميلات : 3)
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  طريقة تعبئة الداتا جريد فيو من اكثر من جدول سمير جمال 1 48 أمس, 08:56 PM
آخر رد: سمير جمال
  تحديث قاعدة البيانات علي جهاز العميل makky 1 35 أمس, 04:13 PM
آخر رد: ahmedmansour
  سؤال بخصوص الداتا جريد فيو احمد خطاب 2 40 أمس, 12:42 PM
آخر رد: احمد خطاب
  مشكلة فى اضافة حقول جديدة فى قاعدة البيانات و ربطها بالفيجوال استوديو nabil.1710 1 55 18-10-18, 01:09 PM
آخر رد: nabil.1710
  مشكله فى الداتا جريد فيو خالد كامل1 2 57 18-10-18, 02:56 AM
آخر رد: خالد كامل1
  سؤال :- فى كيغية ادراج بيانات فى الداتا جريد فيو احمد خطاب 1 78 18-10-18, 02:54 AM
آخر رد: EYADISMAIL
  سؤال فى الحفظ من الداتا جريد salah mansour 5 114 17-10-18, 06:31 AM
آخر رد: mero5000
  كيف ابحث داخل قاعدة البيانات احمد خطاب 2 77 17-10-18, 01:51 AM
آخر رد: اسامه الهرماوي
  [نقاش] خطأ بسيط في الاتصال بقاعدة البيانات اسامه الهرماوي 4 147 17-10-18, 01:44 AM
آخر رد: اسامه الهرماوي
  البحث عن يوم في قاعدة البيانات atefkhalf2004 2 74 16-10-18, 09:18 PM
آخر رد: WAEL ABED

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


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