الشبكة العربية لمطوري الألعاب

مبتدئ  orcka مشاركة 1

السلام عليكم ورحمة الله وبركاته
سؤالي هو .... عم اشتغل على كود برمجي لبرنامج خاص بمنتج الكتروني معين ...
ولكن للأسف ما عم ينفذ البرنامج من حيث اضافة البيانات على الداتا بيز (المقصود الشاشة تقلع ولكن عند ضغط زر اضافة لا تضاف البيانات المدخلة من التكست ...الخ الى الداتا بيز)
وأحس بأنني أوجه مشكلة مع الداتا سيت فكل عمليت اضافة أو حذف أو بحث أو تعديل تابعة للزر الخاص بها يقف تنفيذ البرنامج وتظهر رسالة خطأ ويظلل السطر البرمجي التالي :


dasg.fill(dssg)

اذ أن ........ SqlDataAdapter : dasg
DataSet : dssg

وسأرفق رسالة الخطأ والكود (لزر اضافة فقط ) ان شاء الله لكي أكون قد أوضحت سؤالي .... وشكرا



أختكم






MEME

مبتدئ  orcka مشاركة 2

السلام عليكم ورحمة الله وبركاته
هاد هو الكود البرمجي الخاص بزر الاضافة (هو اضافة وبنفس الوقت تعديل) وأتمنى في حال وجود اي خطأ أن تنبهوني عليه ولو كان خارج عن سؤالي لكي أصححه (سواء خطأ برمجي او منطقي ) ولكم جزيل الشكر وطبعا أتمنى أن اعرف ما هو سبب هذه الرسالة .........





Private Sub bsave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bsave.Click
        Dim k As Integer
        If TabPage1.Focus Then
gg:
            If govercard.SelectedIndex = -1 Then
                MsgBox("يجب  عليك ادخال الاسم ", MsgBoxStyle.Information, "name is required")
                govercard.Focus()
            End If
            If govercard.SelectedIndex <> -1 Then
                dasg.SelectCommand.CommandText = "select max(TrackOwnerNumber) from tSalesGovernorate"
                dssg.Clear()
                dasg.Fill(dssg)
                k = Convert.ToInt64(dssg.Tables(0).Rows(0)(0)) + 1
                dasg.InsertCommand.CommandText = "INSERT INTO tSalesGovernorate (TrackOwnerNumber, " & _
                "TrackOwnerName,Address,Phone,MotorNumber,ShasyahNumber,TrackBoardNumber,Transportations,TrackType,TrackMark,DeviceNumber,SetupCardNumber,SensitiveType,MayaraNumber,TrackRoadLine)" & _
            "values(" & k & "," & _
            "'" & oname.Text & "'," & _
            "'" & oaddress.Text & "'," & _
            "'" & ophone.Text & "'," & _
            "'" & mnumber.Text & "'," & _
            "'" & shnumber.Text & "'," & _
            "'" & tbnumber.Text & "'," & _
            "'" & trans.Text & "'," & _
            "'" & ttype.Text & "'," & _
            "'" & tmark.Text & "'," & _
            "'" & devnumber.Text & "'," & _
            "'" & scnumber.Text & "'," & _
            "'" & sentype.Text & "'," & _
            "'" & numberm.Text & "'," & _
            "'" & trline.Text & "')"
                If dasg.SelectCommand.CommandText = "select IDdevice from tDevices where IDdevice=devnumber.Text" Then
                    MsgBox("انتبه رقم الجهاز مكرر", , "رسالة تنبيه")
                    GoTo gg
                ElseIf dasg.SelectCommand.CommandText = "select IDdevice from tDevices where devnumber.Text between (min(IDdevice) and max(IDdevice))" Then
                    MsgBox("انتبه رقم الجهاز خارج الرقام التسلسلية", , "رسالة تنبيه")
                    GoTo gg
                Else
                    GoTo ww
                End If
                If dasg.SelectCommand.CommandText = "select IDreceipt from tCardS where IDreceipt=scnumber.Text" Then
                    MsgBox("انتبه رقم الايصال مكرر", , "رسالة تنبيه")
                    GoTo gg
                ElseIf dasg.SelectCommand.CommandText = "select IDreceipt from tCardS where scnumber.Text between (min(IDreceipt) and max(IDreceipt))" Then
                    MsgBox("انتبه رقم الايصال خارج الرقام التسلسلية", , "رسالة تنبيه")
                    GoTo gg
                Else
                    GoTo ww
                End If
