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

سؤال في Sql

بدأه كمبودي في 9 مايو 2008 · 10 رد · 968 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

حقيقة هذا السؤال اطلعت عليه في مكان آخر وللأسف لم يجب عليه احد لذا احببت ان اطرح السؤال هنا لعلي استفيد من خبرتكم

المشكله كالتالي

فورم مربوط عن طريق الاداة ado بقاعدة البيانات

هذا الفورم فيه حقلين الاسم والرقم

المطلوب استخراج من الجدول الاسم N الذي يشير اليه الرقم R ولكن الاسم الذي استخرجناه من الجدول لا نرغب بأن يظهر بالفورم بل نسنده مباشره لمتغير اسمه S فيأخذ المتغير S ناتج العملية بدون ان تظهر القيمة في الفورم وهي في الاوراكل كالتالي

select N

into S

from tabl

where R = 9

ارجو ان اكون قد وفقت في شرحي

#2

الأخ الكريم ، الأوراكل شيء ، والفيجوال شيء آخر !!!

جملة :

select N into S from tabl where R = 9

هو Cursor ضمني ، وظيفتة الرئيسية هو إرتجاع حقل أو حقلين أو ثلاثة أو أكثر ، ولكن لا يمكنك زيادتة عن سجل واحد .

أما موضوع إرتجاع قيمة حقل واحد بالفيجوال 6 ، فيمكنك إرتجاع القيمة كما تشاء وبأي طريقة كما يلي :

Select N From Table Where R = 9

وعلي هذا الأساس يمكنك إرسال القيمة لكائن Recordset ومن ثم جلب قيمة N في متغير كما يلي :

X = Rs!N

مثال :

Private Function Get_Value(IN_SQL  As String,Optional ColID As Long)
   Dim Rs As New ADODB.Recordset
   On Error Resume Next
   Rs.CursorLocation = adUseClient
   Rs.Open IN_SQL, Cn, adOpenStatic, adLockReadOnly
   If(Err.Number <> 0)Then Exit Function
   Get_Value = ""
   If(Rs.RecordCount = 0)Then Exit Function
   Get_Value = IIF(IsNull(Rs(ColID)) = True,"",Rs(ColID))
End Function

شكراً

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#3

اخي الكريم

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

Private Sub Command7_Click()

Adodc2.RecordSource = " select id from customers where mobile like " + Text20.Text + ""

Adodc2.CommandType = adCmdText

Adodc2.Refresh

End Sub

الآن كيف اسند قيمة الـ

id

لمتغير في نفس الكود ارجوك ان تتحملني قليلا

ولواضفت لي ايضا شرح كودك سأكون ممتنا لك جدا جدا جدا جدا جدا جدا جدا

ساعدني الله يساعدك بالدنيا والآخره

#4

في المثال التالي يتم حفظ قيمة الحقل الناتج عن عملية البحث في المتغير N :

Global MYDB As Database
Global MYTABLE As Recordset
Set MYDB = OpenDatabase(App.Path & "\databsatename.mdb")
Set MYTABLE = MYDB.OpenRecordset = "select id from customers where mobile='" & Text20.Text  & "'" 
if MYTABLE.RecordCount <>0 then
		 N=MYTABLE.Fields("id").Value
End if
MYTABLE.Close

'ولكن يجب ملاحظة أن الناتج أحيانا في عمليات البحث قد يعود بأكثر من نتيجة، لهذا وجب التنبيه

تم تعديل هذه المشاركة بواسطة momenpro في 9 مايو 2008 في 11:49

#5

الله يجزاك كل خير سأحاول وأرد عليك بإذن الله

كان الله معك مثلما كنت معي انت والأخ mma

#6

اخي الكريم فشلت مجددا

دعني اشرح لك برنامج

هي شاشة واحده

اسم قاعدة البيانات car_rental

جملة السلكت هي كالتالي

"select id from customers where mobile='" & Text20.Text & "'"

الأداة التي استخدمها هي adodc1 للربط

لا ارغب باستخدام الكود app.path لأنني على ارتباط مع قاعدة البيانات عن طريق adodc1

اعلم يقينا انني سببت لك صداعا لك حرية الاجابة او الامتناع

#7

من الأفضل أن ترفق النموذج (Form) الذي يحتوي على المشكلة.

#8
 

Dim IDSerial As Long

Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DB.mdb"
Adodc1.RecordSource = "select ID from customers where mobile='" & Text20.Text & "'"
Adodc1.CursorLocation = adUseClient
Adodc1.CursorType = adOpenStatic
Adodc1.Refresh

IDSerial := adodc1.Recordset("ID").Value

شكراً

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#9

IDSerial := adodc1.Recordset("ID").Value

هذا هو ما كنت ابحث عنه بالضبط

اللهم يا الله يا رب كل شيء ومليكه يا من وسعت رحمته كل شيء أسألك باسمك العظيم الذي اذا سئلت به اجبت ان تغفر لمن قام بمساعدتي يارب العالمين

شكرا

الف شكر هذا بالضبط ما كنت ابحث عنه

#10

هل لي باستفسار اخر اذا سمحتم او يكفي ما قدمتم لي

استفساري هو كالتالي

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

s=50

adodc1.recordSource = "select name from table where id = s"

#11
اقتباس
اللهم يا الله يا رب كل شيء ومليكه يا من وسعت رحمته كل شيء أسألك باسمك العظيم الذي اذا سئلت به اجبت ان تغفر لمن قام بمساعدتي يارب العالمين

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

اما بخصوص عملية البحث علي أساس متغير ، فهو نفس فكرة الحقل ، حيث أن الحقل يحتوي علي خاصية ، والخاصية تحتوي علي مخزن متغير Varialbe !!!

علي العموم نفس الفكرة تقريباً ، وإليك الطرق المختلفة للبحث :

1- البحث عن قيمة في حقل رقمي :

adodc1.recordSource = "select name from table where id = " & S

2- البحث عن قيمة في حقل نصي وحقل تاريخ/وقت :

adodc1.recordSource = "select name from table where name = '" & s & "'"

3- البحث المتقدم لقيمة نصية :

adodc1.recordSource = "select name from table where name = '%" & S & "%'"

وهكذا

شكراً

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

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