PDA

View Full Version : does not contain a definition for 'Parameters'



hsn_abieteh
یک شنبه 10 بهمن 1395, 23:30 عصر
سلام خدمت دوستان عزیز

برنامه من خوب کار میکرد. حالا به یک دلیلی که نمی دونم چی هست جدیدا موقع کامپایل این خطا رو میده

ممنون میشم کمک بفرمایید باید چکار کنم تا ازین خطا فرار کنم. کلافه شدم. البته دلیلش علم پایینم نسبت به C#‎‎‎‎‎‎ هست.
Error 1 '_program.OleDbCommand' does not contain a definition for 'Parameters' and no extension method 'Parameters'
accepting a first argument of type '_program.OleDbCommand' could be found
(are you missing a using directive or an assembly reference?) D:\program\\FRMkargah_edit.cs 779 31 program

روی خطا که دوبار کلیک می کنم میاد اینجا. مشکل روی متد parameter در selectcommand هست. قبلا این متد رو داشت ولی الان نمی دونم چرا این متد رو نمیشناسه. خواهشا کمک کنید

DataSet ds = new DataSet();
OleDbDataAdapter adp = new OleDbDataAdapter();
adp.SelectCommand = new OleDbCommand();
adp.SelectCommand.Connection = oleDbConnection1;
adp.SelectCommand.CommandText = "select * from kargah where keyy=@0 or sal=@1";
adp.SelectCommand.Parameters.AddWithValue("@0", label36.Text);
adp.SelectCommand.Parameters.AddWithValue("@1", textBox1.Text);
adp.Fill(ds, "t1");
DataTable dt = new DataTable();
dt = ds.Tables["t1"];

ژیار رحیمی
دوشنبه 11 بهمن 1395, 14:31 عصر
نام پارامتر ها رو اصولی نام گزار کن @1 یا @0 ، در سمت Access هم اینکارو انجام بده .بعد نوع داده ای ارسالی از برنامه به دیتابیس هم چک کن همخوان داشته باشد. موفق باشی

hsn_abieteh
دوشنبه 11 بهمن 1395, 15:35 عصر
آقای رحیمی مورد دیگه ای مد نظرتون نیست؟ مشکل حل نشد

محمد آشتیانی
دوشنبه 11 بهمن 1395, 17:05 عصر
سلام
این یک مقدار غیر منطقیه ، امکانش هست پروژه رو اینجا قرار بدید؟ یا حداقل کل کدهای فرم FRMkargah_edit.cs رو قرار بدید.


ویرایش:
مشکل اینجاست که چرا در متن خطا این عبارت رو نوشته program.OleDbCommand_
در صورتی که نهایتا باید مینوشت OleDbCommand

hsn_abieteh
دوشنبه 11 بهمن 1395, 17:34 عصر
بفرمایید:

من یک پروژه جدید درست می کنم این مشکل وجود نداره ولی تو پروژه خودم متاسفانه تو همه فرم هام روی متد پارامتر خطا میده


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

