ارجوا المساعده في عمل كود - dubai.eig - 27-07-16
اهلا بكم جميعا
ارجوا المساعده
انا عندي ملف بصيغة ADIF
[attachment=11270]
واريد انزل البيانات الموجوده في الى قاعدة البيانات .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
وهكذا
اتمنى مساعدتي بارك الله فيكم
وشكرا
RE: ارجوا المساعده في عمل كود - الوادي - 27-07-16
لم توضح
كبف تكون اسماء الأعمدة وما هي البيانات التي تأخذها من النص لكل سطر.
أفضل شي ترسم جدول وتضع اسماء الأعمدة وتقوم بوضع البيانات تحتها، ثم ضعها هنا، عندها ستتضح الفكرة.
RE: ارجوا المساعده في عمل كود - dubai.eig - 27-07-16
(27-07-16, 03:32 PM)الوادي كتب : لم توضح
كبف تكون اسماء الأعمدة وما هي البيانات التي تأخذها من النص لكل سطر.
أفضل شي ترسم جدول وتضع اسماء الأعمدة وتقوم بوضع البيانات تحتها، ثم ضعها هنا، عندها ستتضح الفكرة.
فعلا كلامك صحيح انا اسف
ان شاءالله بقوم برسم الجدول
RE: ارجوا المساعده في عمل كود - dubai.eig - 28-07-16
(27-07-16, 03:32 PM)الوادي كتب : لم توضح
كبف تكون اسماء الأعمدة وما هي البيانات التي تأخذها من النص لكل سطر.
أفضل شي ترسم جدول وتضع اسماء الأعمدة وتقوم بوضع البيانات تحتها، ثم ضعها هنا، عندها ستتضح الفكرة.
اهلا من جديد
هنا المثال كامل
http://bkqslmanager.com/Datatest.zip
النقص فقد كيف اعمل Import للملف
الملف مرفق مع البرنامج
data.ADI
وشكرا من جديد
RE: ارجوا المساعده في عمل كود - الوادي - 28-07-16
لم توضح وضع الأرقام :2 و:4 هل سيتم تجاهلها ؟
وأيضا توضيح الأدوات اللي على الفورم مثل IDQSO
وطلبت منك أن تذكر الأعمدة المطلوبة من ناحية عددها واسماءها وما يأخذ من النص اللي في الملف ووضعه فيها.
وطلبت منك أن ترسم صورة على شكل جدول تمثيلي
RE: ارجوا المساعده في عمل كود - الوادي - 28-07-16
هذا تعديل للكود جربه ورد خبر
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
RE: ارجوا المساعده في عمل كود - dubai.eig - 28-07-16
(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
[attachment=11277]
شكرا من جديد علي مساعدتي بارك الله فيك
(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
بارك الله فيك الان بجرب الكود شكرا
RE: ارجوا المساعده في عمل كود - dubai.eig - 28-07-16
(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
ما شاءالله تبارك الله
فعلا الكود ادء المطلوب شكرا لك
بارك الله فيك
تغييراتك جميله
اذا في اي شي في الكود برجع لك : احسنت عمل جميل جدا
RE: ارجوا المساعده في عمل كود - dubai.eig - 03-08-16
اهلا من جديد
لقد صادفتني مشكله في قراءة ملفات ال 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>
لان في ملفات تتكون من سطر تبدى وتنتهي بسطر وفي ملفات تكون من سطرين وملفات من ثلاث سطور لهذا اتمنى اجد حل التلاعب في الكود ليتم القراءه وبارك الله فيك
RE: ارجوا المساعده في عمل كود - dubai.eig - 04-08-16
/حصلت كود ممكن يساعدنا
كود :
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
|