PDA

View Full Version : سوال: مشکل در استفاده از تابع های برگشتی



systam
چهارشنبه 31 شهریور 1395, 22:42 عصر
سلام
خیلی اشنایی با تابع های برگشتی ندارم
این کدی هم نوشتم از توی نت سرچ کردن
من میخوان دربرنامه دو مدل سرچ از دیتا بیسم داشته یکی براساس کد جنس و دیگری نام جنس
تابع :




public string searche_zod(string str_txt, string name_cel, bool int_code, bool str_name) {object str_kh;
SqlDataAdapter dtaa = new SqlDataAdapter(("select * from ajnas where +'" name_cel + "' = '" (str_txt + "'")))), "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\Database1.mdf;Integrated Security=True;Conn" +ect Timeout=30;User Instance=True");
DataSet dss = new DataSet();
dtaa.Fill(dss, "ajnas");
dtaa.Dispose();
if ((dss.Tables[0].Rows.Count > 0)) {
if ((int_code == true)) {
str_kh = dss.Tables[0].Rows[0][0];
}
else if ((str_name == true)) {
str_kh = dss.Tables[0].Rows[0][1].ToString;
}

}
else {
TextBox7.Text = "error";
}

}



str_txt = مقدار ورودی برا جستجو
name_cel = نام ستون جدول در دیتا بیس
str_name= مقدار اگر رشته باشد برای شرط
int_code= مقدار اگر عددی باشد برای شرط
str_kh = برای مقدار خروجی تابع که نفهمیدم باید کجای تابع بزارم
و برای فراخوانی هم


private void TextBox5_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) {
if ((e.KeyData == Keys.Enter)) {
SendKeys.Send("{tab}");
searche_zod(TextBox5.Text, "code", true, false);
}

}


ولی مسیج باکس error نمایش داده میشه
مشکل کجای کاره
دوستان راهنمایی کنند

c0mmander
پنج شنبه 01 مهر 1395, 10:10 صبح
سلام
این کوئری رو تست کن.

"SELECT * FROM ajnas WHERE \'" + name_cel + "\' = \'" + str_txt + "\'"

مورد بعدی برای واکشی اطلاعات در 90 درصد موارد فقط با کوئری فرستادن انجام میشه در موارد خیلی پیچیده در از دستور های join میتونی استفاده کنی و برای Sort کردن هم از order by column_name DESC /ASC میتونی استفاده کنی. استفاده از تابع بازگشتی داخل واکشی اطلاعات اصلا کار درستی نیست.

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

خورجی شما یک رشته نباید باشه باید دسته از رکورد ها باشه پس نمیشه داخل یک رشته از تابع return داد. بهتره که یک datatable رو جروجی تابع قرار بدید.