منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : ارجوا المساعده في عمل كود
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
اهلا بكم جميعا

ارجوا المساعده 

انا عندي ملف بصيغة 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

وهكذا


اتمنى مساعدتي بارك الله فيكم

وشكرا
لم توضح

كبف تكون اسماء الأعمدة وما هي البيانات التي تأخذها من النص لكل سطر.

أفضل شي ترسم جدول وتضع اسماء الأعمدة وتقوم بوضع البيانات تحتها، ثم ضعها هنا، عندها ستتضح الفكرة.
(27-07-16, 03:32 PM)الوادي كتب : [ -> ]لم توضح

كبف تكون اسماء الأعمدة وما هي البيانات التي تأخذها من النص لكل سطر.

أفضل شي ترسم جدول وتضع اسماء الأعمدة وتقوم بوضع البيانات تحتها، ثم ضعها هنا، عندها ستتضح الفكرة.



فعلا  كلامك صحيح انا اسف

ان شاءالله بقوم برسم الجدول
(27-07-16, 03:32 PM)الوادي كتب : [ -> ]لم توضح

كبف تكون اسماء الأعمدة وما هي البيانات التي تأخذها من النص لكل سطر.

أفضل شي ترسم جدول وتضع اسماء الأعمدة وتقوم بوضع البيانات تحتها، ثم ضعها هنا، عندها ستتضح الفكرة.
اهلا من جديد
هنا المثال كامل 
http://bkqslmanager.com/Datatest.zip
النقص فقد كيف اعمل Import   للملف

الملف مرفق مع البرنامج
data.ADI

وشكرا من جديد
لم توضح وضع الأرقام :2 و:4 هل سيتم تجاهلها ؟

وأيضا توضيح الأدوات اللي على الفورم مثل IDQSO

وطلبت منك أن تذكر الأعمدة المطلوبة من ناحية عددها واسماءها وما يأخذ من النص اللي في الملف ووضعه فيها.

وطلبت منك أن ترسم صورة على شكل جدول تمثيلي
هذا تعديل للكود جربه ورد خبر
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 ObjectAs EventArgsHandles 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 ObjectAs EventArgsHandles btnAdd.Click

        
If Me.IDQSO.Text.Trim "" Then
            dtADI
.Rows.Add(NothingMe.opcall.Text.TrimMe.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.ObjectByVal e As System.EventArgsHandles 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(NothingcolCALL.TrimcolRST_SENT.Trim)
            
Next
            Dim c 
As New OleDbCommandBuilder(da)
            
da.Update(dtADI)

            
RefreshData()
        
End If
    
End Sub

End 
Class 
(28-07-16, 01:01 AM)الوادي كتب : [ -> ]لم توضح وضع الأرقام :2 و:4 هل سيتم تجاهلها ؟

وأيضا توضيح الأدوات اللي على الفورم مثل IDQSO

وطلبت منك أن تذكر الأعمدة المطلوبة من ناحية عددها واسماءها وما يأخذ من النص اللي في الملف ووضعه فيها.

وطلبت منك أن ترسم صورة على شكل جدول تمثيلي

السلام عليك يا مرحب شكرا علي الرد

إقتباس :لم توضح وضع الأرقام :2 و:4 هل سيتم تجاهلها ؟

بخصوص  ال 4  و ال2

تعني الكلمه المكتوبه في هذا السطر كم عدد حروفها
مثلا
كود :
<call:6>EA5DNO

الكلمه اللي في خانت ال call  تحتوي علي 6 حروف  EA5DNO

مثال ثاي


كود :
<call:5>s51aa

الرقم الان 5 والكلمه من خمس حروف  وتفس الشي في  

كود :
<rst_sent:2>59


الرقم نتجاهله في التنزيل في قاعده البيانات بارك الله فيك


إقتباس :وأيضا توضيح الأدوات اللي على الفورم مثل 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 ObjectAs EventArgsHandles 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 ObjectAs EventArgsHandles btnAdd.Click

        If Me
.IDQSO.Text.Trim "" Then
            dtADI
.Rows.Add(NothingMe.opcall.Text.TrimMe.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.ObjectByVal e As System.EventArgsHandles 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(NothingcolCALL.TrimcolRST_SENT.Trim)
 
           Next
            Dim c 
As New OleDbCommandBuilder(da)
 
           da.Update(dtADI)

 
           RefreshData()
 
       End If
 
   End Sub

End 
Class 

بارك الله فيك الان بجرب الكود شكرا Smile
(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 ObjectAs EventArgsHandles 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 ObjectAs EventArgsHandles btnAdd.Click

        If Me
.IDQSO.Text.Trim "" Then
            dtADI
.Rows.Add(NothingMe.opcall.Text.TrimMe.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.ObjectByVal e As System.EventArgsHandles 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(NothingcolCALL.TrimcolRST_SENT.Trim)
 
           Next
            Dim c 
As New OleDbCommandBuilder(da)
 
           da.Update(dtADI)

 
           RefreshData()
 
       End If
 
   End Sub

End 
Class 



ما شاءالله تبارك الله

فعلا الكود ادء المطلوب شكرا لك

Smile   بارك الله فيك

تغييراتك جميله 

اذا في اي شي في الكود برجع لك :Smile احسنت عمل جميل جدا
اهلا من جديد

لقد صادفتني مشكله في قراءة ملفات ال 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>


لان في ملفات تتكون من سطر تبدى وتنتهي بسطر وفي ملفات  تكون من سطرين وملفات من ثلاث سطور لهذا اتمنى اجد حل التلاعب في الكود ليتم القراءه وبارك الله فيك
/حصلت كود ممكن يساعدنا 

كود :
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
الصفحات : 1 2