1 ضمیمه
گرفتن فیلدهای پر و فیلتر کردن فیلدهای خالی
با سلام دوستان
من داخل جدول طبق تصویر زیر
چندتا فیلد دارم که تعدادی از این فیلدها در بعضی سطرها مقدار دارند
و بعضی دیگر خالی هستند.
من میخوام کل این فیلدهایی که مقدار دارند را select کنم
مشکل اینه زمان چاپ مقدار های خالی هم همراه فیلدهای مقدار دارند select می شود
و گزارشم را خراب می کنند
می خوام راهنماییم کنید
چطوری فقط فیلدهای مقدار دار رو دریافت کنم
ضمیمه 154828
از این select که استفاده می کنم هیچ چیزی انتخاب نمی شود
adp.SelectCommand.CommandText = "SELECT * FROM QueryExam WHERE CodeExam = '" + CodeExam + "' AND [Question4Gozineh] IS NOT NULL AND [NumFill] IS NOT NULL";
ممنون میشم راهنماییم کنی
نقل قول: گرفتن فیلدهای پر و فیلتر کردن فیلدهای خالی
سلام و روز خوش
کوئری ظاهرش درسته هرچند که بهتره پارامتر تعریف کنین.
یکی مقدار اون codeexam رو چک کنین، و یکی این که اون دو فیلد دیگه حتما null باشن. شاید مقدارشون white space باشه.
نقل قول: گرفتن فیلدهای پر و فیلتر کردن فیلدهای خالی
برای جلوگیری از فیلدهای خالی و دریافت فقط فیلدهایی که مقدار دارند ، میتوانید از عبارت WHERE با استفاده از عملگر IS NOT NULL استفاده کنید. این عبارت به شما امکان میدهد فقط سطرهایی را که مقدار دارند را انتخاب کنید. بعنوان مثال:
SELECT column1, column2, column3
FROM table_name
WHERE column1 IS NOT NULL AND column2 IS NOT NULL AND column3 IS NOT NULL;
ولی با توجه به کدی که ارائه دادید، برای اطمینان از اجرای صحیح کوئری، طبق فرمایش استاد در پست قبلی میتوانید از از پروپرتیهای SqlParameter استفاده کنید. :
adp.SelectCommand.CommandText = "SELECT * FROM QueryExam WHERE CodeExam = @CodeExam AND [Question4Gozineh] IS NOT NULL AND [NumFill] IS NOT NULL";
adp.SelectCommand.Parameters.AddWithValue("@CodeEx am", CodeExam);
در این کد، از پارامتر `@CodeExam` برای ارسال مقدار متغیر `CodeExam` به کوئری استفاده شده است.
نقل قول: گرفتن فیلدهای پر و فیلتر کردن فیلدهای خالی
نقل قول:
نوشته شده توسط
پرستو پارسایی
برای جلوگیری از فیلدهای خالی و دریافت فقط فیلدهایی که مقدار دارند ، میتوانید از عبارت WHERE با استفاده از عملگر IS NOT NULL استفاده کنید. این عبارت به شما امکان میدهد فقط سطرهایی را که مقدار دارند را انتخاب کنید. بعنوان مثال:
SELECT column1, column2, column3
FROM table_name
WHERE column1 IS NOT NULL AND column2 IS NOT NULL AND column3 IS NOT NULL;
ولی با توجه به کدی که ارائه دادید، برای اطمینان از اجرای صحیح کوئری، طبق فرمایش استاد در پست قبلی میتوانید از از پروپرتیهای SqlParameter استفاده کنید. :
adp.SelectCommand.CommandText = "SELECT * FROM QueryExam WHERE CodeExam = @CodeExam AND [Question4Gozineh] IS NOT NULL AND [NumFill] IS NOT NULL";
adp.SelectCommand.Parameters.AddWithValue("@CodeEx am", CodeExam);
سلام دوست عزیز وقت بخیر تو این حالت هیچ سطری را Select نمیکنه
اگر بینشون OR بذارم هم هیچ سطریو نمیگیره
در این کد، از پارامتر `@CodeExam` برای ارسال مقدار متغیر `CodeExam` به کوئری استفاده شده است.
ممنون میشم کمکم کنی
نقل قول: گرفتن فیلدهای پر و فیلتر کردن فیلدهای خالی
اگر این کد هیچ سطری را انتخاب نمیکند، ممکن است دلیل آن این باشد که شرط `CodeExam = @CodeExam` در جدول `QueryExam` هیچ رکوردی را برآورده نمیکند. لطفاً از درستی مقدار `CodeExam` که به عنوان پارامتر استفاده شده است، مطمئن شوید. همچنین، مطمئن شوید که در جدول `QueryExam` فیلدهای `Question4Gozineh` و `NumFill` دارای مقادیر غیر NULL هستند.
و یا اینگونه بررسی کنید
using (SqlCommand command = new SqlCommand("SELECT * FROM QueryExam WHERE CodeExam = @CodeExam AND [Question4Gozineh] IS NOT NULL AND [NumFill] IS NOT NULL", connection))
{
command.Parameters.Add("@CodeExam", SqlDbType.VarChar).Value = CodeExam;
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
{
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
// انجام عملیات مورد نیاز با دادههای دریافت شده
}
}
نقل قول: گرفتن فیلدهای پر و فیلتر کردن فیلدهای خالی
نقل قول:
نوشته شده توسط
پرستو پارسایی
اگر این کد هیچ سطری را انتخاب نمیکند، ممکن است دلیل آن این باشد که شرط `CodeExam = @CodeExam` در جدول `QueryExam` هیچ رکوردی را برآورده نمیکند. لطفاً از درستی مقدار `CodeExam` که به عنوان پارامتر استفاده شده است، مطمئن شوید. همچنین، مطمئن شوید که در جدول `QueryExam` فیلدهای `Question4Gozineh` و `NumFill` دارای مقادیر غیر NULL هستند.
و یا اینگونه بررسی کنید
using (SqlCommand command = new SqlCommand("SELECT * FROM QueryExam WHERE CodeExam = @CodeExam AND [Question4Gozineh] IS NOT NULL AND [NumFill] IS NOT NULL", connection))
{
command.Parameters.Add("@CodeExam", SqlDbType.VarChar).Value = CodeExam;
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
{
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
// انجام عملیات مورد نیاز با دادههای دریافت شده
}
}
من اطلاعات ثبت شده در جدول دارم و وقتی از شرطی استفاده می کنم که کل سطر های جدول را برگرداند
سطرهای دارای فیلد پر و فیلد خالی را بر می گرداند
پس از وجود مقادیر غیر خالی مطمئن هستم
اما این که من فقط مقادیر غیر خالی را نیاز دارم و در هر صورت هر کدی می نویسم یا هیچ سطری را بر نمی گرداند
یا این که سطرهای دارای فیلد با مقادیر خالی و مقادیر پرا را با هم ارسال می کند. دقیقاً مثل عکس جدولم
نقل قول: گرفتن فیلدهای پر و فیلتر کردن فیلدهای خالی
نقل قول:
نوشته شده توسط
managment-barnamenevis
با سلام دوستان
من داخل جدول طبق تصویر زیر
چندتا فیلد دارم که تعدادی از این فیلدها در بعضی سطرها مقدار دارند
و بعضی دیگر خالی هستند.
من میخوام کل این فیلدهایی که مقدار دارند را select کنم
مشکل اینه زمان چاپ مقدار های خالی هم همراه فیلدهای مقدار دارند select می شود
و گزارشم را خراب می کنند
می خوام راهنماییم کنید
چطوری فقط فیلدهای مقدار دار رو دریافت کنم
ضمیمه 154828
از این select که استفاده می کنم هیچ چیزی انتخاب نمی شود
adp.SelectCommand.CommandText = "SELECT * FROM QueryExam WHERE CodeExam = '" + CodeExam + "' AND [Question4Gozineh] IS NOT NULL AND [NumFill] IS NOT NULL";
ممنون میشم راهنماییم کنی
بایست همه ستونهای مورد نیاز رو سلکت کنید
اگر گزارش مشکل داره باید اونو اصلاح کنید
نقل قول: گرفتن فیلدهای پر و فیلتر کردن فیلدهای خالی
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
بایست همه ستونهای مورد نیاز رو سلکت کنید
اگر گزارش مشکل داره باید اونو اصلاح کنید
گزارشم درسته
چون وقتی فقط یک ستون را می خوام کامل و بدون نقص Select می کنه
اما وقتی AND می ذارم بینشون دیگه چیزیو Select نمی کنه
2 ضمیمه
نقل قول: گرفتن فیلدهای پر و فیلتر کردن فیلدهای خالی
نقل قول:
نوشته شده توسط
پرستو پارسایی
اگر این کد هیچ سطری را انتخاب نمیکند، ممکن است دلیل آن این باشد که شرط `CodeExam = @CodeExam` در جدول `QueryExam` هیچ رکوردی را برآورده نمیکند. لطفاً از درستی مقدار `CodeExam` که به عنوان پارامتر استفاده شده است، مطمئن شوید. همچنین، مطمئن شوید که در جدول `QueryExam` فیلدهای `Question4Gozineh` و `NumFill` دارای مقادیر غیر NULL هستند.
و یا اینگونه بررسی کنید
using (SqlCommand command = new SqlCommand("SELECT * FROM QueryExam WHERE CodeExam = @CodeExam AND [Question4Gozineh] IS NOT NULL AND [NumFill] IS NOT NULL", connection))
{
command.Parameters.Add("@CodeExam", SqlDbType.VarChar).Value = CodeExam;
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
{
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
// انجام عملیات مورد نیاز با دادههای دریافت شده
}
}
دوست عزیز حتی کدم را با این شکل تغییر دادم
con.Open();
// Query 1: CodeExam = @CodeExam
// Query 2: [Question4Gozineh] IS NOT NULL
adp.SelectCommand = new OleDbCommand();
adp.SelectCommand.Connection = con;
adp.SelectCommand.CommandText = "SELECT * FROM QueryExam WHERE CodeExam = @CodeExam AND Question4Gozineh IS NOT NULL";
adp.SelectCommand.Parameters.AddWithValue("@CodeEx am", CodeExam);
adp.Fill(ds, "QueryExam");
// Query 3: [NumFill] IS NOT NULL
adp.SelectCommand = new OleDbCommand();
adp.SelectCommand.Connection = con;
adp.SelectCommand.CommandText = "SELECT * FROM QueryExam WHERE CodeExam = @CodeExam AND NumFill IS NOT NULL";
adp.SelectCommand.Parameters.AddWithValue("@CodeEx am", CodeExam);
adp.Fill(ds, "QueryExam");
con.Close();
DataTable filteredTable = new DataTable("filteredTable");
foreach (DataColumn column in ds.Tables["QueryExam"].Columns)
{
filteredTable.Columns.Add(column.ColumnName, column.DataType);
}
foreach (DataRow row in ds.Tables["QueryExam"].Rows)
{
filteredTable.ImportRow(row);
}
if (filteredTable.Rows.Count > 0)
{
stiReport1.Load(Application.StartupPath + "\\ReportMyQuestion.mrt");
stiReport1.RegBusinessObject("QueryExam2", filteredTable);
stiReport1.Show();
}
else
{
MessageBox.Show("هیچ دادهای برای چاپ یافت نشد.", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
اما کماکان مشکل پا برجاست
این هم خروجی کد بالا
ضمیمه 154836
اینم دیزاینش
ضمیمه 154837
نقل قول: گرفتن فیلدهای پر و فیلتر کردن فیلدهای خالی
به نظر من در این کد، مشکلی وجود ندارد و به نظر میرسد کد صحیح باشد. این کد باید سطرهایی را انتخاب کند که شرایط `CodeExam = @CodeExam` و `Question4Gozineh IS NOT NULL` یا `NumFill IS NOT NULL` را برآورده میکنند. اگر این کد هیچ سطری را انتخاب نمیکند، ممکن است مشکل دیگری در دادهها یا در پیکربندی دیتابیس وجود داشته باشد که باید بررسی شود. لطفاً چک کنید که دادههای مورد نیاز برای شرایط مذکور وجود دارند
نقل قول: گرفتن فیلدهای پر و فیلتر کردن فیلدهای خالی
نقل قول:
نوشته شده توسط
پرستو پارسایی
به نظر من در این کد، مشکلی وجود ندارد و به نظر میرسد کد صحیح باشد. این کد باید سطرهایی را انتخاب کند که شرایط `CodeExam = @CodeExam` و `Question4Gozineh IS NOT NULL` یا `NumFill IS NOT NULL` را برآورده میکنند. اگر این کد هیچ سطری را انتخاب نمیکند، ممکن است مشکل دیگری در دادهها یا در پیکربندی دیتابیس وجود داشته باشد که باید بررسی شود. لطفاً چک کنید که دادههای مورد نیاز برای شرایط مذکور وجود دارند
اگه بنویسم
adp.SelectCommand.CommandText = "SELECT * FROM QueryExam WHERE CodeExam = '"+ CodeExam + "' AND [Question4Gozineh] IS NOT NULL";
به درستی جواب میده و خالی برنمی گردونه
اما اگه بنویسم
adp.SelectCommand.CommandText = "SELECT * FROM QueryExam WHERE CodeExam = '"+ CodeExam + "' AND [Question4Gozineh] IS NOT NULL AND [NumFill] IS NOT NULL";
سطر خالی و پر را با هم میده
جدول بانک اکسس را براتون ارسال کنم؟
نقل قول: گرفتن فیلدهای پر و فیلتر کردن فیلدهای خالی
لطفا اینگونه بررسی کنید
adp.SelectCommand.CommandText = "SELECT * FROM QueryExam WHERE CodeExam = @CodeExam AND [Question4Gozineh] IS NOT NULL AND [NumFill] IS NOT NULL";
adp.SelectCommand.Parameters.Add("@CodeExam", OleDbType.VarChar).Value = CodeExam;
نقل قول: گرفتن فیلدهای پر و فیلتر کردن فیلدهای خالی
نقل قول:
نوشته شده توسط
پرستو پارسایی
لطفا اینگونه بررسی کنید
adp.SelectCommand.CommandText = "SELECT * FROM QueryExam WHERE CodeExam = @CodeExam AND [Question4Gozineh] IS NOT NULL AND [NumFill] IS NOT NULL";
adp.SelectCommand.Parameters.Add("@CodeExam", OleDbType.VarChar).Value = CodeExam;
سلام این کد جواب نداد
کاری که کردم این بود
اول کوئری جدا نوشتم برای هر کدوم از گروههایی که باید با هم select بشن
و regbusines در استیمول را هم مثل کوئری گروه بندی جدا کردم
و خدا رو شکر تو این حالت جواب داد
نقل قول: گرفتن فیلدهای پر و فیلتر کردن فیلدهای خالی