منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : مشكلة في جملة الاستعلام
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته
عندي مشكلة في جملة الاستعلام
كود :
 Public Sub Check_Login(ByVal User_Name As String, ByVal Pass As String)
       dtCheck_Login.Clear()
       Dim cmd As New OleDbCommand("select * From UsersTable where
       User_Name=@User_Name and Pass=@Pass", connSQL)
       cmd.Parameters.Add("User_Name", OleDbType.VarChar).Value = User_Name
       cmd.Parameters.Add("Pass", OleDbType.VarChar).Value = Pass
       If connSQL.State = 1 Then connSQL.Close()
       connSQL.Open()
       dtCheck_Login.Load(cmd.ExecuteReader)
       connSQL.Close()
       cmd = Nothing
   End Sub

بتظهر رسالة الخطأ التاليه
@User_Name = ?????

مثال
Dim result As Decimal = total - Convert.ToDecimal(inputValue)

command.Parameters.AddWithValue("@result", result)

Login ?

كود :
Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
       Dim username As String = txtUsername.Text
       Dim password As String = txtPassword.Text
       Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=yourdatabase.accdb;"
       Dim query As String = "SELECT COUNT(*) FROM Users WHERE Username = @username AND Password = @password"

       Using connection As New OleDbConnection(connectionString)
           Using command As New OleDbCommand(query, connection)
               command.Parameters.AddWithValue("@username", username)
               command.Parameters.AddWithValue("@password", password)

               connection.Open()
               Dim result As Integer = Convert.ToInt32(command.ExecuteScalar())

               If result > 0 Then
                   MessageBox.Show("Login successful!")
               Else
                   MessageBox.Show("Invalid username or password.")
               End If
           End Using
       End Using
   End Sub
بارك الله فيك اخي [b]rdxdz[/b]
الكود كان شغال كويس ولكن المشكله ظهرت لما غيرت من sqlCommand الي oledbCommand
ارجو التعديل علي الكود نفسه مع العلم ان قاعدة البيانات سيكوال وليس اكسيس
وبارك الله فيكم جميعا
كود :
Imports System.Data.SqlClient

Public Class LoginForm
   Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
       Dim username As String = txtUsername.Text
       Dim password As String = txtPassword.Text
       Dim connectionString As String = "YourConnectionStringHere"
       
       Using connection As New SqlConnection(connectionString)
           Dim command As New SqlCommand("SELECT COUNT(*) FROM Users WHERE Username = @username AND Password = @password", connection)
           command.Parameters.AddWithValue("@username", username)
           command.Parameters.AddWithValue("@password", password)
           
           connection.Open()
           Dim result As Integer = Convert.ToInt32(command.ExecuteScalar())
           
           If result > 0 Then
               MessageBox.Show("Login successful!")
           Else
               MessageBox.Show("Invalid username or password.")
           End If
       End Using
   End Sub
End Class
مشكلة المتغير في الاستعلام تظهر بالعادة في الـ ODBC   وليس OLedb

فإن كنت تنوي الاتصال بقاعدة بيانات من خلال الـ ODBC  
كانت توجد ملاحظة من بعض الخبراء،  هي أن تجرب أن تضع مكان البارامتر اشارة الاستفهام

يعني بدل الـ  @username    ضع اشارة الاستفهام      ؟
وبدل @Pass   ضع اشارة الاستفهام     ؟

أما الكود سيقوم بالتعرف على كل متغير في مكانه بحسب الترتيب

؟  الأولى تعني عنده الـ @username
؟  الثانية ستعني عنده الـ @Pass
لأنك في كود الاستعلام وضعت هذا الترتيب

المهم الترتيب ..
شكرا اخي Taha Okla 
وبارك الله فيك علي هذه المعلومات