namespace _program
{

public partial class kargah_edit : Form
{

public kargah_edit()
{
InitializeComponent();
}

private void button3_Click(object sender, EventArgs e)
{
}

private void button1_Click(object sender, EventArgs e)
{
oleDbCommand1.Parameters.Clear();
oleDbCommand1.CommandText = "update narmafzar set SAL=@1,OSTAN=@2,GOSTARE=@3 where keyy=@0";

oleDbCommand1.Parameters.AddWithValue("@1", textBox1.Text);
oleDbCommand1.Parameters.AddWithValue("@2", comboBox2.Text);
oleDbCommand1.Parameters.AddWithValue("@3", comboBox1.Text);
oleDbCommand1.Parameters.AddWithValue("@0", label12.Text);

oleDbConnection1.Open();
oleDbCommand1.ExecuteNonQuery();
oleDbConnection1.Close();
MessageBox.Show("عملیات ویرایش با موفقیت انجام شد");

DataSet ds = new DataSet();
OleDbDataAdapter adp = new OleDbDataAdapter();
adp.SelectCommand = new OleDbCommand();
adp.SelectCommand.Connection = oleDbConnection1;
adp.SelectCommand.CommandText = "select * from narmafzar";
adp.Fill(ds, "t1");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "t1";
}

private void kargah_edit_Load(object sender, EventArgs e)
{
textBox1.Text = axIRShamsiDate1.ShowDateModel1;
DataSet ds = new DataSet();
OleDbDataAdapter adp = new OleDbDataAdapter();
adp.SelectCommand = new OleDbCommand();
adp.SelectCommand.Connection = oleDbConnection1;
adp.SelectCommand.CommandText = "select * from narmafzar";
adp.Fill(ds, "t1");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "t1";

DataTable dt = new DataTable();
dt = ds.Tables["t1"];
label12.Text = dt.Rows[0]["keyy"].ToString();

}

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{

}

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
label12.Text = dataGridView1.SelectedCells[0].Value.ToString();
textBox1.Text = dataGridView1.SelectedCells[1].Value.ToString();
comboBox2.Text = dataGridView1.SelectedCells[2].Value.ToString();
comboBox6.Text = dataGridView1.SelectedCells[3].Value.ToString();
}

private void button2_Click(object sender, EventArgs e)
{
oleDbCommand1.Parameters.Clear();
oleDbCommand1.CommandText = "delete * from narmafzar where keyy=@0";
oleDbCommand1.Parameters.AddWithValue("@0", label12.Text);
oleDbConnection1.Open();
oleDbCommand1.ExecuteNonQuery();
oleDbConnection1.Close();

MessageBox.Show("عملیات حذف با موفقیت انجام شد", "حذف");

DataSet ds = new DataSet();
OleDbDataAdapter adp = new OleDbDataAdapter();
adp.SelectCommand = new OleDbCommand();
adp.SelectCommand.Connection = oleDbConnection1;
adp.SelectCommand.CommandText = "select * from narmafzar";
adp.Fill(ds, "t1");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "t1";
}

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
label12.Text = dataGridView1.SelectedCells[0].Value.ToString();
textBox1.Text = dataGridView1.SelectedCells[1].Value.ToString();
comboBox2.Text = dataGridView1.SelectedCells[2].Value.ToString();
comboBox6.Text = dataGridView1.SelectedCells[3].Value.ToString();
}

private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
label12.Text = dataGridView1.SelectedCells[0].Value.ToString();
textBox1.Text = dataGridView1.SelectedCells[1].Value.ToString();
comboBox2.Text = dataGridView1.SelectedCells[2].Value.ToString();
comboBox6.Text = dataGridView1.SelectedCells[3].Value.ToString();
}

private void kargah_edit_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
e.Handled = true;
SendKeys.Send("{TAB}");

if (textBox1.TextLength < 10)
{
MessageBox.Show("فرمت تاریخ را صحیح وارد کنید");
}
}
}

private void button4_Click(object sender, EventArgs e)
{
//ijad keyy jadid
dateTimePicker1.ResetText();
string str = axIRShamsiDate1.ShowDateModel1.ToString();
string str1 = str.Substring(0, 4); str1 = str1 + str.Substring(5, 2); str1 = str1 + str.Substring(8, 2);
string str2 = dateTimePicker1.ToString();
string str3 = str2.Substring(55, 2); str3 = str3 + str2.Substring(58, 2); str3 = str3 + str2.Substring(61, 2);
label12.Text = str1 + str3;
////////////////

DataSet ds = new DataSet();
OleDbDataAdapter adp = new OleDbDataAdapter();
adp.SelectCommand = new OleDbCommand();
adp.SelectCommand.Connection = oleDbConnection1;
adp.SelectCommand.CommandText = "select * from narmafzar where keyy=@0 or sal=@1";
adp.SelectCommand.Parameters.AddWithValue("@0", label12.Text);
adp.SelectCommand.Parameters.AddWithValue("@1", textBox1.Text);
adp.Fill(ds, "t1");
DataTable dt = new DataTable();
dt = ds.Tables["t1"];
if (dt.Rows.Count == 0)
{
oleDbCommand1.Parameters.Clear();
oleDbCommand1.CommandText = "insert into narmafzar(keyy,SAL,OSTAN,GOSTARE)values(@0,@1,@2,@ 3)";

oleDbCommand1.Parameters.AddWithValue("@0", label12.Text);
oleDbCommand1.Parameters.AddWithValue("@1", textBox1.Text);
oleDbCommand1.Parameters.AddWithValue("@2", comboBox2.Text);
oleDbCommand1.Parameters.AddWithValue("@3", comboBox1.Text);

oleDbConnection1.Open();
oleDbCommand1.ExecuteNonQuery();
oleDbConnection1.Close();
MessageBox.Show("ثبت شد");

DataSet dss = new DataSet();
OleDbDataAdapter adpp = new OleDbDataAdapter();
adpp.SelectCommand = new OleDbCommand();
adpp.SelectCommand.Connection = oleDbConnection1;
adpp.SelectCommand.CommandText = "select * from narmafzar";
adpp.Fill(dss, "t1");
dataGridView1.DataSource = dss;
dataGridView1.DataMember = "t1";
}
else MessageBox.Show("در این تاریخ قبلا یک سابقه ثبت کرده اید");
}
}
}

