20-09-18, 01:32 PM
السلام عليكم ورحمة الله
يسعد الله اوقاتكم
عندي فكرة اريد تنفيذها نص الفكرة قمت بتنفيذها باقي النصف الاخر
وهيه عباره كود يقراء ملف معين text مثلا
في حالت وجود سطر جديد يقوم بسحب البيانات لهذا السطر وتنزيله في قاعدة البيانات
انا الكود اللي عني شغال بس في كل مرة يقراء الملف كامل واذا البيانات موجوده ما يقوم بتنزيلها واذا البيانات جديد يقوم بتنزيلها
بس اعتقد كذا مرهق على البرنامج في كل مرة يقراء الملف كامل
ما اعرف هل هناك طريقه ان يقراء اخر سطر فقط وينزل البيانات
اليكم الكود الخاص بي
في الحدث Private Sub Timer7_Tick
هنا يتاكد من وجود الملف
JT65PathX
للعلم هذا الكود يقراء الملفات بصيغة
adi
log.adi.txt (الحجم : 1,016 بايت / التحميلات : 9)
log.adi.txt
يرجى مسح .txt لان المنتدى لا يدعم ملفات adi
المهم بعد التاكد من وجود الملف
يتاكد ان الملف في شي او فاضي
اذا في شي يبدى في العمل
الكود واضح بس سؤالي هل في طريقه لفكرة قراءة اخر سطر فقط
للعلم الملف الثاني يتم تعبئته عن طريق برنامج اخر
log.adi
بارك الله فيكم واسف على الاطاله
يسعد الله اوقاتكم
عندي فكرة اريد تنفيذها نص الفكرة قمت بتنفيذها باقي النصف الاخر
وهيه عباره كود يقراء ملف معين 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
log.adi.txt (الحجم : 1,016 بايت / التحميلات : 9)
log.adi.txt
يرجى مسح .txt لان المنتدى لا يدعم ملفات adi
المهم بعد التاكد من وجود الملف
كود :
If File.ReadAllText(JT65PathX).Length = 0 Then
يتاكد ان الملف في شي او فاضي
اذا في شي يبدى في العمل
الكود واضح بس سؤالي هل في طريقه لفكرة قراءة اخر سطر فقط
للعلم الملف الثاني يتم تعبئته عن طريق برنامج اخر
log.adi
بارك الله فيكم واسف على الاطاله