ww:
                sq1.Open()
                dasg.InsertCommand.ExecuteNonQuery()
                sq1.Close()
                MsgBox("تم الحفظ", , "رسالة حفظ")


            Else
                dasg.SelectCommand.CommandText = "select max(TrackOwnerNumber) from tSalesGovernorate"
                k = Convert.ToInt64(dssg.Tables(0).Rows(0)(0)) + 1
                dasg.UpdateCommand.CommandText = _
           "UPDATE tSalesGovernorate SET  TrackOwnerName=" & _
            "'" & oname.Text & "'," & _
            "Address = '" & oaddress.Text & "'," & _
            "Phone = '" & ophone.Text & "'," & _
            "MotorNumber = '" & mnumber.Text & "'," & _
            "ShasyahNumber = '" & shnumber.Text & "'," & _
            "TrackBoardNumber = '" & tbnumber.Text & "'," & _
            "Transportations = '" & trans.Text & "'," & _
            "TrackType = '" & ttype.Text & "'," & _
            "TrackMark = '" & tmark.Text & "'," & _
            "DeviceNumber = '" & devnumber.Text & "'," & _
            "SetupCardNumber = '" & scnumber.Text & "'," & _
            "SensitiveType = '" & sentype.Text & "'," & _
            "MayaraNumber = '" & numberm.Text & "'," & _
            "TrackRoadLine = '" & trline.Text & "' " & _
            "WHERE  TrackOwnerNumber= " & k & ";"
                If dasg.SelectCommand.CommandText = "select IDdevice from tDevices where IDdevice=devnumber.Text" Then
                    MsgBox("انتبه رقم الجهاز مكرر", , "رسالة تنبيه")
                    GoTo gg
                ElseIf dasg.SelectCommand.CommandText = "select IDdevice from tDevices where devnumber.Text between (min(IDdevice) and max(IDdevice))" Then
                    MsgBox("انتبه رقم الجهاز خارج الرقام التسلسلية", , "رسالة تنبيه")
                    GoTo gg
                Else
                    GoTo ww
                End If
                If dasg.SelectCommand.CommandText = "select IDreceipt from tCardS where IDreceipt=scnumber.Text" Then
                    MsgBox("انتبه رقم الايصال مكرر", , "رسالة تنبيه")
                    GoTo gg
                ElseIf dasg.SelectCommand.CommandText = "select IDreceipt from tCardS where scnumber.Text between (min(IDreceipt) and max(IDreceipt))" Then
                    MsgBox("انتبه رقم الايصال خارج الرقام التسلسلية", , "رسالة تنبيه")
                    GoTo gg
                Else
                    GoTo nn
                End If
nn:
                sq1.Open()
                dasg.UpdateCommand.ExecuteNonQuery()
                sq1.Close()
                MsgBox("قد تم التعديل بنجاح", , "رسالة تعديل")
            End If

        ElseIf TabPage2.Focus Then
            If iddev.Text = "" Then
                dade.SelectCommand.CommandText = "select max(IDdevice) from tDevices"
                dsde.Clear()
                dade.Fill(dsde)
                k = Convert.ToInt64(dsde.Tables(0).Rows(0)(0)) + 1
                dade.InsertCommand.CommandText = "INSERT INTO tDevices (IDdevice, " & _
                "DateRec)" & _
            "values(" & k & "," & _
            "'" & DateTimePicker2.Text & "')"
                sq1.Open()
                dasg.InsertCommand.ExecuteNonQuery()
                sq1.Close()
                iddev.Text = k
                MsgBox("تم الحفظ", , "رسالة حفظ")
            Else
                dade.SelectCommand.CommandText = "select max(IDdevice) from tDevices"
                k = Convert.ToInt64(dsde.Tables(0).Rows(0)(0)) + 1
                dade.UpdateCommand.CommandText = _
           "UPDATE tDevices SET  DateRec=" & _
            "'" & DateTimePicker2.Text & "'," & _
            "WHERE  IDdevice= " & k & ";"
                sq1.Open()
                dasg.UpdateCommand.ExecuteNonQuery()
                sq1.Close()
                MsgBox("قد تم التعديل بنجاح", , "رسالة تعديل")
            End If


        ElseIf TabPage3.Focus Then
            If idreceipt.Text = "" Then
                dacs.SelectCommand.CommandText = "select max(IDreceipt) from tCardS"
                dscs.Clear()
                dacs.Fill(dscs)
                k = Convert.ToInt64(dscs.Tables(0).Rows(0)(0)) + 1
                dacs.InsertCommand.CommandText = "INSERT INTO tCardS (IDreceipt, " & _
                "DAterec)" & _
            "values(" & k & "," & _
            "'" & DateTimePicker3.Text & "')"
                sq1.Open()
                dacs.InsertCommand.ExecuteNonQuery()
                sq1.Close()
                idreceipt.Text = k
                MsgBox("تم الحفظ")
            Else
                dacs.SelectCommand.CommandText = "select max(IDreceipt) from tCardS"
                k = Convert.ToInt64(dscs.Tables(0).Rows(0)(0)) + 1
                dacs.UpdateCommand.CommandText = _
           "UPDATE tCardS SET  DAterec=" & _
            "'" & DateTimePicker3.Text & "'," & _
            "WHERE  IDreceipt= " & k & ";"
                sq1.Open()
                dasg.UpdateCommand.ExecuteNonQuery()
                sq1.Close()
                MsgBox("قد تم التعديل بنجاح", , "رسالة تعديل")
            End If


        Else


        End If
    End Sub





