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

عناصر #C و VB

بدأه Toooffa في 9 مايو 2010 · 17 رد · 1,206 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

عند تطبيقي للدرس المثبت عن قواعد البيانات Access و Visual Basic

واجهتني مشكلة صغيرة .. حيث إنني أعمل على #C

هناك عنصر يسمى Item في Visual Basic

ولم أجده في #C

فـ ماهو البديل عن هذا العنصر في #C

وهذا هو الكود في Visual Basic



Imports System.Data.OleDb

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Info.mdb")
Dim MyCmd As New OleDbCommand
Dim MyReader As OleDbDataReader
Conn.Open()
MyCmd.Connection = Conn
MyCmd.CommandType = CommandType.Text
MyCmd.CommandText = "SELECT ID, Name, Phone FROM Information ORDER BY Name;"
MyReader = MyCmd.ExecuteReader
If MyReader.Read Then
TextBox1.Text = MyReader.Item("ID")
TextBox2.Text = MyReader.Item("Name")
TextBox3.Text = MyReader.Item("Phone")
Else
MsgBox(" Empty ", MsgBoxStyle.Exclamation)
End If

MyReader.Close()
Conn.Close()





End Sub
End Class

وهذا في #C



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace INFO
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
OleDbConnection aConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Info.mdb");
OleDbCommand aCommand = new OleDbCommand();
OleDbDataReader aReader = aCommand.ExecuteReader();

aConnection.Open();
aCommand.Connection = aConnection;
aCommand.CommandType = CommandType.Text;
aCommand.CommandText = "SELECT ID,Name,Phone FROM Information ORDER BY Name";

// textBox1.Text = aReader. ????

aReader.Close();

aConnection.Close();






}
}
}

#2

في السي شارب تكتب هكذا

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace INFO
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OleDbConnection aConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Info.mdb");
            OleDbCommand aCommand = new OleDbCommand();
            OleDbDataReader aReader = aCommand.ExecuteReader();

            aConnection.Open();
            aCommand.Connection = aConnection;
            aCommand.CommandType = CommandType.Text;
            aCommand.CommandText = "SELECT ID,Name,Phone FROM Information ORDER BY Name";

          TextBox1.Text = MyReader["ID"].ToString();
            TextBox2.Text = MyReader.["Name"].ToString()
            TextBox3.Text = MyReader.["Phone"].ToString()


            aReader.Close();

            aConnection.Close();






        }
    }
}

والله أعلم

#3

جزاك الله ألف خييير أخي الفاضل

قمت بما تفضلت به

ولكن تظهر لي هذه الرسالة اثناء التنفيذ

أرجو الافادة

و شاكرتلك جدا ً جدا ً على جهوودك .. فرجت عني هم كبير

828651776.png

#4

المشكلة بسيطة إن شاء الله وسبب المشكلة هو ان التنفيذ ياتي قبل فتح الإتصال بقواعد البيانات

اليك الكود مجددا

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace INFO
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OleDbConnection aConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Info.mdb");
            OleDbCommand aCommand = new OleDbCommand();

//First Thing is To open the connection
            aConnection.Open();
            aCommand.Connection = aConnection;
            aCommand.CommandType = CommandType.Text;
            aCommand.CommandText = "SELECT ID,Name,Phone FROM Information ORDER BY Name";
  OleDbDataReader aReader = aCommand.ExecuteReader();
          TextBox1.Text = MyReader["ID"].ToString();
            TextBox2.Text = MyReader.["Name"].ToString()
            TextBox3.Text = MyReader.["Phone"].ToString()


            aReader.Close();

            aConnection.Close();






        }
    }
}

بالتوفيق إن شاء الله

#5

ألف شكر أخي الفاضل ،،

و أعتذر عن الاطالة و الجهد ،،

ولكن واجهتني مشكلة اخرى ،،

833793167.png

و أثناء التنفيذ تظهر علامة × عند DataBase في Server Explorar

108057073.png

هل هذا خطأ في ربط القاعدة ؟

أعتذر مره أخرى

تم تعديل هذه المشاركة بواسطة Toooffa في 10 مايو 2010 في 12:19

#6

المشكلة ليست بالاتصال لانك في الكود قمت بفتح الاتصال ياستخدام الدالة ( Open) ولم يظهر الخطأ عند هذه النقطة لكن مايجب عليك فعله هو وضع شرط إذا كان هنالك بيانات في القاريء (Reader) او لا كما هو موضح في الاسفل

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace INFO
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OleDbConnection aConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Info.mdb");
            OleDbCommand aCommand = new OleDbCommand();

//First Thing is To open the connection
            aConnection.Open();
            aCommand.Connection = aConnection;
            aCommand.CommandType = CommandType.Text;
            aCommand.CommandText = "SELECT ID,Name,Phone FROM Information ORDER BY Name";
  OleDbDataReader aReader = aCommand.ExecuteReader();
