PDA

View Full Version : فراخوانی کوئری اکسس در سی شارپ



meysam_online2012
جمعه 20 دی 1392, 20:28 عصر
سلام خدمت همگی

این کوئریو توی اکسس نوشتم
SELECT id, word, trans, score, date_word, date_read
FROM Dic
WHERE (((book.word) Like "" & [@word] & "*"));
چطوری باید توی سی شارپ فراخوانیش کنم؟؟
ممنون

momimomi
جمعه 20 دی 1392, 20:39 عصر
بسم الله الرحمن الرحیم
توی اکسس از قسمت create query یه کوئری بساز و با کلیک راست و انتخاب گزینه sql view کدهای نمایش داده شده رو توی رشته مورد نظرت قرار بده.

meysam_online2012
جمعه 20 دی 1392, 20:45 عصر
ممنون دوست عزیز
من این کوئریو درست کردم توی اکسس هم جواب میده حالا میخوام بدونم چطوری ازش توی سی شارپ استفاده کنم

میخوام از textbox یه کلمه بگیرم و همه ستونهای که برابر اون کلمه هستنو نمایش بده
نمیدونم منظورمو رسوندم یا نه

forodo
جمعه 20 دی 1392, 21:14 عصر
سلام
منظورتون اینه که می خواید داخل محیط اکسس ورودی رو بگیره و این کوئری اجرا بشه یا داخل محیط ویژوال استودیو؟

meysam_online2012
جمعه 20 دی 1392, 22:06 عصر
سلام
منظورتون اینه که می خواید داخل محیط اکسس ورودی رو بگیره و این کوئری اجرا بشه یا داخل محیط ویژوال استودیو؟
سلام
داخل ویژوال استدیو

forodo
جمعه 20 دی 1392, 22:11 عصر
ابتدا این using رو باید بنویسید:

using System.Data.OleDb;


OleDbConnection objconnection =
new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\radman.mdb;Security Info=True;)";
OleDbDataAdapter objDataAdapter = new OleDbDataAdapter();
DataSet objDataSet = new DataSet();

objDataAdapter.SelectCommand = new OleDbCommand();
objDataAdapter.SelectCommand.Connection = objconnection;

objDataAdapter.SelectCommand.CommandText = @"SELECT id, word, trans, score, date_word, date_read
FROM Dic
WHERE book.word Like '%"+textbox1.Text+"%')";

objDataAdapter.SelectCommand.CommandType = CommandType.Text;

objconnection.Open();
objDataAdapter.Fill(objDataSet, "tblPersonal_tblComputerServisRequest");
objconnection.Close();

datagridview1.DataSource = objDataSet.Tables["tblPersonal_tblComputerServisRequest"];

momimomi
جمعه 20 دی 1392, 22:15 عصر
سلام
اینو برا شما درست کردم, ببین به دردت میخوره
115172

meysam_online2012
جمعه 20 دی 1392, 22:19 عصر
خیلی ممنون از راهنماییتون

اما من این کوئریو توی اکسس ایجاد کردم حالا میخوام اون کوئریو فراخوانی کنم ینی دیگه توی ویژوال استدیو دستور select ننویسم
بازم ممنون که وقت گذاشتین
مثه فراخوانیه پروسیجر اس کیو ال

meysam_online2012
شنبه 21 دی 1392, 19:09 عصر
از دوستان کسی نمیتونه راهنمایی کنه؟

ممنون میشم این کدو لازم دارم

khokhan
شنبه 21 دی 1392, 19:21 عصر
از دوستان کسی نمیتونه راهنمایی کنه؟

ممنون میشم این کدو لازم دارم
.................................................. ..................................////

public void ExecuteAccessQuery()
{

OleDbCommand cmd = new OleDbCommand();
string sConStr = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data " + "Source=G:\\db1.mdb";
OleDbConnection conn = null;

conn = new OleDbConnection(sConStr);

cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "queryname";

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

}

meysam_online2012
شنبه 21 دی 1392, 19:30 عصر
.................................................. ..................................////

public void ExecuteAccessQuery()
{

OleDbCommand cmd = new OleDbCommand();
string sConStr = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data " + "Source=G:\\db1.mdb";
OleDbConnection conn = null;

conn = new OleDbConnection(sConStr);

cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "queryname";

conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

}

خیلی ممنونم از راهنماییت دوست عزیز

