PDA

View Full Version : تشخیص یک فیلد خاص وقتی که مقدار فیلد دیگر مشخص باشد



nasimnastaran
یک شنبه 10 شهریور 1392, 12:16 عصر
سلام
من توی جدول 5 فیلد دارم به این صورت :
MyId,FName,Lname,Year,Code
می خواهم وقتی سال توی این جدول که از TextForm مقدارش معلومه ، تشخیص بده آیا مقدار کد آیا تکرار شده است یا خیر :

try
{
OleDbConnection ocn = new OleDbConnection(ConnectionString);
OleDbDataAdapter oda = new OleDbDataAdapter(@"SELECT MyId,FName,Lname,Year=@p1,Code,FROM myTable WHERE Code=@p2", ocn);
oda.SelectCommand.Parameters.Clear();
oda.SelectCommand.Parameters.AddWithValue("@p1",txtYear.Text);
oda.SelectCommand.Parameters.AddWithValue("@p2",txtCode.Text);
DataTable dt = new DataTable();
dt.Clear();
oda.Fill(dt);
if (dt.Rows.Count > 0)
{
MessageBox.Show("این کد قبلاً استفاده شده است");
txtCode.Focus();
}
else
{
...
ولی فوق خطا می ده
با تشکر

hamid_hr
یک شنبه 10 شهریور 1392, 12:19 عصر
SELECT MyId, FName, Lname, Year, Code FROM myTable WHERE Code=@p2, Year=@p1

nasimnastaran
یک شنبه 10 شهریور 1392, 12:29 عصر
ضمن تشکر از پاسخ تان ، عرض کنم ، من می خواهم با داشتن مقدار سال مثلاً در تمام رکورد هایی که مقدار سال آنها 1385 است ، مقادر کد را تشخیص بده که آیا مقدار کد های داده شده تکراری هست یا خیر ؟
ممنون از راهنمایی تان

مهرداد صفا
دوشنبه 11 شهریور 1392, 12:58 عصر
سلام
من توی جدول 5 فیلد دارم به این صورت :
MyId,FName,Lname,Year,Code
می خواهم وقتی سال توی این جدول که از TextForm مقدارش معلومه ، تشخیص بده آیا مقدار کد آیا تکرار شده است یا خیر :

try
{
OleDbConnection ocn = new OleDbConnection(ConnectionString);
OleDbDataAdapter oda = new OleDbDataAdapter(@"SELECT MyId,FName,Lname,Year=@p1,Code,FROM myTable WHERE Code=@p2", ocn);
oda.SelectCommand.Parameters.Clear();
oda.SelectCommand.Parameters.AddWithValue("@p1",txtYear.Text);
oda.SelectCommand.Parameters.AddWithValue("@p2",txtCode.Text);
DataTable dt = new DataTable();
dt.Clear();
oda.Fill(dt);
if (dt.Rows.Count > 0)
{
MessageBox.Show("این کد قبلاً استفاده شده است");
txtCode.Focus();
}
else
{
...
ولی فوق خطا می ده
با تشکر



با سلام.
1- خط سوم "," بعد از Code اضافه است.
2- مقدار year باید در where چک شود که آیا برابر @p1 هست یا نه؟
3- نیازی به select کردن تمام فیلدها ندارید.
4- از Count (http://technet.microsoft.com/en-us/library/ms175997.aspx) استفاده کنید:


SELECT COUNT(MyID) FROM table_name WHERE year=@p1 and code=@p2
و یا تقریبا به این صورت:


if(exists(select MyID from Table_name where year=@p1 and code=@p2)
select 1;
else
select 0;