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

مالخطأفي sql

مغلق
بدأه roza_03 في 4 مايو 2005 · 8 رد · 752 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الجملة التالية اريدها ان تحذف كل السجلات من جدول الكتب اذا تحققت شروط معينة وانا اضطررت اني اعمل جملة select مع delete لان شروط الحذف لابد تكون مقارنة من جدولين جدول الكتب وجدول استعارة الزائرين

فلماذا لايتم تنفيذ هذه الجملة

delete from book   select v.loanNO from visitorLoan as v ,book as b where dateadd(day,90,v.insurancedate)<getdate() and   v.loankind='b' and b.bookNo=v.loanNO

مع اني عند تجزئتها تتنفذ

select @no=  v.loanNO from visitorLoan as v ,book as b where dateadd(day,90,v.insurancedate)<getdate() and   v.loankind='b' and b.bookNo=v.loanNO
delete from book   where bookNo=@no

ولكني اريد ان تتنفذ جملة الحذف على كل الصفوف اللتي ينطبق عليها الشرط لكن عندما جزئت الجملة اصبحت لاتتطبق الا على صف واحد

وكذلك عندي سؤال اخر

عندما اخزن التاريخ في احد الحقول من دالة getdate() تخزن لي تاريخ اليوم وكذلك تخزن الوقت فهل من حل لاني لااريد ان يتخزن الوقت لانة عند عمل مقارنة لتاريخ معين لن يعطي النتيجة الصحيحة

#2

اضف الشرط معwhere

مثلا

delete from book as bb   where  bb.bookNo in ( select b.bookNo from visitorLoan as v ,book as b where dateadd(day,90,v.insurancedate)<getdate() and   v.loankind='b' and b.bookNo=v.loanNO)

هذه طريقة للحل وليست الحل لأني لا اعلم تشكيلة الداتابيس

تم تعديل هذه المشاركة بواسطة khwlani في 4 مايو 2005 في 01:47

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#3

بسم الله

هذا كود يقوم بإلغاء كافة بيانات سيارة بدلالة رقمها الذي تأخذه جملة الإستعلام من مربع النص 1 (تكست بوكس1)

يتم كتابة هذه الجملة في موديول

Friend ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" _
              & "Data Source=" & Application.StartupPath.ToString & "\المعرض.mdb;"

لتعريف الكونيكشن الذي يحدد مسار قاعدة البيانات التي يتم التعامل معها

Dim con As New OleDb.OleDbConnection

لتعريف الكوماند الذي سوف يقوم بتنفيذ عملية الإلغاء

Dim deleting As New OleDb.OleDbCommand

con.Close()

تحديد المسار

        con.ConnectionString = ConnString

        deleting.Connection = con
        deleting.CommandType = CommandType.Text

جملة الإستعلام بدلالة رقم السيارة من (تكست بوكس 1)، وهي طريقة ثانية ، بالإضافة إلى طريقة الباراميترز ، وعيب هذه الطريقة هو وجوب التأكد من علامات التنصيص في جملة الإستعلام

deleting.CommandText = "DELETE FROM  cars_informations where     CarID = " & TextBox1.Text & ""
        con.Open()

تنفيذ جملة الإستعلام

       deleting.ExecuteNonQuery()
        con.Close()

في حالة الشرط بدلالة رقم ، كما هو في المثال السابق :

" & TextBox1.Text & "

في حالة الشرط بدلالة حقل نصي :

'" & TextBox1.Text & "'

فعلى سبيل المثال ، إذا كان الإلغاء بدلالة اسم السيارة :

deleting.CommandText = "DELETE FROM  cars_informations where     CarName = '" & TextBox1.Text & "'
"

أو : بإستخدام المعامل like في حالة البيان النصي :

deleting.CommandText = "DELETE FROM  cars_informations where     CarName like '" & TextBox1.Text & "'
"

في حالة الشرط بدلالة حقل تاريخ :

#" & DateTimePicker1.Text & "#

يأخذ من أداة دات تيم بيكر

فعلى سبيل المثال ، إذا كان الإلغاء بدلالة تاريخ تسجيل السيارة :

deleting.CommandText = "DELETE FROM  cars_informations where     Record_Date = #" & DateTimePicker1.Text & "#
"

delete query.rar

تم تعديل هذه المشاركة بواسطة walcom في 5 مايو 2005 في 10:46

#4

جزاكم الله خير على المساعدة

الكود الاول ضبط والثاني بصراحة مافهمت :rolleyes:

السؤال الثاني لوسمحتم :)

(عندما اخزن التاريخ في احد الحقول من دالة getdate() تخزن لي تاريخ اليوم وكذلك تخزن الوقت فهل من حل لاني لااريد ان يتخزن الوقت لانة عند عمل مقارنة لتاريخ معين لن يعطي النتيجة الصحيحة )

ولو كنت واضعة في اداة دات تيم بيكر هل اضع لها فورمات معينة بحيث لاتسحب الاالتاريخ

#5

بسم الله

السلام عليكم

يتم ضبط خاصية format لـــ datetimepicker لتصبح (short)

ويكون التعامل مع الخاصية (text) الخاصة بها عند القيام بأي عملية تسجيل أو تعديل أو إلغاء أو استدعاء .

ويتم تعديل خاصية format للحقل الموجود في قاعدة البيانات ليصبح short date ، مع مراعاة أن نوعه بطبيعة الحال يجب أن يكون تاريخ/وقت .

ومن control panel من regional and language options يتم تغيير فورمات اللغة إلى (english united kingdom)

والمرفق هو نموذج لإدخال واستدعاء وتعديل وإلغاء بيانات سيارة ، ولسرعة تجربة الإلغاء ، يقوم المستخدم بكتابة رقم السيارة 1 في التكست بوكس الخاص برقم السيارة ، ثم ضغط مفتاح tab ، لإستدعاء بيانات هذه السيارة ، ومن ثم تجربة العمليات على بياناتها ، والله أعلى وأعلم .

والصيغة العامة لجملة الإلغاء :

"&DELETE FROM (table name) where (field name) = " & TextBox1.Text

ويمكن كتابتها بــــ * أو بدون * :

"&DELETE * FROM (table name) where (field name) = " & TextBox1.Text

delete query.rar

#6

اخوي الله يجزاك خير لكن انا استخدم الدالةget date وجاعلتها قيمة افتراضية تتسجل اوتوماتيك لانها تاريخ التسجيل والدالة getdate ترجع التاريخ والوقت

#7

كيف عرفj الحقل في قاعدة البيانات هل هو DATE or Timestamp

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#8

معرفة حقل التسجيل في الجدول datetime

#9

معرفة حقل التسجيل في الجدول datetime

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

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