PDA

View Full Version : بازگشت ندادن مقدار



misagh.sys
چهارشنبه 11 دی 1398, 14:41 عصر
با سلام و احترام
دوستان من کد زیر را داخل یک کلاس نوشتم میخوام به دلیل اینکه این کد را به صورت تکراری استفاده در قسمت های مختلف برنامه داخل یه کلاس نوشتم
اما هیچ خروجی بهم نمیده
چکار کنم
private void IDes ()
{
try
{

string strostan;
connectdb strcndb = new connectdb();
strcndb.strcon1 = str;
SqlConnection scon = new SqlConnection(strcndb.strcon1);
scon.Open();

string comand_search_id_state;
comand_search_id_state = "select * from State where subject=N'" + namestate + "'";
SqlCommand scom = new SqlCommand(comand_search_id_state, scon);
SqlDataReader dr;
dr = scom.ExecuteReader();
if(dr.Read())
{
return IDState = dr["ID"].ToString();


}


scon.Close();

}
catch { }

misagh.sys
چهارشنبه 11 دی 1398, 14:45 عصر
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Xml;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Globalization;
using System.IO;
using System.Drawing.Imaging;
using System.Windows.Forms.PropertyGridInternal;
using Microsoft.Win32;
using System.Media;
using System.Globalization;
using FarsiMsgBox;
using Persia;
using PersianTools;

namespace TProperty
{
class LID
{
public string str;
public string namestate, IDState;

public LID()
{
SqlDataAdapter dataadapter = new SqlDataAdapter();
SqlDataAdapter dataadapter2 = new SqlDataAdapter();
DataSet objset2 = new DataSet();
DataSet objset = new DataSet();
SqlDataAdapter objadapadap = new SqlDataAdapter();
DataTable objtabe12 = new DataTable();
SqlCommand command = new SqlCommand();
SqlCommand cmd2 = new SqlCommand();
SqlDataAdapter getDayAdp = new SqlDataAdapter();
DataSet getDayDs = new DataSet();
DataSet ds = new DataSet();

clsProgress cPro = new clsProgress();
connectdb sql_connnn_string_db = new connectdb();

hight_dgv h = new hight_dgv();



SqlConnection scon2 = new SqlConnection();


}

private void IDes ()
{
try
{

string strostan;
connectdb strcndb = new connectdb();
strcndb.strcon1 = str;
SqlConnection scon = new SqlConnection(strcndb.strcon1);
scon.Open();

string comand_search_id_state;
comand_search_id_state = "select * from State where subject=N'" + namestate + "'";
SqlCommand scom = new SqlCommand(comand_search_id_state, scon);
SqlDataReader dr;
dr = scom.ExecuteReader();
if(dr.Read())
{
return IDState = dr["ID"].ToString();


}


scon.Close();

}
catch { }



}


}
}

misagh.sys
چهارشنبه 11 دی 1398, 15:01 عصر
میخوام از کلاس IDES مثدار آی دی که داخل متغیر IDState خارج از کلاس نمایش بدم داخل یه تکس باکس
چکار باید بکنم ؟

misagh.sys
چهارشنبه 11 دی 1398, 15:09 عصر
از بزرگواران کسی نیست جواب بده ؟

رامین مرادی
چهارشنبه 11 دی 1398, 15:10 عصر
میخوام از کلاس IDES مثدار آی دی که داخل متغیر IDState خارج از کلاس نمایش بدم داخل یه تکس باکس
چکار باید بکنم ؟



سلام
اولا ides کلاس نیست یک متد از کلاس LID هست.
دوما متد ides به صورت پرایوت تعریف شده و خارج از کلاس بهش نمیتونید دسترسی داشته باشید .
سوما خروجی نداره این متدتون چون void هست
برا اینکه مقدار idstate رو برگردونید باید بجای void باید از string استفاده کنید.



جسارتا اول پیشنهاد میکنم یه بار کامل مفاهیم رو یاد بگیرید بعد. چون اینجوری سردرگم میشید.

رامین مرادی
چهارشنبه 11 دی 1398, 15:12 عصر
و در خارج از کلاس به طریق زیر میتونید مقدار رو دریافت کنید. البته بعد از تغییراتی که در پست 5 این تایچیک اشاره کردم




LID l=new LID();
string result=l.IDes();

misagh.sys
چهارشنبه 11 دی 1398, 15:25 عصر
متد از void به String تغییر میدم به نام متد خطا ایراد میگره

misagh.sys
چهارشنبه 11 دی 1398, 15:26 عصر
متد در حالت کلی من به صورت public تعریفش کرده بودم یه تغییر کوچیک دادم اصلاح نکردم و کر را داخل تایپیک ارسال کردم

misagh.sys
چهارشنبه 11 دی 1398, 15:28 عصر
با این حال از توضیحاتتون ممنون اما من جواب سوالما نگرفتم

misagh.sys
چهارشنبه 11 دی 1398, 15:59 عصر
کسی نیس جواب بده ؟

misagh.sys
چهارشنبه 11 دی 1398, 16:03 عصر
خطایی که به نام متد گرفته دلیلش چیه ؟ دوستان151202

محمد رضا فاتحی
چهارشنبه 11 دی 1398, 22:20 عصر
منم پیشنهادم فراگیری اصول اولیس...
برا جواب سوالتون و ایرادی که میگیره....
وقتی یه فانکشن تعریف می کنید که خروجی داره باید برای تمام شرایطش خروجی تعریف کنید الان تو کد بالاتون کافیه داخلی catch یه خروجی تعریف کنید...همچنین ممکنه شرط برقرار نشه برای این حالتم فکر نشده

رامین مرادی
شنبه 14 دی 1398, 18:46 عصر
متد از void به String تغییر میدم به نام متد خطا ایراد میگره

به نام متد گیر نمیده شما خروچی باید داشته باشید. به این صورت باید بنویسید اون متد رو



public string IDes ()
{
try
{
string strostan;
connectdb strcndb = new connectdb();
strcndb.strcon1 = str;
SqlConnection scon = new SqlConnection(strcndb.strcon1);
scon.Open();
string comand_search_id_state;
comand_search_id_state = "select * from State where subject=N'" + namestate + "'";
SqlCommand scom = new SqlCommand(comand_search_id_state, scon);
SqlDataReader dr;
dr = scom.ExecuteReader();
if(dr.Read())
{
return IDState = dr["ID"].ToString();
}
else
{
return "";
}
}
catch
{
return "";
}
}




ولی بازم تاکید میکنم اول کمی مطالعه مجدد داشته باشید.(به عنوان یه دوست.جسارت نشه)