meysam_online2012
شنبه 21 دی 1392, 19:49 عصر
public UpdateResult Update(Dictionary CurrentDictionary)
{
Command = new OleDbCommand("sp_Dictionary_Update", Connection);
Command.CommandType = CommandType.StoredProcedure;


//OleDbCommand Command = new OleDbCommand();
//Command.Connection = Connection;
//Command.CommandType = CommandType.StoredProcedure;
//Command.CommandText = "sp_Dictionary_Update";

Command.Parameters.AddWithValue("@id", CurrentDictionary.ID);
Command.Parameters.AddWithValue("@word", CurrentDictionary.Word);
Command.Parameters.AddWithValue("@trans", CurrentDictionary.Translate);
Command.Parameters.AddWithValue("@score", CurrentDictionary.Score);
Command.Parameters.AddWithValue("@date_word", CurrentDictionary.DateWord);
Command.Parameters.AddWithValue("@date_read", CurrentDictionary.DateRead);


Connection.Open();
int rowaffect=Command.ExecuteNonQuery();
Connection.Close();

if (rowaffect ==0)
return UpdateResult.Failed;
else
return UpdateResult.succed;
}


ممنون میشم میشه ببینی این کد چرا جواب نمیده
اینم کوئری که توی اکسس نوشتم

UPDATE book SET word = [@word], trans = [@trans], score = [@score], date_word = [@date_word], date_read = [@date_read]
WHERE id=[@id];

khokhan
یک شنبه 22 دی 1392, 15:37 عصر
ممنون میشم میشه ببینی این کد چرا جواب نمیده
اینم کوئری که توی اکسس نوشتم

UPDATE book SET word = [@word], trans = [@trans], score = [@score], date_word = [@date_word], date_read = [@date_read]
WHERE id=[@id]; دیتابیس اکسس به پارامترها روی خوش نشون نمی ده پس بهتره از طریق Friendly practices کوئری داخل دیتابیس رو به این نحو تغییر بدین:

UPDATE book SET Quantity = [_quantity?], ShippingAddress = [_shippingAddress?]
WHERE OrderId=[_orderId?];
بعد در سمت برنامه به جای استفاده از StoredProcedure به عنوان نوع کامنت CommandType از text استفاده کنید ولی به جای نوشتن کوئری( Execute+نام کوئری داخل دیتابیس) رو رو قرار بدین:

OleDbCommand ocm = new OleDbCommand("Execute Query1", oc);
ocm.CommandType = CommandType.Text;
و ادامه به این شکل ......

OleDbConnection oc = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;" + @"data source=" + Application.StartupPath + "/dbs.accdb");
OleDbCommand ocm = new OleDbCommand("Execute Query1", oc);
ocm.CommandType = CommandType.Text;

ocm.Parameters.Add("_quantity", OleDbType.Integer);
ocm.Parameters["_quantity"].Direction = ParameterDirection.Input;
ocm.Parameters["_quantity"].Value = textBox2.Text;

ocm.Parameters.Add("_shippingAddress", OleDbType.VarChar);
ocm.Parameters["_shippingAddress"].Direction = ParameterDirection.Input;
ocm.Parameters["_shippingAddress"].Value = textBox3.Text;

ocm.Parameters.Add("_orderId", OleDbType.Integer);
ocm.Parameters["_orderId"].Direction = ParameterDirection.Input;
ocm.Parameters["_orderId"].Value = textBox1.Text;

oc.Open();
ocm.ExecuteNonQuery();
oc.Close();

meysam_online2012
یک شنبه 22 دی 1392, 22:29 عصر
دیتابیس اکسس به پارامترها روی خوش نشون نمی ده پس بهتره از طریق Friendly practices کوئری داخل دیتابیس رو به این نحو تغییر بدین:

UPDATE book SET Quantity = [_quantity?], ShippingAddress = [_shippingAddress?]
WHERE OrderId=[_orderId?];
بعد در سمت برنامه به جای استفاده از StoredProcedure به عنوان نوع کامنت CommandType از text استفاده کنید ولی به جای نوشتن کوئری( Execute+نام کوئری داخل دیتابیس) رو رو قرار بدین:

OleDbCommand ocm = new OleDbCommand("Execute Query1", oc);
ocm.CommandType = CommandType.Text;
و ادامه به این شکل ......

OleDbConnection oc = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;" + @"data source=" + Application.StartupPath + "/dbs.accdb");
OleDbCommand ocm = new OleDbCommand("Execute Query1", oc);

ocm.CommandType = CommandType.Text;

ocm.Parameters.Add("_quantity", OleDbType.Integer);
ocm.Parameters["_quantity"].Direction = ParameterDirection.Input;
ocm.Parameters["_quantity"].Value = textBox2.Text;

ocm.Parameters.Add("_shippingAddress", OleDbType.VarChar);
ocm.Parameters["_shippingAddress"].Direction = ParameterDirection.Input;
ocm.Parameters["_shippingAddress"].Value = textBox3.Text;

ocm.Parameters.Add("_orderId", OleDbType.Integer);
ocm.Parameters["_orderId"].Direction = ParameterDirection.Input;
ocm.Parameters["_orderId"].Value = textBox1.Text;

