الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

غلط في الكود

مغلق
بدأه mayahamdan في 21 أبريل 2005 · 7 رد · 664 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لقد قمت بربط الفورم بقاعده البيانات المرفقه ولم تطبق واكيد لوجود خطا ياريت اعرف ايش هوه الخلط مع العلم اني ربطتو بجدول eat وشكرا كتير

انا حاغلبكم ياجماعه

مجلد جديد.zip

#2

السلام عليكم

لديك بعض الأخطاء البسيطة

1 - قمت بفتح الإتصال Open Connection بينما يقوم الـ DataAdapter بفتح الإتصال بنفسه وبشكل تلقائي .

الحل : لا تحتاج لفتح الإتصال عندما تستخدم DataAdapter

2 - إستخدمت علاقات الجداول DataRelation بينما لم يتبين لي أنك تستخدم أكثر من جدول

وكان الجدول الوحيد هو eat

3 - عند مناداة اسم الجدول كتبت اسم اخر ليس eat والاسم المكتوب هو StatementsDetails وهذا خطأ .

4 - قاعدة البيانات دائماً و أبداً إن كانت من نوع Access يفضل أن تكون في الـ bin folder

هذا الكلام ينطبق على جميع الملفات المراد التعامل معها من خلال البرنامج , مثلاً الملفات الصوتية أو الفيديو أو XML file

يفترض أن تكون في الـ bin folder للتعامل معها بشكل مباشر عن طريق Application.StartPath

وكذلك عند عمل تنصيب Setup للبرنامج فيما بعد .

5 - لم تقم بربط العناصر بالـ DataSet اي الخانات النصية Text boxes

هذه تقريباً المشاكل الفنية في البرنامج وهناك ملاحظات أخرى على التنسيق للبرنامج منها اسماء العناصر يفترض أن تكون

تعطي المعنى للغرض التي إنشئت من أجله والله يوفقكم لما فيه الخير و البركة

هذا هي الإصلاحات في الكود .

Imports System.Data.OleDb
Public Class Form1
    Inherits System.Windows.Forms.Form

    Dim Conn As OleDbConnection
    Dim Adapter As New OleDbDataAdapter
    Dim Datset As DataSet
    Dim crl As Control


#Region " Windows Form Designer generated code "

    Public Sub New()
        MyBase.New()

        'This call is required by the Windows Form Designer.
        InitializeComponent()

        'Add any initialization after the InitializeComponent() call

    End Sub

    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Required by the Windows Form Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.  
    'Do not modify it using the code editor.
    Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
    Friend WithEvents TextBox2 As System.Windows.Forms.TextBox
    Friend WithEvents TextBox3 As System.Windows.Forms.TextBox
    Friend WithEvents TextBox4 As System.Windows.Forms.TextBox
    Friend WithEvents Label1 As System.Windows.Forms.Label
    Friend WithEvents Label2 As System.Windows.Forms.Label
    Friend WithEvents Label3 As System.Windows.Forms.Label
    Friend WithEvents Label4 As System.Windows.Forms.Label
    Friend WithEvents Button1 As System.Windows.Forms.Button
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.TextBox1 = New System.Windows.Forms.TextBox
        Me.TextBox2 = New System.Windows.Forms.TextBox
        Me.TextBox3 = New System.Windows.Forms.TextBox
        Me.TextBox4 = New System.Windows.Forms.TextBox
        Me.Label1 = New System.Windows.Forms.Label
        Me.Label2 = New System.Windows.Forms.Label
        Me.Label3 = New System.Windows.Forms.Label
        Me.Label4 = New System.Windows.Forms.Label
        Me.Button1 = New System.Windows.Forms.Button
        Me.SuspendLayout()
        '
        'TextBox1
        '
        Me.TextBox1.Location = New System.Drawing.Point(48, 64)
        Me.TextBox1.Name = "TextBox1"
        Me.TextBox1.TabIndex = 0
        Me.TextBox1.Text = ""
        '
        'TextBox2
        '
        Me.TextBox2.Location = New System.Drawing.Point(48, 32)
        Me.TextBox2.Name = "TextBox2"
        Me.TextBox2.TabIndex = 1
        Me.TextBox2.Text = ""
        '
        'TextBox3
        '
        Me.TextBox3.Location = New System.Drawing.Point(48, 88)
        Me.TextBox3.Name = "TextBox3"
        Me.TextBox3.TabIndex = 2
        Me.TextBox3.Text = ""
        '
        'TextBox4
        '
        Me.TextBox4.Location = New System.Drawing.Point(48, 120)
        Me.TextBox4.Name = "TextBox4"
        Me.TextBox4.TabIndex = 3
        Me.TextBox4.Text = ""
        '
        'Label1
        '
        Me.Label1.Location = New System.Drawing.Point(160, 32)
        Me.Label1.Name = "Label1"
        Me.Label1.TabIndex = 4
        Me.Label1.Text = "الرقم المتسلسل"
        '
        'Label2
        '
        Me.Label2.Location = New System.Drawing.Point(168, 56)
        Me.Label2.Name = "Label2"
        Me.Label2.TabIndex = 5
        Me.Label2.Text = "الصنف"
        '
        'Label3
        '
        Me.Label3.Location = New System.Drawing.Point(160, 88)
        Me.Label3.Name = "Label3"
        Me.Label3.TabIndex = 6
        Me.Label3.Text = "الكميه"
        '
        'Label4
        '
        Me.Label4.Location = New System.Drawing.Point(160, 120)
        Me.Label4.Name = "Label4"
        Me.Label4.TabIndex = 7
        Me.Label4.Text = "السعرات الحراريه"
        '
        'Button1
        '
        Me.Button1.Location = New System.Drawing.Point(32, 192)
        Me.Button1.Name = "Button1"
        Me.Button1.Size = New System.Drawing.Size(88, 24)
        Me.Button1.TabIndex = 8
        Me.Button1.Text = "بحث"
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(292, 266)
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Button1, Me.Label4, Me.Label3, Me.Label2, Me.Label1, Me.TextBox4, Me.TextBox3, Me.TextBox2, Me.TextBox1})
        Me.Name = "Form1"
        Me.ResumeLayout(False)

    End Sub

