تقييم الموضوع :
  • 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)
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] داتا جريد فيو M.SOFT 0 40 08-12-18, 03:51 PM
آخر رد: M.SOFT
  [سؤال] استيراد بيانات لقاعدة البيانات وعمل مقارنة nandy2016 1 65 08-12-18, 02:22 PM
آخر رد: nandy2016
  تغيير لغة الجداول فى الداتا جريد احمد خطاب 3 82 06-12-18, 09:27 PM
آخر رد: Emam emam
  [VB.NET] استفسار :- بخصوص تنزيل الداتا في قاعدة البيانات dubai.eig 0 41 06-12-18, 04:36 PM
آخر رد: dubai.eig
  سؤال بخصوص الكتابة داخل داتا جريد احمد خطاب 3 79 05-12-18, 11:35 AM
آخر رد: احمد خطاب
  [VB.NET] سؤال عن الداتا جريد فيو M.SOFT 1 63 04-12-18, 04:31 AM
آخر رد: محمد كريّم
  حذف ملف خارجي بدلالة قاعدة البيانات riyadh jihad 1 46 01-12-18, 02:11 PM
آخر رد: حريف برمجة
  الاضافة والتعديل والحذف من خلال الداتا جريد فيوا makky 2 124 01-12-18, 12:48 AM
آخر رد: حريف برمجة
  الاضافة والتعديل والحذف من خلال الداتا جريد فيوا makky 2 102 30-11-18, 10:36 PM
آخر رد: Rabeea Qbaha
  ربط الداتا قريدفيو بكمبوبوكس في الفورم alsihran 4 101 30-11-18, 12:14 AM
آخر رد: mero5000

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


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