PDA

View Full Version : سینتاکس or در c#



resatak
سه شنبه 25 مهر 1391, 12:03 عصر
با سلام خدمت شما
می دونم سوال مبتدیانست ولی کمک بزرگی میکنه
من قبلا با asp کلاسیک می کردم و تازه دات نت و سی شارپ شروع کردم
می خوام ببینم این تو سی شارپ چه جوری باسد بنویسم.
if id=1 or id=2 then
....
end if

من نمیدونم داستان or تو سی شارپ چه جوریه.
با تشکر

hakim22
سه شنبه 25 مهر 1391, 12:17 عصر
if(id==1||id==2)
{
}

morteza271
سه شنبه 25 مهر 1391, 12:17 عصر
if (id == 1 || id == 2)
{
}
else if (id == 3)
{
}
else
{
}

hakim22
سه شنبه 25 مهر 1391, 12:24 عصر
if(id==1||id==2)
{
}

resatak
چهارشنبه 26 مهر 1391, 11:04 صبح
با تشکر از پاسختان الان مشکل من اینه که ارور میده چون چیزی که می حوام دقیقا اینه

if (((manager_master)this.Master).GetUserKind() == 2)
{
DataCm.UserId == 36 || DataCm.UserId == 52;
}

morteza271
چهارشنبه 26 مهر 1391, 11:10 صبح
با تشکر از پاسختان الان مشکل من اینه که ارور میده چون چیزی که می حوام دقیقا اینه

if (((manager_master)this.Master).GetUserKind() == 2)
{
DataCm.UserId == 36 || DataCm.UserId == 52;
}

میشه توضیح بدین که میخواین چیکار کنین؟؟!!!!!!!!
این دیگه چه مدلیه!!!

resatak
چهارشنبه 26 مهر 1391, 11:43 صبح
ببنید توی if که مشکلی نیست چک میکنه که یوزر سطح دسترسیش چیه
ولی بعد از if میگه که اطلاعاتی از دیتابیس خونده شد که UserId = 36 یا UserId = 52
که اگر یکی از این دو باشه کار میکنه ولی اینجوری اررور می ده

morteza271
چهارشنبه 26 مهر 1391, 11:47 صبح
فکر کنم منظورتون اینه :
if (((manager_master)this.Master).GetUserKind() == 2)
{
if (DataCm.UserId == 36 || DataCm.UserId == 52)
{
// Your Code...
}
}

resatak
چهارشنبه 26 مهر 1391, 11:57 صبح
ببخشید فکر می کنم منظورم بد رسوندم
ببینید شما وقتی می خواید از دیتابیس select کنید میگید مثلا اونایی که id=52
اینم همونه فقط می خوام بگم اونایی که id=52 یا id=36

morteza271
چهارشنبه 26 مهر 1391, 12:05 عصر
یعنی شما میخواین یه کوئری رو اجرا کنید؟!!! حتما کوئری نوشتن و اجرای اونو که بلدین دیگه درسته؟؟!!!
این DataCm چیه؟؟
خوب مثلا کوئری میشه اینطوری :
Select * From Users Where UserId = 36 or UserId = 52

resatak
چهارشنبه 26 مهر 1391, 15:56 عصر
متاسفانه کدی که من دارم این طوری نیست دقیقا اینه

