PDA

View Full Version : درخواست یه کد بر برنامم



pure_love
جمعه 28 مهر 1396, 21:49 عصر
سلام بچه ها من یه برنامه نوشتم با سی شارپ و sql2014
این عکس برنامم :
146845


همونطور که تو عکس مشخصه دوتا قسمت دارم ! انبار و ثبت خرید.
برنامم به این طوره که تو انبار یه کالایی ثبت میکنید بعد میرید قسمت ثبت خرید وقتی اسم کالا بزنید مدل و قیمتش از اون جدوله انبار تو دیتابیس میخونه و در تکست باکس خودش میزاره( تو عکس مشخصه)
حالا میخام وقتی تو ثبت خرید کاربر یه کالایی رو ثبت میکنه ، وقتی ثبت شد ، برنامه بره و در قسمت انبار اون کالا تعدادش رو یکی کم کنه !
چجوری این کد بنویسم ؟
تشکر

رامین مرادی
شنبه 29 مهر 1396, 08:28 صبح
خب برای اینکار یه آپدیت نیازه که قبلش تعداد اون کالا رو بدست بیارید بعد منهای تعداد کالای خریداری شده بکنید.و اون فیلد رو ویرایش کنید. که شرط ویرایشش هم کد همون کالاس.
نحوه کد نویسیتون رو ذکر نکردید وگرنه میشد بیشتر راهنمایی کرد. چیزی که گفتم کلیت کاره

pure_love
شنبه 29 مهر 1396, 11:43 صبح
خب برای اینکار یه آپدیت نیازه که قبلش تعداد اون کالا رو بدست بیارید بعد منهای تعداد کالای خریداری شده بکنید.و اون فیلد رو ویرایش کنید. که شرط ویرایشش هم کد همون کالاس.
نحوه کد نویسیتون رو ذکر نکردید وگرنه میشد بیشتر راهنمایی کرد. چیزی که گفتم کلیت کاره

دقیق میدونم اینجوریه راهش !کد هاش که همین کد های ثبت و ویرایش و حذف سی شارپ و sql هست.
بچه ها اگه میشه بگین کدش چیه ؟ چجوری کدش بنویسم که این کار انجام بده؟!

رامین مرادی
شنبه 29 مهر 1396, 11:50 صبح
دقیق میدونم اینجوریه راهش !کد هاش که همین کد های ثبت و ویرایش و حذف سی شارپ و sql هست.
بچه ها اگه میشه بگین کدش چیه ؟ چجوری کدش بنویسم که این کار انجام بده؟!

دوست عزیز منظورم اینه با چه تکنولوژی کد زدین. ado.net یا انتیتی یا با دیتاست.
در ضمن کد ثبتتون رو هم بزارید اینجا

pure_love
شنبه 29 مهر 1396, 12:18 عصر
دوست عزیز منظورم اینه با چه تکنولوژی کد زدین. ado.net یا انتیتی یا با دیتاست.
در ضمن کد ثبتتون رو هم بزارید اینجا

کده ثبتم :

SqlConnection M = new SqlConnection("Data Source=.;Initial Catalog=mobile;Integrated Security=True");

M.Open();

String s1 = string.Format("insert into sabtbuy values('{0}','{1}','{2}','{3}',{4},{5},{6})", textBox1.Text, textBox2.Text, maskedTextBox1.Text, textBox4.Text, textBox5.Text, textBox6.Text, textBox7.Text);

SqlCommand comm = new SqlCommand(s1, M);

comm.ExecuteNonQuery();

MessageBox.Show("فاکتور فروش با موفقیت ثبت شد");
M.Close();

رامین مرادی
شنبه 29 مهر 1396, 12:58 عصر
تقریبا میشه کد زیر. اما یه جورایی نوع کد نویسیتون خوب نیست. اینجوری پیش برید بعدا دچار مشکل شده و کدهاتون درهم و قاطی میشه. حجم کد نویسیتون هم خیلی میره بالا.



SqlConnection M = new SqlConnection("Data Source=.;Initial Catalog=mobile;Integrated Security=True");


M.Open();


String s1 = string.Format("insert into sabtbuy values('{0}','{1}','{2}','{3}',{4},{5},{6})", textBox1.Text, textBox2.Text, maskedTextBox1.Text, textBox4.Text, textBox5.Text, textBox6.Text, textBox7.Text);