your sister

MEME

خبير مدير وسام البهنسي مشاركة 3

لست متأكداً من الخطأ لأن الـ exception لا يقدم أي شرح مفيد (تباً له). لكن يمكننا على الأقل تجريب بعض الأمور:

1- هل ينجح التنفيذ للعبارة
select max(TrackOwnerNumber) from tSalesGovernorate
إذا جربتها في الـ SQL Query Analyzer مثلاً؟

2- وإن كنت أشك بهذه النقطة، لكن هل من الممكن تجريب تعبئة DataSet object جديدة بدلاً من تنظيف الـ dssg وإعادة تعبئتها ثانية؟

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  orcka مشاركة 4

في Oct 22, 2007 23:50، قال وسام البهنسي بهدوء وتؤدة:

لست متأكداً من الخطأ لأن الـ exception لا يقدم أي شرح مفيد (تباً له). لكن يمكننا على الأقل تجريب بعض الأمور:


"أخي وسام (لو كنت تسمح لي بقول ذلك) ، معك حق الـ exception لا يقدم أي شرح مفيد وكالعادة حتى لو قدم فإن الخطأ يكون غير الذي تطرق له الـ exception "

في Oct 22, 2007 23:50، عقد وسام البهنسي حاجبيه بتفكير وقال:

1- هل ينجح التنفيذ للعبارة
select max(TrackOwnerNumber) from tSalesGovernorate
إذا جربتها في الـ SQL Query Analyzer مثلاً؟


"لقد جربت الاقتراح الأول والحمد لله نجح وأعطت عبارة الــselect النتيجة الصحيحة "
مع العلم أنني حذفت الـ sql وأعدت تحميلها من جديد مخافة أن يكون بتحميلها أي خطأ ، فهل باعتقادك أنه من الممكن أن تكون نسخة ال sql هي السبب
مع أنني قد جربت هذه النسخة وعلى جهازي نفسه بمشروع تخرجي من قبل ...

وفي Oct 22, 2007 23:50، قال وسام البهنسي متحمساً:

2- وإن كنت أشك بهذه النقطة، لكن هل من الممكن تجريب تعبئة DataSet object جديدة بدلاً من تنظيف الـ dssg وإعادة تعبئتها ثانية؟


"بالنسبة للخيار الثاني فأنا ساجربه ... ولكن على يقين بأنه ليس الخطأ في التنظيف
ولو وضعنا واحدة جديدة فلن تجدي نفعا لأن الـ dataset غير محملة ببيانات أصلاً "

مع شكري و إمتناني لردك ولاقتراحك ...

أختكم

MEME

خبير مدير وسام البهنسي مشاركة 5

هل من الممكن سرد الـ callstack عند حدوث الـ exception؟
كتجربة أخرى، هل تنجح العملية إن كان الطلب يعيد صف واحد فقط (one row)؟

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  orcka مشاركة 6

السلام عليكم
أولاً .... أأسف عالتأخير ، ثانياً ...لم أفهم طلبك الأول بالأحرى ماذا تريد ( أنا جديدة في برمجة الدوت نت و أعرف القليل عنها وتجربتي كما يقولون " على قدها " )
أما بالنسبة لتجربة أن تعيد سطر واحد (سجل واحد) فإن قاعدة البيانات لاتحتوي من البيانات سوى سجل واحد فقط كما انني جربت ولم تنجح التجربة ... فما العمل يا ترى!؟
وشـــــــــــــــــــــــكراً

MEME

خبير  أحمد عبد الغني مشاركة 7

الـ call stack هو تسلسل النداءات وشجريتها حتى موقع معين في التنفيذ. يمكن الحصول عليه بالطريقة الآتية:

1- تنفيذ البرنامج تحت الـ debugger (ضغط F5 لبدء التنفيذ).
2- القيام بالعمليات التي تتسبب بالخطأ.
3- عند حصول الخطأ ستظهر رسالة تسمح لنا بتعطيل البرنامج (Break).
4- نعمل break. هنا ستظهر لنا في النافذة التعليمة التي تسببت بالخطأ.
5- هنا، يمكننا النظر إلى نافذة الـ Call Stack في VS.NET، وهي إن لم تكن ظاهرة، فيمكن إظهارها من القائمة View ثم الأمر Call Stack.
6- لإرسال المعلومات في الـ call stack، يمكن عمل copy/paste. حيث نختار النداءات في النافذة، ثم نضغط Ctrl+C .

اللهم انصر أهلنا في فلسطين وآجرنا أن نكون عوناً لهم