public List<DataCom> Selectt_Data(DataCom DataCm)
{
List<DataCom> Lst = new List<DataCom>();
try
{
using (SqlCommand Cm = new SqlCommand())
{
Cm.CommandType = CommandType.StoredProcedure;
Cm.CommandText = "Select_Data";
Cm.Parameters.Add("DataId", SqlDbType.Int).Value = DataCm.DataId;
Cm.Parameters.Add("RegionIndustrialId", SqlDbType.TinyInt).Value = DataCm.RegionIndustrialId;
Cm.Parameters.Add("IndustrialId", SqlDbType.TinyInt).Value = DataCm.IndustrialId;
Cm.Parameters.Add("TransactionsTypeId", SqlDbType.Int).Value = DataCm.TransactionsTypeId;
Cm.Parameters.Add("OwnerId", SqlDbType.Int).Value = DataCm.OwnerId;
Cm.Parameters.Add("UserId", SqlDbType.Int).Value = DataCm.UserId;
Cm.Parameters.Add("DataStatus", SqlDbType.TinyInt).Value = DataCm.DataStatus;
Cm.Parameters.Add("DataOcasiyon", SqlDbType.TinyInt).Value = DataCm.DataOcasiyon;
Cm.Parameters.Add("OwnerName", SqlDbType.NVarChar, 50).Value = DataCm.OwnerName;
Cm.Parameters.Add("OwnerTel", SqlDbType.NVarChar, 50).Value = DataCm.OwnerTel1;
Cm.Parameters.Add("DataRegisterNumber", SqlDbType.NVarChar, 50).Value = DataCm.DataRegisterNumber;
Cm.Parameters.Add("First", SqlDbType.Int).Value = DataCm.First;
Cm.Parameters.Add("Last", SqlDbType.Int).Value = DataCm.Last;
Con = MyCon.OpenCon();
Cm.Connection = Con;
SqlDataReader Dr = Cm.ExecuteReader();
حالا میخوام اینم باشه

Cm.Parameters.Add("UserId", SqlDbType.Int).Value = 52;

morteza271
چهارشنبه 26 مهر 1391, 18:54 عصر
خوب از اول اینو بگین دوست عزیز.
شما بهتره اول استور پروسیجورتون رو تغییر بدین به این صورت که قسمت Where رو به صورت دلخواه بذارین، تا جایکه من متوجه شدم باید شبیه به کوئری باشه که در تایپیک قبلی گذاشتم.
در SP دو تا پارامتر برای UserId بذارین مثلا UserId1 و UserId2 و بعد در سی شارپ دو پارامتر را با مقدارهای دلخواه ست کنید.

danialafshari
چهارشنبه 26 مهر 1391, 21:33 عصر
سلام دوست عزیز
شما بهتره از کوئری استفاده کنید خیلی راحت تر جواب می گیرید

resatak
پنج شنبه 27 مهر 1391, 12:25 عصر
خوب از اول اینو بگین دوست عزیز.
شما بهتره اول استور پروسیجورتون رو تغییر بدین به این صورت که قسمت Where رو به صورت دلخواه بذارین، تا جایکه من متوجه شدم باید شبیه به کوئری باشه که در تایپیک قبلی گذاشتم.
در SP دو تا پارامتر برای UserId بذارین مثلا UserId1 و UserId2 و بعد در سی شارپ دو پارامتر را با مقدارهای دلخواه ست کنید.

میشه این با مثال برام توضیح بدید
ممنون

morteza271
پنج شنبه 27 مهر 1391, 12:33 عصر
میشه این با مثال برام توضیح بدید
ممنون

سمت sql رو حتما بلدین دیگه!
فقط باید در Sp دو تا پارامتر تعریف کنید به این صورت :
@UserId1 int,
@UserId2 int


بعد در قسمت Where اینطوری بنویسید :
Where UserId = @UserId1 or UserId = @UserId2

در سمت سی شارپ هم اینا رو :
Cm.Parameters.Add("UserId1", SqlDbType.Int).Value = 52;
Cm.Parameters.Add("UserId2", SqlDbType.Int).Value = 36;

متوجه شدین؟!!!

البته اینم بگم که اگه ممکنه بازم تعداد UserId های لازم برای اجرای کوئری بیشتر بشه ، از کوئری (به جای SP) استفاده کنید تا نیاز نباشه که هی پارامتر در SPاضافه کنید! یا حتی از View استفاده کنید.

resatak
پنج شنبه 27 مهر 1391, 13:49 عصر
با تشکر از شما
من هرچی گشتم where پیدا نکردم بدبختی
من سمت sql بلدم فقط منزورتون از sp چیه؟

morteza271
پنج شنبه 27 مهر 1391, 13:52 عصر
با تشکر از شما
من هرچی گشتم where پیدا نکردم بدبختی
من سمت sql بلدم فقط منزورتون از sp چیه؟

کوئری داخل استور پروسیجورتون رو بذارین اینجا تا درستش کنم و براتون بذارم.
منظورم از SP همون استور پروسیجور هست!

resatak
پنج شنبه 27 مهر 1391, 14:03 عصر
آقا ببخشیدا منظورتون از استور پروسیجور چیه

morteza271
پنج شنبه 27 مهر 1391, 14:12 عصر
آقا ببخشیدا منظورتون از استور پروسیجور چیه

وای خدا!!!!!!!!!
دوست عزیز شما اصلا دارین چیکار میکنین؟؟؟؟!!!!!!

این قسمت از کدتون رو گذاشته بودین :
Cm.CommandText = "Select_Data";
این نشون میده که کوئری شما داخل یک استور پروسیجور نوشته شده و شما با فراخوانی این استور پروسیجور میخواین کوئری تون رو اجرا کنید!!!

این Select_Data نام استور پروسیجور شماست!!!!
من واقعا موندم که شما واقعا الان دارین برنامه نویسی می کنید یا............

مگه اون کدی که در بالا گذاشتین رو خودتون ننوشتین؟؟؟؟؟؟؟؟

resatak
پنج شنبه 27 مهر 1391, 14:38 عصر
نه راستش این یه برنامه نویس واسم نوشتم الانم کار میکنه فقط باید یه سری جاهاش تغییر بدم
خوب حالا می تونید بگید دقیق شما کدوم کد می خواید

resatak
پنج شنبه 27 مهر 1391, 15:39 عصر
ببخشید خوب من این select_data رو تو sp چه طوری می تونم تغییر بدم
باید این کار mssql managment انجام بدم دیگه؟

resatak
پنج شنبه 27 مهر 1391, 15:46 عصر
عذر می خوام پیداش کردم

USE [padideh]
GO
/****** Object: StoredProcedure [dbo].[Select_Data] Script Date: 10/18/2012 16:08:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Select_Data]
-- Add the parameters for the stored procedure here
@DataId int=0,
@RegionIndustrialId int=0,
@IndustrialId int=0,
@TransactionsTypeId int=0,
@OwnerId int=0,
@DataStatus tinyint=0,
@DataOcasiyon bit=null,
@DataRegisterNumber nvarchar(50)=null,
@OwnerName nvarchar(50)=null,
@OwnerTel nvarchar(50)=null,
@UserId int=0,
@First int=0,
@Last int=0
AS
BEGIN
With Tmp As
(
SELECT
dbo.Data.DataId,
dbo.Data.TransactionsTypeId,
dbo.Data.TypePrvathId,
dbo.Data.RegionIndustrialId,
dbo.Data.OwnerId,
dbo.Data.DataSalonArea,
dbo.Data.DataTotalArea,
dbo.Data.DataTotalHeight,
dbo.Data.DataAdministrative,
dbo.Data.SalonFloorId,
dbo.Data.SalonEnclosureFloorId,
dbo.Data.RoofId,
dataAddress,
dbo.Data.DataWater,
dbo.Data.DataElectricity,
dbo.Data.DataInstallation,
dbo.Data.DataGas,
dbo.Data.DataRegistrationStatus,
dbo.Data.DataTel,
dbo.Data.DataTotalPrice,
dbo.Data.DataRent,
dbo.Data.DataDescription,
dbo.Data.DataRegDate,
dbo.Data.DataStatus,
DataFilePath,
dbo.Owner.OwnerName,
dbo.Owner.OwnerTel1,
dbo.Owner.OwnerTel2,
dbo.Owner.OwnerTel3,
dbo.RegionIndustrial.IndustrialRegionName,
DataWorker,
DataRegisterNumber,
ROW_NUMBER() Over(Order By dbo.Data.DataId desc ) As CountRow
,
dbo.Data.UserId,
dbo.[User].UserName,
dbo.[User].UserFullName, dbo.[User].UserTel
, dbo.Data.IndustrialId,
IndustrialName,
DataOcasiyon
FROM (SELECT MAX(DataFilePath_2.DataFilePathId) AS DataFilePathId, DataFilePath_2.DataId
FROM dbo.DataFilePath AS DataFilePath_2 INNER JOIN
dbo.DataFilePath AS DataFilePath_1 ON DataFilePath_2.DataFilePathId = DataFilePath_1.DataFilePathId
GROUP BY DataFilePath_2.DataId) AS FilePath INNER JOIN
dbo.DataFilePath ON FilePath.DataFilePathId = dbo.DataFilePath.DataFilePathId RIGHT OUTER JOIN
dbo.Data LEFT OUTER JOIN
dbo.Owner ON dbo.Data.OwnerId = dbo.Owner.OwnerId LEFT OUTER JOIN
dbo.Industrial ON dbo.Data.IndustrialId = dbo.Industrial.IndustrialId LEFT OUTER JOIN
dbo.RegionIndustrial ON dbo.Data.RegionIndustrialId = dbo.RegionIndustrial.IndustrialRegionId ON dbo.DataFilePath.DataId = dbo.Data.DataId LEFT OUTER JOIN
dbo.[User] ON dbo.Data.UserId = dbo.[User].UserId
where
dbo.Data.DataId=case when @DataId=0 then dbo.Data.DataId else @DataId end
and

dbo.Data.UserId=case when @UserId=0 then dbo.Data.UserId else @UserId end
and
RegionIndustrialId=case when @RegionIndustrialId=0 then RegionIndustrialId else @RegionIndustrialId end
and
TransactionsTypeId=case when @TransactionsTypeId=0 then TransactionsTypeId else @TransactionsTypeId end
and
Data.OwnerId=case when @OwnerId=0 then Data.OwnerId else @OwnerId end
and dbo.Data.IndustrialId=case when @IndustrialId=0 then dbo.Data.IndustrialId else @IndustrialId end
and DataStatus =case when @DataStatus=0 then DataStatus else @DataStatus end
and isnull(DataOcasiyon,0)=case when @DataOcasiyon IS null then isnull(DataOcasiyon,0) else @DataOcasiyon end

and isnull(DataRegisterNumber,'')=case when @DataRegisterNumber is null then isnull(DataRegisterNumber,'') else @DataRegisterNumber end
and (LOWER(OwnerName) like case when isnull(@OwnerName,'')='' then OwnerName else LOWER(@OwnerName) end + '%' )
and (OwnerTel1=case when @OwnerTel is null then OwnerTel1 else @OwnerTel end
or OwnerTel2=case when @OwnerTel is null then OwnerTel2 else @OwnerTel end
or
OwnerTel3=case when @OwnerTel is null then OwnerTel3 else @OwnerTel end)
)
Select
*,
dbo.Select_Data_Count(@DataId,@RegionIndustrialId, @TransactionsTypeId,@OwnerId,@IndustrialId,@DataSt atus,@DataOcasiyon,@DataRegisterNumber,@OwnerName, @OwnerTel,@UserId) As [Count]
From

Tmp
Where

@Last=0 OR (CountRow>@First And CountRow<=@Last)
END

resatak
پنج شنبه 27 مهر 1391, 16:04 عصر
جناب دستت درست فهمیدم باید چه کار کنم و درست شد بازم ممنون از راهنمایاتون