SqlCommand comm = new SqlCommand(s1, M);


comm.ExecuteNonQuery();
DataTable dt = new DataTable();
string sql = "select * from Kala where KalaId=" + int.Parse(txtKalaId.text);
SqlDataAdapter Da = new SqlDataAdapter(sql, cn);
dt.Clear();
Da.Fill(dt);
if(dt.Rows.Count>0)
{
int tedad=int.Parse(dt.Rows[0]["Tedad"].ToString());
string sql = "Update Kala set Tedad=" + (tedad-int.Parse(txtTedad.Text)) + " where KalaId=" + int.Parse(txtKalaId.text);
SqlCommand comm1 = new SqlCommand(sql, M);
comm1.ExecuteNonQuery();
}




MessageBox.Show("فاکتور فروش با موفقیت ثبت شد");
M.Close();

pure_love
شنبه 29 مهر 1396, 19:49 عصر
من کد هام اینجوری نوشتم :

string conn = (@"Data Source=.;Initial Catalog=mobile;Integrated Security=True");
SqlConnection M = new SqlConnection("Data Source=.;Initial Catalog=mobile;Integrated Security=True");
M.Open();
var com = new SqlCommand("SELECT tedadkala FROM sabtkala WHERE ID LIKE N'%" + textBox2.Text + "%'", M);
var h = com.ExecuteScalar();
var result = Convert.ToString(Convert.ToInt32(h) - Convert.ToInt32(textBox8.Text));
SqlConnection objsqlconn = new SqlConnection(conn);
objsqlconn.Open();
SqlCommand objcmd = new SqlCommand("Update sabtkala set tedadkala=@tedadkala where ID= " + textBox2.Text, objsqlconn);
objcmd.Parameters.AddWithValue("@tedadkala", result);
objcmd.ExecuteNonQuery();
MessageBox.Show("رکورد شما با موفقیت ویرایش شد", "تاییدیه", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);


اینجا طبق ID درست کار میکنه ولی میخام برنامم طبق نام کالا باشه (namekala اسم یکی از ستون های دیتابیسم ) وقتی namekala میزارم بجای ID :
146852

برنامم کار نمیکنه و پیغام میده :
146853

تو پیغام ( a ) همون نام کالا هست که ازش پیغام میگیره ! انگار نمیتونه پیداش کنه !!!
لطفا بگین چیکارش کنم ؟
مرسی

mz6488
شنبه 29 مهر 1396, 20:47 عصر
سلام.انتهای کوئری باید namekala بین دو تا نیم کوت قرار بگیره

where namekala=' " +textbox1.text+ '' ' "

رامین مرادی
یک شنبه 30 مهر 1396, 08:29 صبح
مهندس جان به نظرم نام کالا کلید مناسبی نیت ها. احتمال تکراری بودنش خیلی خیلی زیاده.بهتره یه فیلد عددی از نوع اتونامبر بزاری تا خطاها و مشکلات اینده رو به راحتی حل کنی.

javad.jaddi
دوشنبه 01 آبان 1396, 07:04 صبح
سلام
باید با پروسیجر این کار رو انجام بدی، خیلی شیک و راحت
با فرض جدول

CREATE TABLE PRODUCT
( PRODUCTID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
PNAME NVARCHAR(50),
PCOUNT INT
)

باید یک پروسیجر به شکل زیر بنویسی و درون برنامت استفاده کنی

CREATE PROCEDURE UP_COUNT_PRODUCT
@COUNT INT,
@ID INT
AS
UPDATE TABLE PRODUCT
SET [PCOUNT]=[PCOUNT]+@COUNT
WHERE [PRODUCTID]=@ID

بعد تو برنامه از پروسیجر بالا استفاده میکنی و هرجا تعداد رو میخوای کم کنی ، متغیر تعداد درون برنامه رو ضرب در -1 میکنی و به پروسیجر ارسال میکنی و هر جا تعداد افزایش داشته(یعنی ورود کالا به انبار) خود متغیر تعداد رو به پروسیجر ارسال میکنی و آی دی کالای مورد نظر رو بهش میدی
موفق باشی