#End Region

    Private Sub App_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
        Dim intResponse As MsgBoxResult
        intResponse = _
                MessageBox.Show("Are You Sure Want To Exit From This Application ?", _
                               "Credit Card Application", MessageBoxButtons.YesNo, _
                                MessageBoxIcon.Question)
        If intResponse = MsgBoxResult.No Then
            e.Cancel = True
            Exit Sub
        Else
            End
        End If
    End Sub


#Region " Binding Controls (Text Boxes)"

    Private Sub BindingTextBoxes()

        Me.TextBox1.DataBindings.Add( _
        New Binding("Text", Datset, "eat.qualiti"))

        Me.TextBox2.DataBindings.Add( _
        New Binding("Text", Datset, "eat.id"))

        Me.TextBox3.DataBindings.Add( _
      New Binding("Text", Datset, "eat.quantiti"))

        Me.TextBox4.DataBindings.Add( _
   New Binding("Text", Datset, "eat.kalory"))
    End Sub

#End Region


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If TextBox1.Text = "" Then
            MsgBox("Enter the valid .", MsgBoxStyle.OKOnly, "helth")
            TextBox1.Text = ""
            TextBox1.Focus()
            Exit Sub
        End If

        Try

            Datset = New DataSet
            Conn = New OleDbConnection
            'Specify the connection string property of the OleDb Connection object
            Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
            Application.StartupPath & "\mm.mdb;"
            Dim Cmnd As New OleDbCommand
            Cmnd.CommandText = "Select * from eat where qualiti = '" & TextBox1.Text & "' "
            'Specify the Connection property of the OleDbCommand object to the
            'OleDbConnection object
            Cmnd.Connection = Conn
            'Specify the SelectCommand property of the OleDbDataAdapter object
            'to the OleDbCommand object
            Adapter.SelectCommand = Cmnd
            Dim FillData As Integer = Adapter.Fill(Datset, "eat")
            If FillData = 0 Then
                For Each crl In Me.Controls
                    If TypeOf crl Is TextBox Then
                        crl.Text = String.Empty
                    End If
                Next
            End If
            'otherwise Fill the Data into Textboxes
            For Each crl In Me.Controls
                If TypeOf crl Is TextBox Then
                    crl.DataBindings.Clear()
                End If
            Next
            BindingTextBoxes()
        Catch err As Exception
            MsgBox(err.Message.ToString)
        Finally
            'Closing the connection
            Conn.Close()
        End Try


    End Sub
End Class

والله أعلم

eat.zip

في المثال يتضح المقال

#3

مساء الخير

شكرا كتيييييييييييييييييييييييييييييييييييييييييييير الصراحه كنت ضايعه بالمره

وحاولت مازبط الله يعطيك العافيه

وممنونه

#4

مرحب مره تانيه

بس المثال الي عطيتني اياه مابطبق مابعرف ليش

يمكن اصدارك غبر عن اصداري انا الي عندي 2002

ياريت يكون بينا مراسله على الايميل افضل عشان اخد من خبرتك

وبكون كتير ممنونه

:D

#5

السلام عليكم

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

WindowsApplication3.zip

#6

السلام عليكم

بالطبع لم يقصر الاخ الغملاسي في مساعدتك

فقد شرح جميع الاخطاء التي توجد البرنامج

الله يجزاه خير

طبعا البرنامج اشتغل معي بدووووون مشاكل لاني استخدم اصدار 2003

ويفضل لمن يستخدم اصدار 2002 ان يحول الى 2003

واعتقد ولست متأكداَ ان اصدار 2002 لايفهم كلمة Try بانه يتجنبها او يحذفها

عند فتحي للمشروع لم اجد Try موجودة

وان شاء الله الشباب يأكدوا المعلومة

ويمكنك ان تتجنب المشكلة بحذف سطر Catch و Finally

وبالتوفيق

#7

السلام عليكم

نفس الملاحظة الذي لاحظها أخي mn إلا أن الحل أن تكتبي الكلمة Try

قبل أو بعد الشرط المدرج في الزر Button1 ولتصحيح المعلومة الوظيفة Try أبصرت النور مع النسخة الأولى من الـ NET.

والله أعلم

تم تعديل هذه المشاركة بواسطة الغملاسي في 23 أبريل 2005 في 01:24

في المثال يتضح المقال

#8

السلام عليكم

طبق معي البرنامج وشكرا لمرور الجميع

وتعاونهم

هذا الموضوع مغلق.

مواضيع مشابهة