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

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
تم الشكر بواسطة:
#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 ك ب / التحميلات : 11)
.zip   Test.zip (الحجم : 17.15 ك ب / التحميلات : 9)
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] لو سمحتوا ممكن حد يفدني سؤال عن الداتا جرد فيو m.soft.01210 3 59 15-06-19, 11:33 PM
آخر رد: elgokr
Exclamation [سؤال] مشكلة عدم قبول النصوص الطويل في قاعدة البيانات على برنامج فيجوال بيسك 2010 الرائد 12 292 14-06-19, 03:03 PM
آخر رد: elgokr
  الرجوع الي نفس سطر في داتا جريد atefkhalf2004 2 182 11-06-19, 01:08 PM
آخر رد: سامي محمد
  مشكلة في الاتصال بقاعدة البيانات والسيرفر sqlserver nooralcown 1 266 03-06-19, 12:33 PM
آخر رد: سعود
  [ تمّ الحل ] : تنسيق التاريخ بقاعدة البيانات : الأكسس عبد العزيز البسكري 16 906 03-06-19, 11:56 AM
آخر رد: سعود
  كيفية جعل الكتابة التلقائية في الداتا قريد adminHN 1 92 30-05-19, 01:54 PM
آخر رد: اسامه الهرماوي
  ترتيب الداتا تيبل المتألق9 4 126 28-05-19, 04:51 AM
آخر رد: ابراهيم ايبو
  [VB.NET] تصدير البيانات من عدة جداول الى قالب وورد معد مسبقا" aljzazy 1 127 21-05-19, 02:03 PM
آخر رد: alshandodi
  حساب مجموع ما في الداتا جريد فيو لكل صف alshandodi 8 317 20-05-19, 05:37 PM
آخر رد: alshandodi
  أدوات قواعد البيانات في الدوت نت وطريقة استخدامها معتز حسن 4 206 16-05-19, 01:42 PM
آخر رد: elgokr

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


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