hsn_abieteh
دوشنبه 11 بهمن 1395, 20:52 عصر
msdn اینو میگه آقای اشتیانی

Compiler Error CS1061

'type' does not contain a definition for 'member' and no extension method 'name' accepting a first argument of type 'type' could be found (are you missing a using directive or an assembly reference?).
This error occurs when you try to call a method or access a class member that does not exist.

Example


The following example generates CS1061 because TestClass1 does not have a DisplaySomething method. It does have a method that is called WriteSomething. Perhaps that is what the author of this source code meant to write.





C#

Copy

// cs1061.cs
public class TestClass1
{
// TestClass1 has one method, called WriteSomething.
public void WriteSomething(string s)
{
System.Console.WriteLine(s);
}
}

public class TestClass2
{
// TestClass2 has one method, called DisplaySomething.
public void DisplaySomething(string s)
{
System.Console.WriteLine(s);
}
}

public class TestTheClasses
{
public static void Main()
{
TestClass1 tc1 = new TestClass1();
TestClass2 tc2 = new TestClass2();
// The following call fails because TestClass1 does not have
// a method called DisplaySomething.
tc1.DisplaySomething("Hello"); // CS1061

// To correct the error, change the method call to either
// tc1.WriteSomething or tc2.DisplaySomething.
tc1.WriteSomething("Hello from TestClass1");
tc2.DisplaySomething("Hello from TestClass2");
}
}

ژیار رحیمی
سه شنبه 12 بهمن 1395, 02:23 صبح
مشکل از کد نویسی شما نیست .OleDbParameterCollection.AddWithValue در Ado.net تا ورژن 4 .Net ساپورت میشود احتمالا شما ورژن پروژه رو ناخواسته به ورژن بالاتر از 4 تغییر دادی که باعث ایجاد خطای کامپایلری شده است.
https://msdn.microsoft.com/en-us/library/system.data.oledb.oledbparametercollection.addwith value(v=vs.100).aspx

hsn_abieteh
سه شنبه 12 بهمن 1395, 15:58 عصر
ورژن .net freamwork هم همون 4 هست. کاش دلفی رو کنار نمی ذاشتم:ناراحت:

hsn_abieteh
سه شنبه 12 بهمن 1395, 20:30 عصر
یه بنده خدایی که خیلی ادعاش زیاد هست بردم پیشش نتونست درست کنه دست آخر هم میگه مشکل از ورژن visual studio 2012 هست. میگه 2015 نصب کن

ولی اگه مشکل ازین بود پس چرا تو یک پروژه جدید این مشکل وجود نداره؟

متاسفم برا مایکروسافت همش تقصیر همین مایکروسافته با وان برنامه هاش . . .

hsn_abieteh
چهارشنبه 13 بهمن 1395, 18:34 عصر
سلام دوستان عزیز
چند تا شرکت برنامه نویسی رفتم که مجرب بودن ولی نتونستن این مشکل رو حل کن.

ولی گره کار به دست مدیر عزیز انجمن آقای آشتیانی باز شد.

مشکل نه ورژن VISUAL STUDIO بود و نه مورد حاد دیگه ای

بنده تو یک صفحه نام دو تا کلاس هم نام تعریف کرده بودم که باعث بروز این مشکل شده بود و برخی متدها در OLEDB شناخته نمیشد.

ممنونم خدا خیرتون بده آقای مهندس آشتیانی:قلب: