PDA

View Full Version : سوال: اضافه کردن رکورد با رویه ذخیره شده؟



morteza_1234m
پنج شنبه 19 فروردین 1389, 00:27 صبح
سلام دوستان خسته نباشید
من یک رویه ذخیره شده در اس کیو ال دارم که به صورت زیر هست

USE [Bank]
GO
/****** Object: StoredProcedure [dbo].[Insert-Customer-Current] Script Date: 04/08/2010 00:48:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[Insert-Customer-Current]
-- Add the parameters for the stored procedure here
@ShMeli Nvarchar(50),
@ShAccount Nvarchar(50),
@RegisterDate Datetime,
@AccountStore Money,
@Singature binary(50)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
Insert into [Customer-current]([Sh-Meli],[Sh-Account],[Account-Store],Register_Date,Signature)
Values(@ShMeli,@ShAccount,@AccountStore,@RegisterD ate,@Singature)
END

و حالا در کد برنامم به صورت زیر دارم مقدار دهی می کنم

string strcon = "Data Source=.;Initial Catalog=Bank;Integrated Security=True";
SqlConnection con = new SqlConnection(strcon);
con.Open();
SqlCommand sqlCmd = new SqlCommand("Insert-Customer-Current",con);
sqlCmd.Parameters.AddWithValue("[Sh-Account]",txtShAccount.Text).DbType=DbType.String;
sqlCmd.Parameters.AddWithValue("[Sh-Meli]", txtMelliCode.Text).DbType = DbType.String;
//sqlCmd.Parameters.AddWithValue("Register_Date", PersianDateTextBox1.DateValue).DbType = DbType.DateTime;
//sqlCmd.Parameters.AddWithValue("[Account-Store]", txtAccountStore.Text).DbType = DbType.Currency;
sqlCmd.ExecuteNonQuery();
con.Close();

ارور زیر رو میده باید چه کارش کنم


http://barnamenevis.org/forum/attachment.php?attachmentid=46698&stc=1&d=1270671961

morteza_1234m
پنج شنبه 19 فروردین 1389, 00:53 صبح
مشکل تا حدودی حل شد و کد رو در برنامه به صورت زیر در آوردم

string strcon = "Data Source=.;Initial Catalog=Bank;Integrated Security=True";
SqlConnection con = new SqlConnection(strcon);
con.Open();
SqlCommand sqlCmd = new SqlCommand("Insert-Customer-Current",con);
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@ShAccount", txtShAccount.Text);
sqlCmd.Parameters.AddWithValue("@ShMeli", txtMelliCode.Text);
sqlCmd.Parameters.AddWithValue("@RegisterDate", PersianDateTextBox1.DateValue).DbType = DbType.DateTime;
sqlCmd.Parameters.AddWithValue("@AccountStore", txtAccountStore.Text).DbType = DbType.Currency;
sqlCmd.Parameters.AddWithValue("@Singature", a).DbType = DbType.Binary;
sqlCmd.ExecuteNonQuery();
con.Close();

مشکل تا حدودی حل شد ولی حالا قسمتی که باید اطلاعات مربوط به امضا که از نوع باینری هست رو وارد کنم مشکل دارم و من چون می خوام برنامه رو تست کنم فعلا و الان عکسی ندارم که به صورت باینری درش آورده باشم و بریزم تو جدول خودم یک متغیر از نوع بایت تعریف کردم و بهش مقدار دادم که با این که می دونم کارم اشتباه هست و کردم و ارور زیر رو داد
دوستان پیشنهادشون برای کاری که می خوام بکنم چیست
برای این که به نحوه طراحی جدولم اشنا بشید می تونید به رویه ذخیره شده در پست بالا توجه کنید
ممنون میشم کمک کنید
http://barnamenevis.org/forum/attachment.php?attachmentid=46699&stc=1&d=1270673558

programmer2010
پنج شنبه 19 فروردین 1389, 01:03 صبح
a رو که به صورت byte تعریف کردی تبدیلش کن به ارایه.

morteza_1234m
پنج شنبه 19 فروردین 1389, 22:28 عصر
باز هم مشکلم حل نشد
اصل موضوع اینه که من کاری که من می خوام انجام بدم اینه که کاربر یک دکمه در فرم داره که با فشار دادنش دستوری به اسکنر وارد میشه و عکس در دیتابیس در یک جدول به تمپ ذخیره میشه و در یک فرم لود دیگه کدهای زیر تایپ شده

MemoryStream stream = new MemoryStream();
SqlConnection connection = new SqlConnection("Data Source=.;Initial Catalog=Test;Integrated Security=True");
try
{
string str = "select ImgBin from ImgInDb";

connection.Open();
SqlCommand command = new SqlCommand(str, connection);
byte[] image = (byte[])command.ExecuteScalar();
Session["imagebin"] = image;
stream.Write(image, 0, image.Length);
Bitmap bitmap = new Bitmap(stream);
Response.ContentType = "image/gif";

bitmap.RotateFlip(System.Drawing.RotateFlipType.Ro tate90FlipX);

bitmap.Save(Response.OutputStream, ImageFormat.Jpeg);

}
finally
{
connection.Close();
stream.Close();
}


وبه شکل زیر در فرم کنونی به نمایش در می آید

<iframe id="iframe1" frameborder="0" scrolling="yes" src="ShowSingeture.aspx"
runat="server" width="725px"></iframe>

حالا من یک رویه ذخیره شده دارم که کدش در پست اول هست و دستوراتی که برای ذخیره رویه نوشتم
سئوال اینجاست که من چه جوری میتونم امضایی که الان در جدول تمپ هست و هر دفعه فقط میتونه یک امضا رو ذخیره کنه همین امضا رو بخونم و مثل کدهای پست دوم اضافه کنم به دستورات و بفرستم به رویه ذخیره شده ام
فیلدهای جدول تمپ هم اینه

http://barnamenevis.org/forum/attachment.php?attachmentid=46741&stc=1&d=1270751269


امیدوارم که تونسته باشم که منظورم رو برسونم