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

يسعد الله اوقاتكم 

عندي فكرة اريد تنفيذها نص الفكرة قمت بتنفيذها باقي النصف  الاخر 


وهيه عباره كود يقراء ملف معين text  مثلا

في حالت وجود سطر جديد يقوم بسحب البيانات لهذا السطر وتنزيله في قاعدة البيانات 

انا الكود اللي عني شغال بس في كل مرة يقراء الملف كامل واذا البيانات موجوده ما يقوم بتنزيلها واذا البيانات جديد يقوم بتنزيلها

بس اعتقد كذا مرهق على البرنامج في كل مرة يقراء الملف كامل

ما اعرف هل هناك طريقه ان يقراء اخر سطر فقط وينزل البيانات

اليكم الكود الخاص بي 

كود :
   Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load

Timer7.Interval = 3000
       Timer7.Start() 'Timer starts functioning

       cmdCheckCount.CommandText = String.Format("SELECT COUNT(CALLop) FROM DB{0} WHERE (CALLop = @CALLop) AND (DateNumber = @DateNumber) AND (time_on = @time_on)", strcallbk)
       cmdCheckCount.Parameters.Clear()
       cmdCheckCount.Parameters.Add("@CALLop", SqlDbType.VarChar)
       cmdCheckCount.Parameters.Add("@DateNumber", SqlDbType.VarChar)
       cmdCheckCount.Parameters.Add("@time_on", SqlDbType.VarChar)
       '============================================================
       cmdInsert.CommandText = String.Format("INSERT INTO DB{0} (CALLop,qso_date,timek,bands,modes,station_callsign,dxcc,cqz,ituz,rst_sent,rst_rcvd,country,LAT,LON,GRIDSQUARE,PFX,freq,DateNumber,time_on,operato,Continent) Values (@CALLop,@qso_date,@timek,@bands,@modes,@station_callsign,@dxcc,@cqz,@ituz,@rst_sent,@rst_rcvd,@country,@LAT,@LON,@GRIDSQUARE,@PFX,@freq,@DateNumber,@time_on,@operato,@Continent)", strcallbk)
       cmdInsert.Parameters.Clear()
       cmdInsert.Parameters.Add("@CALLop", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@qso_date", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@timek", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@bands", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@modes", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@station_callsign", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@dxcc", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@cqz", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@ituz", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@rst_sent", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@rst_rcvd", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@country", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@LAT", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@LON", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@GRIDSQUARE", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@PFX", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@freq", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@DateNumber", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@time_on", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@operato", SqlDbType.VarChar)
       cmdInsert.Parameters.Add("@Continent", SqlDbType.VarChar)
  End Sub


Private Sub Timer7_Tick(sender As Object, e As EventArgs) Handles Timer7.Tick


       Dim SavePathft8 As String = JT65PathX

       If File.Exists(SavePathft8) Then




           If File.ReadAllText(JT65PathX).Length = 0 Then



           Else

               txt = Computer.FileSystem.ReadAllText(JT65PathX)

               Dim Rgx As Regex = New Regex("<eor>")

               Dim Rgx2 As Regex = New Regex("<EOR>")





               If Rgx.IsMatch(txt) Then
                   ms = Strings.Split(txt, "" & "eor" & ">", -1, CompareMethod.Binary)
                   conXXCXX.Open()

                   Using transaction = conXXCXX.BeginTransaction()
                       cmdCheckCount.Transaction = transaction
                       cmdInsert.Transaction = transaction
                       For Each txtLine As String In ms
                           Call AddDataXFT8(iFT8)
                           iFT8 += 1
                       Next
                       transaction.Commit()
                   End Using


                   conXXCXX.Close()





               ElseIf Rgx2.IsMatch(txt) Then

                   ms = Strings.Split(txt, "" & "EOR" & ">", -1, CompareMethod.Binary)

                   conXXCXX.Open()


                   Using transaction = conXXCXX.BeginTransaction()
                       cmdCheckCount.Transaction = transaction
                       cmdInsert.Transaction = transaction
                       For Each txtLine As String In ms
                           Call AddDataXFT8(iFT8)
                           iFT8 += 1
                       Next
                       transaction.Commit()
                   End Using
                   conXXCXX.Close()

               End If
           End If
       End If


     
       'Timer7.Stop()
   End Sub




   Private Sub AddDataXFT8(ByVal i As Integer)
       On Error Resume Next
       Debug.Print(String.Format("{0} | Start Add :{1:mm:ssss}", i, Now))

       Dim colcall As String = Regex.Match(ms(i), "(?<=<call.+?>).+?(?=<)", RegexOptions.IgnoreCase Or RegexOptions.Singleline).Value
       Dim qso_date As String = Regex.Match(ms(i), "(?<=<qso_date.+?>).+?(?=<)", RegexOptions.IgnoreCase Or RegexOptions.Singleline).Value
       Dim coltime_on As String = Trim(Regex.Match(ms(i), "(?<=<time_on.+?>).+?(?=<)", RegexOptions.IgnoreCase Or RegexOptions.Singleline).Value)
       Dim colbands As String = Regex.Match(ms(i), "(?<=<band.+?>).+?(?=<)", RegexOptions.IgnoreCase Or RegexOptions.Singleline).Value
       Dim colmodes As String = Regex.Match(ms(i), "(?<=<mode.+?>).+?(?=<)", RegexOptions.IgnoreCase Or RegexOptions.Singleline).Value
       Dim colstation_callsign As String = Regex.Match(ms(i), "(?<=<station_callsign.+?>).+?(?=<)", RegexOptions.IgnoreCase Or RegexOptions.Singleline).Value
       Dim colfreq As String = Regex.Match(ms(i), "(?<=<freq.+?>).+?(?=<)", RegexOptions.IgnoreCase Or RegexOptions.Singleline).Value
       Dim colGRIDSQUARE As String = Regex.Match(ms(i), "(?<=<GRIDSQUARE.+?>).+?(?=<)", RegexOptions.IgnoreCase Or RegexOptions.Singleline).Value
       Dim colrst_sent As String = Regex.Match(ms(i), "(?<=<rst_sent.+?>).+?(?=<)", RegexOptions.IgnoreCase Or RegexOptions.Singleline).Value
       Dim colrst_rcvd As String = Regex.Match(ms(i), "(?<=<rst_rcvd.+?>).+?(?=<)", RegexOptions.IgnoreCase Or RegexOptions.Singleline).Value
       Dim operato As String = Regex.Match(ms(i), "(?<=<operator.+?>).+?(?=<)", RegexOptions.IgnoreCase Or RegexOptions.Singleline).Value
     
     

       Dim qsodate As String = qso_date.Trim()
       Dim d As Date = Date.ParseExact(qsodate, "yyyymmdd", System.Globalization.DateTimeFormatInfo.InvariantInfo)


       Dim bkd As String = d.ToString("yyyy/mm/dd", System.Globalization.CultureInfo.GetCultureInfo("en-US"))


       Dim coltimex As String = coltime_on.Trim()

       If Trim(coltimex.Length) = 4 Then

           timek = Regex.Replace(coltime_on, "(\d{2})(\d{2})", "$1:$2")

       ElseIf coltimex.Length = 6 Then


           timek = Regex.Replace(coltime_on, "(\d{2})(\d{2})(\d{2})", "$1:$2")
       ElseIf coltimex.Length = 7 Then

           timek = Regex.Replace(coltimex, Strings.Right(coltimex, 3), "")
       Else
           timek = Nothing
       End If



       If coltimex.Length = 6 Then


           timek1 = Regex.Replace(coltime_on, "(\d{2})(\d{2})(\d{2})", "$1$2")

       Else
           timek1 = Nothing
       End If


     



       colstation_callsign = strcallbk
       operato = strcallbk


       cmdCheckCount.Parameters("@CALLop").Value = colcall.Trim()
       cmdCheckCount.Parameters("@DateNumber").Value = qso_date.Trim()
       cmdCheckCount.Parameters("@time_on").Value = coltimex.Trim()
       If cmdCheckCount.ExecuteScalar = 0 Then
           cmdInsert.Parameters("@CALLop").Value = colcall.Trim()
           cmdInsert.Parameters("@qso_date").Value = bkd.Trim()
           cmdInsert.Parameters("@timek").Value = Trim(Convert.ToString(timek))
           cmdInsert.Parameters("@bands").Value = colbands.Trim()
           cmdInsert.Parameters("@modes").Value = colmodes.Trim()
           cmdInsert.Parameters("@station_callsign").Value = colstation_callsign.Trim()
           cmdInsert.Parameters("@dxcc").Value = bk9
           cmdInsert.Parameters("@cqz").Value = bk6
           cmdInsert.Parameters("@ituz").Value = bk7
           cmdInsert.Parameters("@rst_sent").Value = colrst_sent.Trim()
           cmdInsert.Parameters("@rst_rcvd").Value = colrst_rcvd.Trim()
           cmdInsert.Parameters("@country").Value = bk3
           cmdInsert.Parameters("@LAT").Value = bk4
           cmdInsert.Parameters("@LON").Value = bk5
           cmdInsert.Parameters("@GRIDSQUARE").Value = colGRIDSQUARE.Trim()
           cmdInsert.Parameters("@PFX").Value = bk2
           cmdInsert.Parameters("@freq").Value = colfreq.Trim()
           cmdInsert.Parameters("@DateNumber").Value = qso_date.Trim()
           cmdInsert.Parameters("@time_on").Value = coltimex.Trim()
           cmdInsert.Parameters("@operato").Value = operato.Trim()
           cmdInsert.Parameters("@Continent").Value = bk8

           cmdInsert.ExecuteNonQuery()
           Application.DoEvents()
 
       End If
   End Sub


في الحدث  Private Sub Timer7_Tick

كود :
Dim SavePathft8 As String = JT65PathX
هنا يتاكد من وجود الملف
JT65PathX

للعلم هذا الكود يقراء الملفات بصيغة 
adi


.txt   log.adi.txt (الحجم : 1,016 بايت / التحميلات : 14)

log.adi.txt

يرجى مسح .txt  لان المنتدى لا يدعم ملفات adi

المهم بعد التاكد من وجود الملف


كود :
If File.ReadAllText(JT65PathX).Length = 0 Then

يتاكد ان الملف في شي او فاضي
اذا في شي يبدى في العمل



الكود واضح بس سؤالي هل في طريقه لفكرة قراءة اخر سطر فقط 
للعلم الملف الثاني يتم تعبئته عن طريق برنامج اخر
log.adi

بارك الله فيكم واسف على الاطاله
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
استفسار :- التاكد من وجود سطر جديد في الملف - بواسطة dubai.eig - 20-09-18, 01:32 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  القاعدة رغم وجود الباس وورد اصبحت لا تفتح atefkhalf2004 5 472 20-10-25, 10:24 AM
آخر رد: dr.programming
  [VB.NET] استفسار بخصوص البحث في RichTextBox SerialPort dubai.eig 2 663 18-06-25, 11:09 AM
آخر رد: dubai.eig
  استفسار لو سمحتم خالد كامل1 3 813 04-06-25, 06:03 PM
آخر رد: Kamil
  [VB.NET] مشكلة تظهر عند استخدام الملف manifest mmaalmesry 2 622 12-05-25, 12:15 AM
آخر رد: mmaalmesry
  استفسار عن حامية برنامج ahmedramy 2 578 27-04-25, 06:02 PM
آخر رد: princelovelorn
  طلب تعديل كود جلب اسم الملف ومساره مصمم هاوي 4 541 25-01-25, 12:45 AM
آخر رد: مصمم هاوي
  استفسار عن تنسيق الفورم في حالة تغيرالفورم من وضع العادي الي التكبير fireswored1 4 823 22-01-25, 09:04 PM
آخر رد: fireswored1
  التأكد من وجود أرقام فقط فى string heem1986 3 318 07-01-25, 01:37 AM
آخر رد: أبو خالد الشكري
  جديد في تعلم البرمجة micro team 3 342 06-01-25, 12:47 AM
آخر رد: أبو خالد الشكري
  القيام بعملية Insert بعد التأكد من عدم وجود السجل بالجدول صالح عبدالله 2 353 04-01-25, 03:56 PM
آخر رد: صالح عبدالله

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


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