المشاركات : 536
المواضيع 182
الإنتساب : Mar 2016
السمعة :
19
الشكر: 652
تم شكره 264 مرات في 171 مشاركات
اهلا بكم جميعا
ارجوا المساعده
انا عندي ملف بصيغة ADIF
55555.zip (الحجم : 220 بايت / التحميلات : 25)
واريد انزل البيانات الموجوده في الى قاعدة البيانات .mdb
محتوى الملف
كود :
<EOH>
<RST_SENT:2>59 <CALL:4>F1TTT <EOR>
<RST_SENT:2>59 <CALL:4>G1WER <EOR>
يبدى الملف من <EOH>
ومن ثم اول سطر
<RST_SENT:2>59 <CALL:4>F1TTT
وعلامة نهاية السطر هو <EOR>
ثم يبدى السطر الثاني
<RST_SENT:2>59 <CALL:4>G1WER
وهكذا
اتمنى مساعدتي بارك الله فيكم
وشكرا
المشاركات : 531
المواضيع 4
الإنتساب : May 2016
السمعة :
55
الشكر: 694
تم شكره 535 مرات في 367 مشاركات
لم توضح
كبف تكون اسماء الأعمدة وما هي البيانات التي تأخذها من النص لكل سطر.
أفضل شي ترسم جدول وتضع اسماء الأعمدة وتقوم بوضع البيانات تحتها، ثم ضعها هنا، عندها ستتضح الفكرة.
المشاركات : 536
المواضيع 182
الإنتساب : Mar 2016
السمعة :
19
الشكر: 652
تم شكره 264 مرات في 171 مشاركات
(27-07-16, 03:32 PM)الوادي كتب : لم توضح
كبف تكون اسماء الأعمدة وما هي البيانات التي تأخذها من النص لكل سطر.
أفضل شي ترسم جدول وتضع اسماء الأعمدة وتقوم بوضع البيانات تحتها، ثم ضعها هنا، عندها ستتضح الفكرة.
فعلا كلامك صحيح انا اسف
ان شاءالله بقوم برسم الجدول
المشاركات : 536
المواضيع 182
الإنتساب : Mar 2016
السمعة :
19
الشكر: 652
تم شكره 264 مرات في 171 مشاركات
(27-07-16, 03:32 PM)الوادي كتب : لم توضح
كبف تكون اسماء الأعمدة وما هي البيانات التي تأخذها من النص لكل سطر.
أفضل شي ترسم جدول وتضع اسماء الأعمدة وتقوم بوضع البيانات تحتها، ثم ضعها هنا، عندها ستتضح الفكرة.
اهلا من جديد
هنا المثال كامل
http://bkqslmanager.com/Datatest.zip
النقص فقد كيف اعمل Import للملف
الملف مرفق مع البرنامج
data.ADI
وشكرا من جديد
المشاركات : 531
المواضيع 4
الإنتساب : May 2016
السمعة :
55
الشكر: 694
تم شكره 535 مرات في 367 مشاركات
28-07-16, 01:01 AM
(آخر تعديل لهذه المشاركة : 28-07-16, 01:06 AM {2} بواسطة الوادي.)
لم توضح وضع الأرقام :2 و:4 هل سيتم تجاهلها ؟
وأيضا توضيح الأدوات اللي على الفورم مثل IDQSO
وطلبت منك أن تذكر الأعمدة المطلوبة من ناحية عددها واسماءها وما يأخذ من النص اللي في الملف ووضعه فيها.
وطلبت منك أن ترسم صورة على شكل جدول تمثيلي
المشاركات : 531
المواضيع 4
الإنتساب : May 2016
السمعة :
55
الشكر: 694
تم شكره 535 مرات في 367 مشاركات
هذا تعديل للكود جربه ورد خبر
PHP كود :
Imports System.Data.OleDb Imports System.Text.RegularExpressions
Public Class WORK
Private cnn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=" & Application.StartupPath & "\Datatest.mdb") Private dtADI As New DataTable Private da As New OleDb.OleDbDataAdapter("SELECT * FROM [DTQSO] ORDER BY [ID]", cnn) Dim c As New OleDbCommandBuilder(da)
Private Sub Frmmain_Load(sender As Object, e As EventArgs) Handles MyBase.Load RefreshData()
End Sub
Private Sub RefreshData()
dtADI.Clear() da.Fill(dtADI)
Me.dgvData.DataSource = dtADI
End Sub
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
If Me.IDQSO.Text.Trim = "" Then dtADI.Rows.Add(Nothing, Me.opcall.Text.Trim, Me.rst_sent.Text.Trim)
Else Dim row As DataRow = (From r As DataRow In dtADI.Rows Where r.Item("ID") = Me.IDQSO.Text.Trim).First row.Item("opcall") = Me.opcall.Text
End If
da.Update(dtADI)
RefreshData()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim fd As OpenFileDialog = New OpenFileDialog() fd.Filter = "ADI files (*.ADI)|*.ADI" If fd.ShowDialog() = DialogResult.OK Then Me.lblAttach.Text = fd.FileName Dim txt As String = IO.File.ReadAllText(fd.FileName) Dim ms As MatchCollection = Regex.Matches(txt, "(?=<CALL).+?(<EOR>)", RegexOptions.IgnoreCase) For Each m As Match In ms Dim colCALL As String = Regex.Match(m.Value, "(?<=<CALL.+?>).+?(?=<)", RegexOptions.IgnoreCase).Value Dim colRST_SENT As String = Regex.Match(m.Value, "(?<=<RST_SENT.+?>).+?(?=<)", RegexOptions.IgnoreCase).Value dtADI.Rows.Add(Nothing, colCALL.Trim, colRST_SENT.Trim) Next Dim c As New OleDbCommandBuilder(da) da.Update(dtADI)
RefreshData() End If End Sub
End Class
المشاركات : 536
المواضيع 182
الإنتساب : Mar 2016
السمعة :
19
الشكر: 652
تم شكره 264 مرات في 171 مشاركات
28-07-16, 09:42 AM
(آخر تعديل لهذه المشاركة : 28-07-16, 09:43 AM {2} بواسطة dubai.eig.)
(28-07-16, 01:01 AM)الوادي كتب : لم توضح وضع الأرقام :2 و:4 هل سيتم تجاهلها ؟
وأيضا توضيح الأدوات اللي على الفورم مثل IDQSO
وطلبت منك أن تذكر الأعمدة المطلوبة من ناحية عددها واسماءها وما يأخذ من النص اللي في الملف ووضعه فيها.
وطلبت منك أن ترسم صورة على شكل جدول تمثيلي
السلام عليك يا مرحب شكرا علي الرد
إقتباس :لم توضح وضع الأرقام :2 و:4 هل سيتم تجاهلها ؟
بخصوص ال 4 و ال2
تعني الكلمه المكتوبه في هذا السطر كم عدد حروفها
مثلا
الكلمه اللي في خانت ال call تحتوي علي 6 حروف EA5DNO
مثال ثاي
الرقم الان 5 والكلمه من خمس حروف وتفس الشي في
الرقم نتجاهله في التنزيل في قاعده البيانات بارك الله فيك
إقتباس :وأيضا توضيح الأدوات اللي على الفورم مثل IDQSO
IDQSO هو تعريف لخانت ال ID في قاعدة البيانات
إقتباس :وطلبت منك أن تذكر الأعمدة المطلوبة من ناحية عددها واسماءها وما يأخذ من النص اللي في الملف ووضعه فيها.
وطلبت منك أن ترسم صورة على شكل جدول تمثيلي
بخصوص الاعمدة انا فهمت اعمدة قاعدة البانات عملتها في ملف
Datatest.mdb
Datatest\Datatest\bin\Debug\Datatest.mdb
شكرا من جديد علي مساعدتي بارك الله فيك
(28-07-16, 02:51 AM)الوادي كتب : هذا تعديل للكود جربه ورد خبر
PHP كود :
Imports System.Data.OleDb Imports System.Text.RegularExpressions
Public Class WORK
Private cnn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=" & Application.StartupPath & "\Datatest.mdb") Private dtADI As New DataTable Private da As New OleDb.OleDbDataAdapter("SELECT * FROM [DTQSO] ORDER BY [ID]", cnn) Dim c As New OleDbCommandBuilder(da)
Private Sub Frmmain_Load(sender As Object, e As EventArgs) Handles MyBase.Load RefreshData()
End Sub
Private Sub RefreshData()
dtADI.Clear() da.Fill(dtADI)
Me.dgvData.DataSource = dtADI
End Sub
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
If Me.IDQSO.Text.Trim = "" Then dtADI.Rows.Add(Nothing, Me.opcall.Text.Trim, Me.rst_sent.Text.Trim)
Else Dim row As DataRow = (From r As DataRow In dtADI.Rows Where r.Item("ID") = Me.IDQSO.Text.Trim).First row.Item("opcall") = Me.opcall.Text
End If
da.Update(dtADI)
RefreshData()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim fd As OpenFileDialog = New OpenFileDialog() fd.Filter = "ADI files (*.ADI)|*.ADI" If fd.ShowDialog() = DialogResult.OK Then Me.lblAttach.Text = fd.FileName Dim txt As String = IO.File.ReadAllText(fd.FileName) Dim ms As MatchCollection = Regex.Matches(txt, "(?=<CALL).+?(<EOR>)", RegexOptions.IgnoreCase) For Each m As Match In ms Dim colCALL As String = Regex.Match(m.Value, "(?<=<CALL.+?>).+?(?=<)", RegexOptions.IgnoreCase).Value Dim colRST_SENT As String = Regex.Match(m.Value, "(?<=<RST_SENT.+?>).+?(?=<)", RegexOptions.IgnoreCase).Value dtADI.Rows.Add(Nothing, colCALL.Trim, colRST_SENT.Trim) Next Dim c As New OleDbCommandBuilder(da) da.Update(dtADI)
RefreshData() End If End Sub
End Class
بارك الله فيك الان بجرب الكود شكرا
المشاركات : 536
المواضيع 182
الإنتساب : Mar 2016
السمعة :
19
الشكر: 652
تم شكره 264 مرات في 171 مشاركات
(28-07-16, 02:51 AM)الوادي كتب : هذا تعديل للكود جربه ورد خبر
PHP كود :
Imports System.Data.OleDb Imports System.Text.RegularExpressions
Public Class WORK
Private cnn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=" & Application.StartupPath & "\Datatest.mdb") Private dtADI As New DataTable Private da As New OleDb.OleDbDataAdapter("SELECT * FROM [DTQSO] ORDER BY [ID]", cnn) Dim c As New OleDbCommandBuilder(da)
Private Sub Frmmain_Load(sender As Object, e As EventArgs) Handles MyBase.Load RefreshData()
End Sub
Private Sub RefreshData()
dtADI.Clear() da.Fill(dtADI)
Me.dgvData.DataSource = dtADI
End Sub
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
If Me.IDQSO.Text.Trim = "" Then dtADI.Rows.Add(Nothing, Me.opcall.Text.Trim, Me.rst_sent.Text.Trim)
Else Dim row As DataRow = (From r As DataRow In dtADI.Rows Where r.Item("ID") = Me.IDQSO.Text.Trim).First row.Item("opcall") = Me.opcall.Text
End If
da.Update(dtADI)
RefreshData()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim fd As OpenFileDialog = New OpenFileDialog() fd.Filter = "ADI files (*.ADI)|*.ADI" If fd.ShowDialog() = DialogResult.OK Then Me.lblAttach.Text = fd.FileName Dim txt As String = IO.File.ReadAllText(fd.FileName) Dim ms As MatchCollection = Regex.Matches(txt, "(?=<CALL).+?(<EOR>)", RegexOptions.IgnoreCase) For Each m As Match In ms Dim colCALL As String = Regex.Match(m.Value, "(?<=<CALL.+?>).+?(?=<)", RegexOptions.IgnoreCase).Value Dim colRST_SENT As String = Regex.Match(m.Value, "(?<=<RST_SENT.+?>).+?(?=<)", RegexOptions.IgnoreCase).Value dtADI.Rows.Add(Nothing, colCALL.Trim, colRST_SENT.Trim) Next Dim c As New OleDbCommandBuilder(da) da.Update(dtADI)
RefreshData() End If End Sub
End Class
ما شاءالله تبارك الله
فعلا الكود ادء المطلوب شكرا لك
بارك الله فيك
تغييراتك جميله
اذا في اي شي في الكود برجع لك : احسنت عمل جميل جدا
المشاركات : 536
المواضيع 182
الإنتساب : Mar 2016
السمعة :
19
الشكر: 652
تم شكره 264 مرات في 171 مشاركات
03-08-16, 06:16 PM
(آخر تعديل لهذه المشاركة : 03-08-16, 06:17 PM {2} بواسطة dubai.eig.)
اهلا من جديد
لقد صادفتني مشكله في قراءة ملفات ال adi
اذا كان الملف يبدى وينتهي في نفس السطر يتم قراءته بدون مشاكل كمثال
إقتباس :<RST_SENT:2>59 <CALL:4>F1TTT <EOR>
ولكن اذا كان يبدى بسطر وينتهي في السطر الثاني او الثالث ما يتم قراءته كمثال
إقتباس :<RST_SENT:2>59
<CALL:4>F1TTT
<EOR>
او
إقتباس :<RST_SENT:2>59 <CALL:4>F1TTT
<EOR>
لان في ملفات تتكون من سطر تبدى وتنتهي بسطر وفي ملفات تكون من سطرين وملفات من ثلاث سطور لهذا اتمنى اجد حل التلاعب في الكود ليتم القراءه وبارك الله فيك
المشاركات : 536
المواضيع 182
الإنتساب : Mar 2016
السمعة :
19
الشكر: 652
تم شكره 264 مرات في 171 مشاركات
/حصلت كود ممكن يساعدنا
كود :
Option Explicit
Public Const conLinhaInicial As Integer = 2
Public Const conColunaInicial As String = "A"
IUltimaLinha As Integer Public(iPrimeiraLinha As Integer) The Integer(Folha1.Cells(iValRecebido, "A")) > 0
iValRecebido = iValRecebido + 1
Loop - 1
End Function
Public Function fQualEAUltimaColuna(sPrimeiraColuna As String) The String(sPrimeiraColuna)
Do While Len(Folha1.Cells(1, Chr(iValRecebido))) > 0
iValRecebido = iValRecebido + 1
Loop(iValRecebido - 1)
End Function
Public Function fCampoAdifValido(sPrimeiraColuna As String, sUltimaColuna As String) The Boolean(sPrimeiraColuna) To Asc(sUltimaColuna)
sNomeDoCampo = LCase(Folha1.Cells(1, iColunaCorrente - 64))
Select Case sNomeDoCampo
Case Is = "band": fCampoAdifValido = True
Case Is = "call": fCampoAdifValido = True
Case Is = "CQZ": fCampoAdifValido = True
Case Is = "mode": fCampoAdifValido = True
Case Is = "qso_date": fCampoAdifValido = True
Case Is = "rst_rcvd": fCampoAdifValido = True
Case Is = "rst_sent": fCampoAdifValido = True
Case Is = "srx": fCampoAdifValido = True
Case Is = "stx": fCampoAdifValido = True
Case Is = "time_on": fCampoAdifValido = True
Case Is = "adif raw"
fCampoAdifValido = True = iAdifRaw iColunaCorrente - 64
Case Else
Folha1.Cells(1, iColunaCorrente - 64).Interior.Color = RGB(255, 0, 0)
fCampoAdifValido = False
End Select
Next
End Function
Public Sub pEscreveAdif()
ILinhaCorrente As Integer Dim ""
For iColunaCorrente = Asc(conColunaInicial) To Asc(sUltimaColuna) - 1
If LCase(Folha1.Cells(1, Chr(iColunaCorrente))) = "band" Then
sTextoNaCelula = Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)) & "M"
Else
If LCase(Folha1.Cells(1, Chr(iColunaCorrente))) = "qso_date" Then
sTextoNaCelula = Replace(Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), "-", "")
Else
If LCase(Folha1.Cells(1, Chr(iColunaCorrente))) = "time_on" Then
iLinhaCorrenteelula = Replace(Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente)), ":", "")
Else
sTextoNaCelula = Folha1.Cells(iLinhaCorrente, Chr(iColunaCorrente))
End If
End If
End If
sLinhaEmAdif = sLinhaEmAdif & "<" & LCase(Folha1.Cells(1, Chr(iColunaCorrente))) & ":" & Only(sTextoNaCelula) & ">" & sTextoNaCelula
Next
Folha1.Cells(iLinhaCorrente, iAdifRaw) = SLinhaEmAdif & "<" & "EOR" & ">"
Next
End Sub
|