oc.Open();
ocm.ExecuteNonQuery();
oc.Close();


خیلی ازت ممنونم دوست عزیز لطف کردی

meysam_online2012
یک شنبه 22 دی 1392, 23:32 عصر
مهندس ممنون بابت راهنمایی.برای update و delete جواب داد ولی هنوز دستور select جواب نمیده ممنونت میشم اگه تو این موردم منو راهنمایی کنی

این کدیه که خودم نوشتم

public DictionarySet Select(Dictionary CurrentDictionary)
{
Command = new OleDbCommand("Execute sp_Dictionary_Select", Connection);
DataAdapter = new OleDbDataAdapter(Command);
DataAdapter.SelectCommand.CommandType = CommandType.Text;

Command.Parameters.Add("_word", OleDbType.VarChar);
Command.Parameters["_word"].Direction = ParameterDirection.Input;
Command.Parameters["_word"].Value = CurrentDictionary.Word;

DictionarySet TempDictionarySet = new DictionarySet();
DataAdapter.Fill(TempDictionarySet.DictionaryTable );
return TempDictionarySet;
}

khokhan
دوشنبه 23 دی 1392, 00:31 صبح
مهندس ممنون بابت راهنمایی.برای update و delete جواب داد ولی هنوز دستور select جواب نمیده ممنونت میشم اگه تو این موردم منو راهنمایی کنی

این کدیه که خودم نوشتم

public DictionarySet Select(Dictionary CurrentDictionary)
{
Command = new OleDbCommand("Execute sp_Dictionary_Select", Connection);
DataAdapter = new OleDbDataAdapter(Command);
DataAdapter.SelectCommand.CommandType = CommandType.Text;

Command.Parameters.Add("_word", OleDbType.VarChar);
Command.Parameters["_word"].Direction = ParameterDirection.Input;
Command.Parameters["_word"].Value = CurrentDictionary.Word;

DictionarySet TempDictionarySet = new DictionarySet();
DataAdapter.Fill(TempDictionarySet.DictionaryTable );
return TempDictionarySet;
}

همون دستورات مربوط به آپدیت رو یه کمی تغییر بدی درست می شه اینطوری:
کوئری داخل دیتابیس :

SELECT book.[OrderId], book.[Quantity], book.[ShippingAddress]
FROM book;

این هم دستورات واکشی اطلاعات از طریق همون کوئری :


private void button2_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();

OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;" + @"data source=" + Application.StartupPath + "/dbs.accdb");

OleDbCommand cmd = new OleDbCommand("Execute getdata", con);

cmd.CommandType = CommandType.Text;

//cmd.Parameters.Add("@id_number", SqlDbType.VarChar).Value = "%" + id_number + "%";

OleDbDataAdapter da = new OleDbDataAdapter(cmd);

da.Fill(dt);

dataGridView1.DataSource = dt;
}

meysam_online2012
سه شنبه 24 دی 1392, 13:48 عصر
همون دستورات مربوط به آپدیت رو یه کمی تغییر بدی درست می شه اینطوری:
کوئری داخل دیتابیس :

SELECT book.[OrderId], book.[Quantity], book.[ShippingAddress]
FROM book;

این هم دستورات واکشی اطلاعات از طریق همون کوئری :


private void button2_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();

OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;" + @"data source=" + Application.StartupPath + "/dbs.accdb");

OleDbCommand cmd = new OleDbCommand("Execute getdata", con);

cmd.CommandType = CommandType.Text;

//cmd.Parameters.Add("@id_number", SqlDbType.VarChar).Value = "%" + id_number + "%";

OleDbDataAdapter da = new OleDbDataAdapter(cmd);

da.Fill(dt);

dataGridView1.DataSource = dt;
}


مهندس ازت خیلی ممنونم بابت راهنمایی که کردی
ی سوال دیگه داشتم از خدمتت
من وقتی برای select شرط میذارم دیگه select اجرا نمیشه دلیلشو میشه بگی بازم ازت ممنونم
این کوئریه که من نوشتم

SELECT book.[id], book.[word], book.[trans], book.[score], book.[date_word], book.[date_read]
FROM book

WHERE (((book.word) Like "" & [_word?] & "*"));

rohollah77
سه شنبه 23 تیر 1394, 10:18 صبح
سلام
مرسی از فایلی که گذاشته بودی.خیلی کمکم کرد.
یه سوال : این فایلت قابلیت ذخیره سازی هم میتونه داشته باشه؟
یعنی میخوام تو همون data grid view تغیراتی رو بدم بعد وقتی برنامه رو میبندم اون تغییرات پاک نشه.
اگه میشه سریعتر جواب بده
ممنون