سلام .
من یه کد می خوام که اجازه نده (مثلا یه دانشجو بتونه درسی رو که پاس کرده دوباره برداره , و مثلا استاد نتواند در یه روز 2تا کلاس در یک ساعت بگیرد)
لطفا کمکم منید لنگ این قسمت پروژه ام هستم
سلام .
من یه کد می خوام که اجازه نده (مثلا یه دانشجو بتونه درسی رو که پاس کرده دوباره برداره , و مثلا استاد نتواند در یه روز 2تا کلاس در یک ساعت بگیرد)
لطفا کمکم منید لنگ این قسمت پروژه ام هستم
سوالتون واضح نیست.
داخل چی میخواید داده تکراری وارد نشه؟ یک پایگاه داده یا یه آرایه ای چیزی؟
در مجموع باید با یه حلقه ی For تک تک رکورد ها رو چک کنید.
آره راست میگی - ببخشید.
من با سی شارپ یه پروژه دارم که سیستم ثبت نام دانشگاه هست با بانک اکسس.
حالا می خوام کدی بنویسم که به کاربر اجازه نده که بتواند یه استاد رو در کلاس یکسان و در ساعت همزمان ثبت کند.
ممنون میشم شبه کدش رو برام بنویسی .
می تونین در دیتابیس به صورت محدودیت ها فیلتر کنین و اوها را به کاربر نمایش بدید
و قطعا کاربر همونی رو انتخاب می کنه که براش محدود شده
من برنامه نویسیم کلا خوب نیست , میشه کد مربوطه رو برام بنویسید , اگه مقدوره مرسی .
select * from TableName Where NameField = Value
این دستور در دیتابیس کاربرد داره در view یا sp
اگر مشکلت زیاده باید جزئیات بیشتری رو مطرح کنی تا دوستان کمکت کنند
از table ها بگو ارتباط بین اینها
یا دیتابیس رو بگذار یا هم ازشون عکس بگذار و یه توضیح هم بده
سلام ،
بهتره از Count و Where استفاده کنی به مثال زیر دقت کن :
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Select count(*) from table1 where dars=@param";
cmd.Parameters.AddWithValue("@param", textBox1.Text.Trim());
int a = 0;
a = Convert.ToInt32(cmd.ExecuteScalar());
if (a > 0)
{
MessageBox.Show("این درس قبلا توسط استاد گرفته شده");
}
else
{
//Do somrthing
}
موفق باشید./
سلام.
برای جلوگیری از ورود داده تکراری، باید در Stored Procedure مورد نظر، EXISTS ای بنویسید که ابتدا مطمن بشید رکورد وجود نداره، سپس اقدام به INSERT کردن رکورد کنید:
IF NOT EXISTS(SELECT * FROM Customers WHERE Name=N'Mehdi') BEGIN
INSERT INTO Customers(Name) VALUES('Mehdi')
END
اینجا، من ابتدا مطمئن میشم که در جدول Customer ها مشتری ای با اسم مهدی ندارم، اگر نبود، اونوقت عمل Insert رو انجام میدم. البته، این بدین معنا نیست که نباید Constraint های مربوطه رو روی بانک تعریف کنید...
ببینید. در حالت کلی، وقتی از EXISTS استفاده می کنیم، RDBMS اگر به اولین رکورد مورد نظر ما برسه، میتونه عملیات رو متوقف کنه. چرا؟ چون متوجه میشه حداقل یک رکورد با شرایط مورد نظر ما در بانک وجود داره. اما وقتی از COUNT(*) استفاده می کنید، RDBMS رو مجبور به شمارش کلیه Row هایی که حاوی شرط مورد نظر هستن، می کنید. بسته به شرایط، استفاده از COUNT میتونه صدها برابر (یا حتی بیشتر) کندتر از EXISTS باشه. بنابراین، هرگز نباید برای تست وجود یا عدم وجود یک رکورد، از COUNT استفاده کرد. این مقاله مقایسه جالبی بین این دو و Performance هر یک انجام داده.
اما کدی که شما بهش اشاره کردید، داره از این واقعیت استفاده می کنه که روی بانک Constraint ای Unique برای اون ستون خاص تعریف کرده، در نتیجه، هنگام درج داده تکراری، Exception ای Throw میشه و ما (به نوعی) متوجه میشیم که داده تکراری هستش. اما این Exception ممکنه بنا به دلائل متفاوتی throw بشه و نمیشه لزوما گفت که به صرف تکراری بودن رکورد بوده که Exception مورد نظر Throw شده. تولید و مدیریت Exception ها در سیستم بسیار هزینه بر هستش، بنابراین هر جا که بشه از اونها پرهیز کرد، باید اینکار رو انجام داد. در کدی که من نوشتم، شما می تونید با Return Value ای متوجه تکراری بودن، یا نبودن رکورد مورد نظر بشید، بدون اینکه سیستم رو مجبور به تولید و مدیریت Exception کنید....
موفق باشید.
سلام
ولی من هرچیزی وارد میکنم میگه تکراریه چرا من این مشکل رو دارم؟
کد SP رو قرار بدید
یک نمونه sp
USE [dbGlass]
GO
/****** Object: StoredProcedure [dbo].[SP_Test] Script Date: 09/19/2014 20:24:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[SP_Test]
(
@n nvarchar(30),
@Result bit output
)
AS
BEGIN
if not Exists (SELECT TOP (1) codeContact, n, nf FROM tbl_Contacts WHERE (n = @n))
Begin
set @Result=(0)
-- code for insert
End
Else
Begin
set @Result=(1)
End
END
با سلام این کد من این کدها رو کجاش بذارم؟
SqlConnection conn = new SqlConnection("Data Source=(LocalDB)\\v11.0;AttachDbFilename=C:\\Users \\hajiabad\\documents\\visual studio 2012\\Projects\\bank\\bank\\11.mdf;Integrated Security=True");
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "insert into login ([User] , [password]) Values ('" + textBox1.Text.ToString() + "','" + textBox2.Text + "')";
cmd.Parameters.AddWithValue("[password]", textBox1.Text);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();