با اجازه جناب ونیز 2008
کدهای کامل این فرم رو بذارید درخواست سورس هم نفرمایید دوست عزیز قبلا راجب به این مسئله پاسخ داده شده
Printable View
با اجازه جناب ونیز 2008
کدهای کامل این فرم رو بذارید درخواست سورس هم نفرمایید دوست عزیز قبلا راجب به این مسئله پاسخ داده شده
سلام خدمت استاد عزیز آقای ونیز
من خدایش سورس نمیخوام، تا الان هم سعی کردم خودم روی تمام سورس ها کار کنم، فقط الان به یه مشکل جدی خوردم، این محاسبه کننده جواب های صحیح و غلط و بی پاسخ واسه من اشتباه، جواب درست آزمون رو بهم نمیده، واقعاً مغزم داغ کرده اونقدر این کدهای این صفحه رو مرور کردم، دیگه ناامید شدم و گفتم از شما و باقی دوستان کمک بگیرم!
کدهای این صفحه رو میزارم اگه ممکنه یه نگاه بندازید، خیلی ممنون میشم اگه کمک کنید،(کدهای فرم آزمون)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace MyAzmoon
{
public partial class FrmAzmon : Form
{
SqlConnection con = new SqlConnection("server=(local);DataBase=DBAzmoon;In tegrated security = true");
DataTable dt;
int MyTime;
int k = 0;
ListBox MyListAnswer;
//int num = 0;
public static int bipasokh, sahih, ghalat;
public FrmAzmon()
{
InitializeComponent();
}
public void UncheckRadioButton(Control parent)
{
foreach ( Control ctrl in Parent.Controls)
{
if (object.ReferenceEquals(ctrl.GetType(), typeof(RadioButton)))
{
((RadioButton)ctrl).Checked = false;
}
}
}
private void FrmAzmon_Load(object sender, EventArgs e)
{
txtQuestionNumber.Focus();
SqlDataAdapter da = new SqlDataAdapter("SelectAllGroup", con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
DataTable dt = new DataTable();
da.Fill(dt);
CmbGroup.DataSource = dt;
CmbGroup.DisplayMember = "GroupName";
CmbGroup.ValueMember = "GroupID";
UncheckRadioButton(groupBox2);
//BtnNext.Enabled = false;
//btnPreviews.Enabled = false;
groupBox2.Enabled = false;
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnShow_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(txtQuestionNumber.Text) )
errorProvider1.SetError(txtQuestionNumber, "تعداد سوالات را تعیین کنید");
else if (string.IsNullOrWhiteSpace(CmbGroup.Text))
errorProvider1.SetError(CmbGroup, "گروه امتحانی را تعیین کنید");
else if (txtQuestionNumber.Text == (0).ToString())
errorProvider1.SetError(txtQuestionNumber, "تعداد سوالات نمیشود صفر باشد");
else
{
errorProvider1.SetError(txtQuestionNumber, "");
errorProvider1.SetError(CmbGroup, "");
SqlCommand cmd = new SqlCommand("CheckQuestionNumber", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@groupid", CmbGroup.SelectedValue);
cmd.Parameters.AddWithValue("@questionnumber", txtQuestionNumber.Text.Trim());
cmd.Parameters.Add("@result", SqlDbType.Int);
cmd.Parameters["@result"].Direction = ParameterDirection.Output;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
int res = Convert.ToInt32(cmd.Parameters["@result"].Value);
if (res == 0)
{
MessageBox.Show("تعداد سوالات درخواستی در بانک اطلاعاتی موجود نیست","ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
txtQuestionNumber.ResetText();
}
else if (res == 1)
{
btnPreviews.Enabled = true;
BtnNext.Enabled = true;
//btnShow.Enabled = false;
//btnCancel.Enabled = false;
groupBox1.Enabled = false;
groupBox2.Enabled = true;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
dt = new DataTable();
da.Fill(dt);
if (CHKTime.Checked)
{
timer1.Start();
lblTotalTime.Text = (Properties.Settings.Default.QuestionTime * dt.Rows.Count).ToString();
}
k = 0;
txtQuestion.Text = dt.Rows[0]["QuestionText"].ToString();
RdbCase1.Text = dt.Rows[0]["Case1"].ToString();
RdbCase2.Text = dt.Rows[0]["Case2"].ToString();
rdbCase3.Text = dt.Rows[0]["Case3"].ToString();
RdbCase4.Text = dt.Rows[0]["Case4"].ToString();
//
MyListAnswer = new ListBox();
for (int i = 0; i < dt.Rows.Count; i++)
{
MyListAnswer.Items.Add(0);
}
}//End else
}
}
private void timer1_Tick(object sender, EventArgs e)
{
MyTime = 0;
MyTime = Convert.ToInt32(lblTotalTime.Text);
MyTime--;
lblTotalTime.Text = MyTime.ToString();
if (MyTime == 0)
{
timer1.Stop();
btnPreviews.Enabled = false;
BtnNext.Enabled = false;
//MessageBox.Show("زمان شما به اتمام رسید.");
for (int i = 0; i < dt.Rows.Count; i++)
{
if (Convert.ToInt32(MyListAnswer.Items[i]) == Convert.ToInt32(dt.Rows[i]["Answer"]))
{
sahih++;
}
else if (Convert.ToInt32(MyListAnswer.Items[i]) == 0)
{
bipasokh++;
}
else if (Convert.ToInt32(MyListAnswer.Items[i]) != Convert.ToInt32(dt.Rows[i]["Answer"]))
{
ghalat++;
}
}
frmResultQuestion fresult = new frmResultQuestion();
fresult.ShowDialog();
}
}
private void BtnNext_Click(object sender, EventArgs e)
{
sahih = 0;
ghalat = 0;
bipasokh = 0;
RdbCase1.Checked = false;
RdbCase2.Checked = false;
rdbCase3.Checked = false;
RdbCase4.Checked = false;
if (!RdbCase1.Checked && !RdbCase2.Checked && !rdbCase3.Checked && !RdbCase4.Checked)
{
MyListAnswer.Items[k] = 0;
}
else if (RdbCase1.Checked)
{
MyListAnswer.Items[k] = 1;
}
else if (RdbCase2.Checked)
{
MyListAnswer.Items[k] = 2;
}
else if (rdbCase3.Checked)
{
MyListAnswer.Items[k] = 3;
}
else if (RdbCase4.Checked)
{
MyListAnswer.Items[k] = 4;
}
//
if (k == dt.Rows.Count - 1)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
if (Convert.ToInt32(MyListAnswer.Items[i]) == Convert.ToInt32(dt.Rows[i]["Answer"]))
{
sahih++;
}
else if (Convert.ToInt32(MyListAnswer.Items[i]) == 0)
{
bipasokh++;
}
else if (Convert.ToInt32(MyListAnswer.Items[i]) != Convert.ToInt32(dt.Rows[i]["Answer"]))
{
ghalat++;
}
}
timer1.Stop();
BtnNext.Enabled = true;
btnPreviews.Enabled = false;
MessageBox.Show("صحیح برابر است با : " + sahih + "");
MessageBox.Show("غلط برابر است با : " + ghalat + "");
MessageBox.Show("نزده برابر است با : " + bipasokh + "");
frmResultQuestion fresult = new frmResultQuestion();
fresult.ShowDialog();
}
else
{
k++;
txtQuestion.Text = dt.Rows[k]["QuestionText"].ToString();
RdbCase1.Text = dt.Rows[k]["Case1"].ToString();
RdbCase2.Text = dt.Rows[k]["Case2"].ToString();
rdbCase3.Text = dt.Rows[k]["Case3"].ToString();
RdbCase4.Text = dt.Rows[k]["Case4"].ToString();
//UncheckRadioButton(groupBox2);
}
}
private void btnPreviews_Click(object sender, EventArgs e)
{
if (k > 0)
{
k--;
txtQuestion.Text = dt.Rows[k]["QuestionText"].ToString();
RdbCase1.Text = dt.Rows[k]["Case1"].ToString();
RdbCase2.Text = dt.Rows[k]["Case2"].ToString();
rdbCase3.Text = dt.Rows[k]["Case3"].ToString();
RdbCase4.Text = dt.Rows[k]["Case4"].ToString();
}
}
private void button1_Click(object sender, EventArgs e)
{
groupBox1.Enabled = true;
groupBox2.Enabled = false;
timer1.Stop();
}
}
}
بنظر شما مشکل کجاست که نتیجه آزمون درست نیست!؟ منظورم اینه که تعداد پاسخ های صحیح و غلط و پاسخ داده شده درست نیست، مثلاً کاربر هیچی نزده ولی میگه 1یکی صحیح و مثلاً 3 تا نزده!
خیلی خیلی ممنونم از شما...
سلام دوست عزیز.
مشکل از جایی شروع میشه که ما یه کدی رو بدون اینکه منطقی براش داشته باشیم اضافه می کنیم.
هیچ اشکالی نداره که شما بخواید کدهای درون ویدئوها رو دستخوش تغییرات کنید (نه تنها ایرادی نداره که بسیار کار خوبی هم هست) فقط باید برای هر قطعه کدی که اضافه می کنیم دلیل داشته باشیم و خوب بررسی کنیم آیا این یه خطی که من اضافه میکنم جایی تاثیر گذار هست یا که خیر.
در دکمه Next شما تغییراتی رو لحاظ کردید که تاثیر گذار هست. وقتی کاربر روی دکمه بعدی کلیک میکنه شما میاید مقادیر متغیرهای صحیح، بی پاسخ و غلط رو 0 می کنید. خوب این کار یعنی چی؟ ما که نباید مقادیر این متغیرها رو از بین ببریم.
یه بار دیگه ویدئوی 10 و بخش کدنویسی دکمه next رو با کدهای خودتون مقایسه کنید.
موفق باشید.
:گریه:
این کدهای فرم آزمون. بررسی کنید ببینید کجا رو اشتباه نوشتید :نقل قول:
کدهایی که باعث میشد مقدار متغییر های صحیح، بی پاسخ و غلط صفر بشه رو برداشتم، ولی متاسفانه :ناراحت: هنوز هم جواب صحیح رو بهم نمیده!
ضمیمه 112330
ضمیمه 112331
ضمیمه 112329
با سلام به جناب ونیز 2008 و تشکر از زحماتشون
من پیشنهاد میدم اگه قراره کدی رو هم بذارین عکس از اون قطعه کد بذارین تادوستان حداقل یکبار کد رو تایپ کنند قطعا بعدها از این کار نتیجه بهتری خواهند گرفت
موفق باشی
با زدن دکمه بعدی nullException میده!!!
چند بارم فیلم رو دیدم نمیدونم مشکل از کجاست این سورس صفحه آزمون:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace MyAzmoon
{
public partial class frmExam : Form
{
int num = 0;
public int myTime = 0;
DataTable dt;
int k = 0;
int sahih, bipasokh, ghalat;
ListBox myList = new ListBox();
SqlConnection con = new SqlConnection("server = (local);DataBase = DBAzmoon;Integrated Security = True");
public frmExam()
{
InitializeComponent();
}
//this method uncheck all of radio button in a parent ex:groupBox1
public void UncheckedRadioButton(Control parent)
{
foreach (Control ctrl in Parent.Controls)
{
if(object.ReferenceEquals(ctrl.GetType() , typeof(RadioButton)))
{
((RadioButton )ctrl).Checked = false;
}
}
}
private void label1_Click(object sender, EventArgs e)
{
}
private void frmExam_Load(object sender, EventArgs e)
{
SqlDataAdapter da = new SqlDataAdapter("SelectAllGroup", con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
DataTable dt = new DataTable();
da.Fill(dt);
cmbGroup.DataSource = dt;
cmbGroup.DisplayMember = "GroupName";
cmbGroup.ValueMember = "GroupID";
//
UncheckedRadioButton(groupBox2);
}
private void btnShow_Click(object sender, EventArgs e)
{
if (string.IsNullOrWhiteSpace(textBoxQuestionNumber.T ext))
{
errorProvider1.SetError(textBoxQuestionNumber, "تعداد سوالات را وارد نمایید");
}
else if (string.IsNullOrWhiteSpace(cmbGroup.Text))
{
errorProvider1.SetError(cmbGroup, "گروه امتحانی بایستی وارد شود");
}
else
{
errorProvider1.SetError(textBoxQuestionNumber, "");
SqlCommand cmd = new SqlCommand("CheckQuestionNumber", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@groupid", cmbGroup.SelectedValue);
cmd.Parameters.AddWithValue("@questionnumber", textBoxQuestionNumber.Text);
cmd.Parameters.Add("@result", SqlDbType.Int);
cmd.Parameters["@result"].Direction = ParameterDirection.Output;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
int res = Convert.ToInt32(cmd.Parameters["@result"].Value);
if (res == 0)
{
MessageBox.Show("تعداد سوالات موجود در بانک اطلاعاتی از تعداد سوالات مد نظر کمتر است");
}
else if(res==1)
{
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
dt = new DataTable();
da.Fill(dt);
//
ListBox myListResult = new ListBox();
while (myListResult.Items.Count < Convert.ToInt32(textBoxQuestionNumber.Text.Trim()) )
{
//یک عدد رندوم بر اساس تعداد سوالاتی که از دیتابیس واکشی شده تولید میکند
Random rand = new Random();
num = rand.Next(Convert.ToInt32(dt.Rows[0][0].ToString()),Convert.ToInt32(dt.Rows[dt.Rows.Count-1][0].ToString()));
//به تعداد سوالات موجود در دیتا تیبل چک میکنیم
for (int i = 0; i < dt.Rows.Count; i++)
{
// که آیا عدد رندوم تولیدی درون دیتا تیبل موجود هست و معتبر می باشد
if (num == Convert.ToInt32(dt.Rows[i][0].ToString()))
{
//اگر لیست باکس خالی بود که عدد رو اضافه کن
if (myListResult.Items.Count == 0)
myListResult.Items.Add(num);
//اگر نبود
else
{
//به تعداد اعضای لیست باکس چک میکنیم
for (int j = 0; j < myListResult.Items.Count; j++)
{
//عدد تکراری نباشد اگر بود حلقه را به پایان ببرد
if (num == Convert.ToInt32(myListResult.Items[j]))
j = myListResult.Items.Count;
else
{
//اگر حلقه با آخر رسید عدد تصادفی را داخل لیست باکس قرار بده
if (j == myListResult.Items.Count - 1)
{
myListResult.Items.Add(num);
}
}
}
}
}
}
}//end while
string s = "";
for (int i = 0; i < myListResult.Items.Count; i++)
{
s += myListResult.Items[i] + ",";
}
s = s.Remove(s.Length - 1, 1);
//
da = new SqlDataAdapter("SelectFilterQuestion", con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.AddWithValue("@listQue stionNumber",s);
dt = new DataTable();
da.Fill(dt);
//
if (chkLimitTime.Checked == true)
{
timer1.Start();
lblTimer.Text = (dt.Rows.Count * Properties.Settings.Default.QuestionTime).ToString ();
}
if (chkLimitTime.Checked == false)
{
timer1.Stop();
lblTimer.ResetText();
}
k = 0;
lblQuestion.Text = dt.Rows[0]["QuestionText"].ToString();
RdbCase1.Text = dt.Rows[0]["Case1"].ToString();
RdbCase2.Text = dt.Rows[0]["Case2"].ToString();
RdbCase3.Text = dt.Rows[0]["Case3"].ToString();
RdbCase4.Text = dt.Rows[0]["Case4"].ToString();
for (int i = 0; i < dt.Rows.Count; i++)
{
myList.Items.Add(0);
}
}
}
}
private void timer1_Tick(object sender, EventArgs e)
{
myTime = Convert.ToInt32(lblTimer.Text);
myTime--;
lblTimer.Text = myTime.ToString();
if (myTime == 0)
{
timer1.Stop();
}
}
private void btnNext_Click(object sender, EventArgs e)
{
if(!RdbCase1.Checked && !RdbCase2.Checked && ! RdbCase3.Checked && !RdbCase4.Checked)
{
myList.Items[k] = 0;
}
else if (RdbCase1.Checked)
{
myList.Items[k] = 1;
}
else if (RdbCase2.Checked)
{
myList.Items[k] = 2;
}
else if (RdbCase3.Checked)
{
myList.Items[k] = 3;
}
else if(RdbCase4.Checked)
{
myList.Items[k] = 4;
}
if (k == dt.Rows.Count-1)
{
for(int i = 0; i<dt.Rows.Count; i++)
{
if (Convert.ToInt32(myList.Items[i].ToString()) == Convert.ToInt32(dt.Rows[i]["Answer"].ToString()))
{
sahih++;
}
else if (Convert.ToInt32(myList.Items[i].ToString()) != Convert.ToInt32(dt.Rows[i]["Answer"].ToString()))
{
ghalat++;
}
else
{
bipasokh++;
}
}
}
else
{
k++;
lblQuestion.Text = dt.Rows[k]["QuestionText"].ToString();
RdbCase1.Text = dt.Rows[k]["Case1"].ToString();
RdbCase2.Text = dt.Rows[k]["Case2"].ToString();
RdbCase3.Text = dt.Rows[k]["Case3"].ToString();
RdbCase4.Text = dt.Rows[k]["Case4"].ToString();
UncheckedRadioButton(groupBox2);
}
}
}
}
به حلقه ی foreach خطا میگیره همونجایی که متدی برای غیرفعال کردن چکباکس ها نوشتید::متفکر:
Object reference not set to an instance of an object.!!!!!
برای اینکه parent رو با P نوشتید.باید با p مینوشتید.
با سلام
چگونه می توانیم به ترتیب سوالهای غلط و صحیح و بی پاسخ را در فرم دیگر نمایش دهیم
سلام.
توی آموزش هم ما همین کار رو انجام دادیم.
با استفاده از سه متغیر static و البته public ، در فرم مقصد به مقدار این سه متغیر دسترسی پیدا کردیم.
شاید هم منظورتون، نمایش خود سوالات هست!. اینکه کدوم سوال رو اشتباه زده و کدوم رو درست.
اگر جواب شما، چیزی خارج از محدوده آموزش هست، لطفا بصورت کامل سوالتون رو مطرح کنید تا پاسخگو باشم ولی چیزی که من از سوالتون متوجه شدم دقیقا داخل آموزش وجود داره.
برای این کار دیتاتیبل سوالات رو بصورت public static تعریف کنید.
بعد از اینکه کاربر جواب همه سوالات رو داد یک ستون به دیتاتیبل اضافه کنید. مثلا ستون result :
dt.Columns.Add("result");
حالا، با یک حلقه for که به تعداد سطرهای دیتاتیبل (تعداد سوالات) هست بین جواب صحیح سوال (فیلد Answer) و جوابی که کاربر داده (همون MyListAnswer) یک مقایسه انجام بدید. اگر با هم برابر بودن مثلا عبارت "صحیح" رو به ستون result اضافه کنید.
dt.Columns.Add("result");
for (int i = 0; i < dt.Rows.Count; i++)
{
if (Convert.ToInt32(mylistanswer.Items[i]) == Convert.ToInt32(dt.Rows[i]["Answer"].ToString()))
{
sahih++;
dt.Rows[i]["result"] = "صحیح";
}
else if (Convert.ToInt32(mylistanswer.Items[i]) == 0)
{
bipasokh++;
dt.Rows[i]["result"] = "بی پاسخ";
}
else if (Convert.ToInt32(mylistanswer.Items[i]) != Convert.ToInt32(dt.Rows[i]["Answer"].ToString()))
{
ghalat++;
dt.Rows[i]["result"] = "اشتباه";
}
}
حالا در فرم مقصد، همونطوری که به متغیرها دسترسی داریم می تونید به دیتاتیبل هم دسترسی داشته باشید.
با سلام
جسارتا میتونم بپرسم چرا برنامه با EF و Linq نوشته نشده؟
یعنی شما دیگران رو تشویق مکینید که از Ado.net و Sp ها استفاده کنند؟
در صورت عدم تمایل میتونید پاسخ ندید
با تشکر
سلام دوستان.
با عذر خواهی از مدیریت تالار بخاطر این پست فاقد محتوا.
این چند وقت شرایط به گونه ای رقم خورده که به این نتیجه رسیدم که مدتی در خدمت دوستان نباشم و در تالار فعالیت نداشته باشم.
امیدوارم در غیاب من،دوست عزیزم جناب FastCode و جناب esafb52 به پرسش های دوستان پاسخ بدن بلکه گره ای از مشکل یه شخص باز بشه.
شاد و موفق و سربلند باشید.
با سلام خدمت دوستان
من از اس کیول 2000 استفاده کردم ولی به یک مشکل برخوردم لطفا راهنمایی کنید.
create proc CheckQuestionNumber1
@groupid int,
@questionnumber int,
@result int output
as
declare @totalQuestion int
select @totalQuestion=count(*) from TblQuestion
where GroupId=@groupid
if(@questionnumber>@totalQuestion)
set @result=0
else
begin
set @result=1
select Top '@questionnumber' * FROM TblQuestion
where GroupId=@groupid
order by newid()
end
ارور:
Server: Msg 170, Level 15, State 1, Procedure CheckQuestionNumber1, Line 15https://barnamenevis.org/image/png;ba...AASUVORK5CYII=
Line 15: Incorrect syntax near '@questionnumber'.
با سلام و ابتدا کسب اجازه از استادو دوست عزیز ونیز2008 و سلام به شما دوست عزیز دستور تاپ رو فکر کنم اشتباه نوشتی و باید پرانتز میگذاشتین به هرحال من این کوئری رو برات میذارم
USE [DBAZMOON]
GO
/****** Object: StoredProcedure [dbo].[CHECKquestonCount] Script Date: 11/07/2013 11:23:36 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[CHECKquestonCount]
@groupid INT ,
@questioncount INT ,
@result INT OUTPUT
AS
DECLARE @totoalquestion INT
SELECT @totoalquestion = COUNT (*) FROM TBLQUSETION WHERE GROUPID=@groupid
IF (@questioncount > @totoalquestion)
BEGIN
SET
@result=0
END
ELSE
BEGIN
set @result=1
SELECT TOP(@questioncount) * FROM TBLQUSETION WHERE GROUPID=@groupid
ORDER BY NEWID()
END
RETURN
مشکل پرانتز نگذاشتن نیست
مشکل گذاشتن دو تا single quote (') هست
سلام
با دستور TOP(@questioncount) باز ارور زیر رو میده.
Incorrect syntax near '('.
سلام
شرمنده باز ارور میده
Incorrect syntax near '('.
سلام.
پرانتز ها رو بردارید و جاشون فاصله بزارید
سلام
من قسمت بکاپ گیری را طبق فیلم آموزشی پیش رفتم و در ویندوز 7 با VS 2010 و sqlserver 2008 کار می کنم در ضمن ویندوز را در درایو D نصب کرده ام بعد از اجرای فرم بکاپ یک پوشه روی دسکتاپ به نام test backup ساختم و نامی که برای فایل بکاپ انتخاب کردم back1 گذاشتم و سپس بر روی باتن پشتیبان گیری کلیک کردم تا عملیات پشتیبان گیری شروع شود ولی ارور زیر را داد در ضمن در درایو های دیگر مشکلی با پشتیبان گیری نداشتم
سلام
با فاصله هم درست نشد همشونو امتحان کردم نمی دونم دیگه چجوری درست میشه..
علتش اینه که کاربر SQL به پوشه شخصی کاربر دسترسی نداره.
یا engine رو یا کاربر سیستم اجرا کنید یا دسترسی پوشتون رو باز کنید.
برای اولی باید از SQL Server configuration manager یا Service Manager استفاده کنید.
برای دومی باید در مشخصات پوشه در قسمت دسترسی سطح دسترسی کاربر SQL یا System users یا Authenticated users یا everyone رو باز کنید.
پ.ن.:شاید یکی دو تا از اسم ها رو اشتباه نوشته باشم.خیلی وقته که از این کارها نکردم.
دوست عزیز این برنامه رو از کجا دانلود کنم
بفرما دوست عزیز
http://www.softgozar.com/WebPage/Dow...2013.1.8.2.372
سلام.
در ویدئوی اول بن دقایق 40 تا 42 یک مطلب رو به اشتباه اعلام کرده بودم که ضمن پوزش از دوستان مطلب صحیح رو اعلام میکنم.
در اونجا گفته شده بود که در محیط ویژوال استودیو، در خط آخر stored procedure به جای کلمه go بایستی از کلمه return استفاده کرد که در واقع این مورد صحیح نیست و سبک stored procedure نوشتن در هر دو محیط یکسان هست.
توضیح اضافه اینکه :
return اساسا برای اطلاع از اجرای موفقیت آمیز یا عدم اجرای موفقیت آمیز SP استفاده میشه که یک مقدار با خودش بر میگردونه. مقدار 0 به معنای موفقیت و 1- به معنای عدم موفقیت هست البته این اعداد قراردادی هست.
نکته بعدی اینکه به محض اینکه return در SP اجرا میشه کار اون هم تمام خواهد شد.(یعنی اگر قطعه کدی بعد از Return وجود داشته باشه دیگه اجرا نخواهد شد).
به عبارتی return رو هر جایی از پروسیجر می تونیم بگذاریم.
پس چه در Express و چه در غیر اون این دستور فرقی نداره و نحوه نوشتن sp یکسان هست.
موفق باشید.
در ویدئو یک عدد menuStrip در صفحه اصلی گذاشته شد و منو فقط در همان صفحه قابل مشاهده بود آیا این امکان وجود دارد که منو در تمام صفحات قابل مشاهده باشد
در مورد حرف دوست خوبمون esafb52 نباید و بحث هایی که شده سورس کد را در اختیار مبتدی ها گذاشت اما مبتدی ها اگه میخوان پیشرفت کنن خودشان دانلود نکنن این بنظر من بهتره چون هیچ کسی تا میتونه به ضرر خودش کار نمیکنه
واقعا نمیدونم چطوری تشکر کنم از این ویدئوهاتون واقعا نمیدونم ها یعنی اصلا زبان نمیتونه بیان کنه
من 16 ویدئو رو دو شبه دیدم و برای بار دوم هست دارم میبینم واقعا نکات عالی توشون هست
یک سوال : برای شبکه کردن از همین راهی که فرمودید این از طریق شبکه داخلی بود برای نت هم همین وضعه درسته فرقش اینه بجای اون آی پی مثلا آی پی ولید که خریداری شده ست میشه روش درسته ؟
سوالم اینجاست شاید البته به مفاهیم شبکه برگرده ولی آی پی که ولید هست و میخریم و روی سرور ست میکنیم در شبکه داخلی هم سرور از طریق همون آی پی در دسترس خواهد بود ؟ یا برای اینکه یک نرم افزار در شبکه داخلی و خارجی کار کنه باید از دو رنج آی پی استفاده کرد ؟ چون اونطور که من میدونم آی پی ولید که میخری خوده سرویس دهنده وب رو سیستمش برات کانفیگ میکنه پس عملا سرور ما اون آی پی رو نداره پس اگر نرم افزاری رو روی اون ست کنی و اینترنت قطع بشه ولی نرم افزار از طریق شبکه داخلی به سرور دسترسی داشته باشه اون موقع چی ؟
جست وجو کنید:Port forwarding
Edit:ببخشید اشتبها یک چیز دیگه نوشته بودم که دیر متوجه شدم که ویرایش نشده.
سلام
ضمن تشکر و قدر دانی ازveniz2008 بخاطر آموزشهای مفید و کاربردی ویدویی که در این بخش قرار دادید
کاربر مبتدی هستم، در بخش اول آموزش قسمت اتصال به دیتابیس زمانی که در ویژوال برنامه را اجرا نمودم و فیلد را پر کردم هنگامی که دکمه ثبت را می زنم ،در بخش کدنویسی خط con.Open را به حالت زرد رنگ در می اورد
کد نوشته شده:
{
errorProvider1.SetError(textname, "نام را حتماوارد کنید");
}
else
{
//errorProviderجهت خالی نمودن
errorProvider1.SetError(textname, "");
//اتصال به دیتابیس
SqlConnection con = new SqlConnection("server = .\\REZA; DataBase = DBestelam;integrated security = true");
//ارتباط با نام استرو پروسجر دیتابیس
SqlCommand cmd = new SqlCommand("sabt", con);
cmd.CommandType = CommandType.StoredProcedure;
//قرار دادن تکست نام ویژوال برروی فیلد نام دیتابیس
cmd.Parameters.AddWithValue("@name", textname.Text);
con.Open();
//اجرا شدن دستور دیتابیس
cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("با موفقیت ثبت و دخیره شد");
}
دوست عزیز اشکال از رشته اتصال به سرورت هست اون رو باید درست وارد کنی
دوست گرامی ممنون از جوابتون اگه میشه یکم بیشتر توضیح بدین
دوست عزیز خطای شما میگه آدرس سرور رو اشتباه نوشتین باید اون رو اصلاح کنیین شما از چه نسخه sql استفاده میکنین
sql2088-R2
همان اسمی که موقع کانکت اسکول می زنیم وارد کردم ولی قبول نمی کنه
آدرس دقیق سرور رو چطور می تونم ببینم
با سلام ما اگر دیتابیس خود رو بروی سرور ساخته اید مطابق با آموزش ها پس این مکراحل رو انجام بدین
1-از سربرگ دیتا add new data source
2-همون گزینه دیتابیس رو نکس بزنید
3-باز یک نکس(دیتاست انتخاب شده)
4-بعد گزینه new connection
5- بعد هم microsoft sql server
6-بعد در تکس باکس دومی کلیک کن تا اسم سرور نمایش داده بشه
7-و از قسمت پایین اسم دیتابیست رو انتخاب کن بعدش اوکی و در قسمت پایین میبینی که رشته اتصال ساخته شده فقط کافیه کپی و پیست بشه
موفق باشی
سلام
موقع ریستور کردن با ارور زیر برخورد می کنم علتش چی می تونه باشه.
User must be in the master database.
ALTER DATABASE statement failed.
Exclusive access could not be obtained because the database is in use.
RESTORE DATABASE is terminating abnormally.
User must be in the master database.
ALTER DATABASE statement failed.
قبل از restore با دستور USE [MASTER] دیتابیستون رو عوض کنید.
دوست عزیز
کجا و چجوری باید عوض کنم؟
قبل از اجرای دستور restore باید این دستور رو اجرا کنید.
دوست عزیز ببخشد دستور رو اضافه کردم ولی نشد ببین درست نوشتم؟
create proc MyRestor
@pathFile nvarchar(400)
as
Alter DataBase DBAzmoon set Offline with rollback IMMEDIATE
use [DBAzmoon]
restore DataBase DBAzmoon From disk = @pathFile with replace
alter DataBase DBAzmoon set online
GO
ارور
Server: Msg 154, Level 15, State 1, Procedure MyRestor1, Line 5
a USE database statement is not allowed in a procedure or trigger.
گفتم قبل از دستور نه وسطش
شرمنده دوست عزیز من هر جا که دستور رو میزارم ارور میده لطف می کنید دقیق بگید کجاش بنویسم.
create proc MyRestor1
@pathFile nvarchar(400)
as
use [DBAzmoon]
Alter DataBase DBAzmoon set Offline with rollback IMMEDIATE
restore DataBase DBAzmoon From disk = @pathFile with replace
alter DataBase DBAzmoon set online
GO
اوله اوله اول.
این پراسیجر باید توی دیتابیس مستر ایجاد بشه.
چرا نوشتید USE DBAzmoon?باید بنویسید USE MASTER
خب یعنی پراسیجر تو دیتابیس مستر ایجاد کنم یه مشکل پیش میاد که موقع ریستور کردن باید نام دیتابیس کانکشن رو به مستر تغییر بدم؟
بعد یه سوال داشتم یا بهترین روش برای برنامه نویسی بانک اطلاعاتی همین روش می باشد یعنی از طریق پراسیجرها عملیات انجام بگیره یا نه کدهای دیتابیس رو در سی شارپ بنویسیم و در بانک اطلاعاتی فقط دیتاتیبل ایجاد کنیم؟
سوال اول که جوابش مثبته.
در مورد سوال دوم باید بگم یک مقدار سلیقه ایه.البته در مقیاس بالا این انتخاب تفاوت بسیار زیادی در سرعت ایجاد میکنه که با مطالعه در مورد اینکه SQL چطوری SP ها رو کامپایل میکنه و چه تصمیمگیریهایی موقع compile کردن SP و query معمولی توسط MSSQL گرفته میشه میتونید برای هر query این انتخاب رو درست انجام بدید.من خودم به دلایل دیگه مثل interoperability با دیتابیس های دیگه و cross-platform و cross-database بودن برنامه هام همیشه محاسبات رو در برنامه انجام میدم و کلا از sql استفاده نمیکنم.شما هم بهتره فعلا با توجه به نیازتون و راحتی کد نویسی این انتخاب رو انجام بدین.بعدا که تعداد سطرهای پروژه هاتون مقیاس میلیونی و میلیاردی گرفت زمان و داده آزمایشی کافی برای تصمیمگیری خواهید داشت.