//Check if there is data or not
if(aReader.Read()==true)
{    
      TextBox1.Text = MyReader["ID"].ToString();
            TextBox2.Text = MyReader.["Name"].ToString()
            TextBox3.Text = MyReader.["Phone"].ToString()

}
            aReader.Close();

            aConnection.Close();






        }
    }
}

جرب وإذا لم يعمل الكود فاخبرني مجددا

بالتوفيق ان شاء الله

#7

الكائن OLEdatareader هو كائن لقراءة البيانات من قاعدة البيانات ، و رسالة الخطأ التي ظهرت تعني أنه لم يقرأ بعد البيانات ، لذا أقترح عليك إستخدام هذا الكود :

while(areader.read())
{
TextBox1.Text = MyReader[ID].ToString()
TextBox2.Text = areader.[Name].ToString()
TextBox3.Text =areader.[Phone].ToString()


}
#8

أستاذي الفاضل Xhack

أشكرك جزيل الشكر على هذه الجهود الطيبة ،،

نعم تنفذ البرنامج بالشكل الصحيح ،، لكنه وضع بيانات لل ID رقم 4

فـ على أي أساس تم اختياره ؟

و هل يمكن تحديد ID معين لجلب بياناته ؟

275281217.png

#9

شكرا ً جزيلا ً لك أخي الفاضل " بهاء صلاح الدين فراج "

عندما نفذت هذا loop ،، أظهر لي بيانات ID رقم 6

فهل يمكن تحديد رقم ID الذي يتم عرض البيانات له ؟؟

أم يكون هناك شرط في If statment أو في While Loop ؟؟

879812991.png

#10

التيكست بوكسس لن تعرض لك سوى آخر قيمة من كل عمود ، أي أنك إذا نظرت إلى الجدول في قاعدة البيانات ستجد أن آخر id هو 6 . لأن في كل loop التكست بوكس يأخذ قيمة جديدة حتى ينتهي ال loop عند آخر صف في الجدول.

لتحديد id معين عليك إضافة الشرط إلى جملة الاستعلام

#11

كيف يتم تحديد رقم ID ؟

#12

جملة الاستعلام التي وضعتها أنت تقوم بجلب جميع IDs من الجدول و ليس id معين.اذا عليك إضافة شرط إلى جملة الاستعلام لتكون الجملة مثلا" كالآتي:

 aCommand.CommandText = "SELECT ID,Name,Phone FROM Information where id="+int.parse(textbox1.text)+"ORDER BY Name";

حيث سيقوم الاستعلام بجلب البيانات على أساس ان id تساوي قيمة textbox1.textثم تقوم بقراءة الكائن oledbdatareader بشكل طبيعي جدا" كما شرحت و شرح الأخوة .تحياتي لك

#13

عند الطبيق يظهر معي Error بالشكل التالي :

757617199.png

هل هذا الشرط في جملة الاستعلام مبني على أساس أنه يتم إدخال رقم ID في textbox1 و على اساسه يتم جلب البيانات ؟؟

ماذا لو أردت تحديد ID معين لجلب بياناته ؟ كيف يتم كتابة ذلك في جملة الاستعلام

تم تعديل هذه المشاركة بواسطة Toooffa في 11 مايو 2010 في 00:41

#14

قمت بوضع Reader قبل جمل textBox

فظهر لي هذا Error

324092035.png

وشكرا ً جزيلا ً على التعاون ..

#15

أرجو المساعدة ،، مشروعي متوقف على هذه النقطة

#16

السلام عليكم ..لتنفيذ عملية على قاعدة البيانات في الوضع المتصل يرجى مراعاة ترتيب هذه الخطوات:

1-إنشاء كائن oledbconnection يقوم بالاتصال بقاعدة البيانات.

2-إنشاء كائن oledbcommand ثم تمرر إلى هذا الكائن كائن الاتصال و جملة الإجراء أو الاستعلام

3-تحديد نوع oledbcommand هل هو text أمstored procedure

4--فتح الاتصال مع قاعدة البيانات

5-إنشاء كائن oledbdatareader إذا كانت العملية عبارة عن إستعلام و ليس تعديل أو حذف

6-قراءة قيم oledbdatareader أو تنفيذ oledbcommand إذا كانت العملية إضافة أو حذف أو تعديل

7-غلق الاتصال

أنت لم تراعي هذا الترتيب لذا حدثت هذه الأخطاء ، هذا بالنسبة للخطأ الأول.

أما (input string was not in correct format) فلديك خطأ إملائي. قم بتعديل الجملة إلى:

"select id,name,phone from information where id="+textbox1.text+" order by name"

#17

شكرا ً لك أخي الكريم على تعاونك

قمت بالحفاظ على الترتيب لكن لا زال الخطأ عند Reader

123324813.png

تم تعديل هذه المشاركة بواسطة Toooffa في 12 مايو 2010 في 18:56

#18
اقتباس

قمت بالحفاظ على الترتيب لكن لا زال الخطأ عند Reader

كلا بالطبع .. أنت لم تحافظ عى الترتيب ، رجاء راجع الخطوات جيدا" و قم بالبحث داخل المنتدى عن المواضيع التي تتحدث عن الوضعين المنفصل و المتصل

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