PDA

View Full Version : سوال: خیلی فوری- ثبت عکس در بانک -



neda_dela
یک شنبه 08 آذر 1388, 22:17 عصر
سلام دوستان
من دو تا فرم دارم که توی هر کدوم هم گرید دارم. گرید فرم 1 به تیبل 1 و گرید فرم 2 به تیبل 2 متصله. یعنی هر کدوم به دو تا تیبل مجزا متصل هستن . منتها این دو تا تیبل یه تعداد فیلد مشترک هم دارند. این فیلدها شامل: کد و نام و نام خانوادگی و آدرس و تلفن و موبایل و همچنین عکس هستن.
من اول از گرید فرم 1 یه رکورد رو انتخاب می کنم و از طریق منوی بالای صفحه به فرم 2 میرم . علت انتخاب رکورد از گرید فرم 1 هم که معلومه دیگه برای اینکه فیلد های مشترک بین این دو تا تیبل به فرم 2 پاس داده بشه.
مقادیر این فیلدها با موفقیت به فرم 2 پاس داده میشه و هر کدوم توی تکست باکس مربوطه قرار می گیره و عکس هم توی پیکچر باکس فرم 2 نشون داده میشه. حالا من مقدار بقیه فیلدها رو تو فرم 2 وارد می کنم و دکمه ثبت رو که می زنم یه خطا میده اما وقتی اوکی می کنم پیغام میده که رکورد با موفقیت ثبت شد و ثبت هم میشه البته بدون عکس. عکس توی بانک ثبت نمیشه.
این کد زمانی هست که از منو به فرم 2 میرم و فیلدهای مشترک پاس داده میشه:


private void ToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count > 0)
{
sabtterm st = new sabtterm();
st.textBox1.Text = dataGridView1.SelectedRows[0].Cells["id"].Value.ToString();
st.textBox2.Text = dataGridView1.SelectedRows[0].Cells["firstname"].Value.ToString();
st.textBox3.Text = dataGridView1.SelectedRows[0].Cells["lastname"].Value.ToString();
st.textBox6.Text = dataGridView1.SelectedRows[0].Cells["address"].Value.ToString();
st.textBox12.Text = dataGridView1.SelectedRows[0].Cells["tel"].Value.ToString();
st.textBox13.Text = dataGridView1.SelectedRows[0].Cells["mobile"].Value.ToString();
st.pictureBox1.Image = Image.FromStream(new MemoryStream((byte[])(dataGridView1.SelectedRows[0].Cells["pic"].Value)));
st.ShowDialog();
}
else
MessageBox.Show("رکورد مربوطه را انتخاب نمایید");
}


و این هم کد دکمه ثبت اطلاعات در فرم 2:


private void button1_Click(object sender, EventArgs e)
{
try
{
this.st_sabtTableAdapter.Fill(this.quranDataSet._s t_sabt);
MemoryStream ms = new MemoryStream();
try
{
pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
}
catch (Exception exc)
{
MessageBox.Show("¢­يï© êëں« ©ں ں뢦ں کëï§");
return;
}
byte[] arrayImage = ms.GetBuffer();
ms.Close();
myConnection.Open();
da.InsertCommand = new SqlCommand();
string query = "insert into [st-sabt](id,firstname,lastname,birthday,pic,tel,mobile,add ress)values(@id,@fname,@lname,@bdate,@i,@tel,@mob, @add)";
SqlCommand cmd = new SqlCommand(query, myConnection);
cmd.Parameters.Add("@id", SqlDbType.BigInt, 8).Value = (textBox1.Text);
cmd.Parameters.Add("@fname", SqlDbType.NVarChar, 50).Value = (textBox2.Text);
cmd.Parameters.Add("@lname", SqlDbType.NVarChar, 50).Value = (textBox3.Text);
cmd.Parameters.Add("@bdate", SqlDbType.Text, 16).Value = (maskedTextBox2.Text);
cmd.Parameters.Add("@i", SqlDbType.Image, 16).Value = arrayImage;
cmd.Parameters.Add("@tel", SqlDbType.NVarChar, 50).Value = (textBox12.Text);
cmd.Parameters.Add("@mob", SqlDbType.NVarChar, 50).Value = (textBox13.Text);
cmd.Parameters.Add("@add", SqlDbType.NVarChar, 50).Value = (textBox6.Text);
cmd.ExecuteNonQuery();
myConnection.Close();
sabtterm_Load(sender, e);
MessageBox.Show("اطلاعات با موفقیت وارد شد");


البته این کد دوم بزرگتره ولی من برای اختصار کوتاهش کردم.
برای دوستانی هم که می خان برنامه رو ببینن لینکش رو می ذارم:
این لینک بانکم:
http://persiandrive.com/863111
این هم برنامه:
http://persiandrive.com/674701
خواهشا بچه ها پای آبرو در میونه

neda_dela
دوشنبه 09 آذر 1388, 12:41 عصر
سلام دوستان

من دو تا فرم دارم که توی هر کدوم هم گرید دارم. گرید فرم 1 به تیبل 1 و گرید فرم 2 به تیبل 2 متصله. یعنی هر کدوم به دو تا تیبل مجزا متصل هستن . منتها این دو تا تیبل یه تعداد فیلد مشترک هم دارند. این فیلدها شامل: کد و نام و نام خانوادگی و آدرس و تلفن و موبایل و همچنین عکس هستن.
من اول از گرید فرم 1 یه رکورد رو انتخاب می کنم و از طریق منوی بالای صفحه به فرم 2 میرم . علت انتخاب رکورد از گرید فرم 1 هم که معلومه دیگه برای اینکه فیلد های مشترک بین این دو تا تیبل به فرم 2 پاس داده بشه.
مقادیر این فیلدها با موفقیت به فرم 2 پاس داده میشه و هر کدوم توی تکست باکس مربوطه قرار می گیره و عکس هم توی پیکچر باکس فرم 2 نشون داده میشه. حالا من مقدار بقیه فیلدها رو تو فرم 2 وارد می کنم و دکمه ثبت رو که می زنم یه خطا میده اما وقتی اوکی می کنم پیغام میده که رکورد با موفقیت ثبت شد و ثبت هم میشه البته بدون عکس. عکس توی بانک ثبت نمیشه.
این کد زمانی هست که از منو به فرم 2 میرم و فیلدهای مشترک پاس داده میشه:


privatevoid ToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count > 0)
{
sabtterm st = newsabtterm();
st.textBox1.Text = dataGridView1.SelectedRows[0].Cells["id"].Value.ToString();
st.textBox2.Text = dataGridView1.SelectedRows[0].Cells["firstname"].Value.ToString();
st.textBox3.Text = dataGridView1.SelectedRows[0].Cells["lastname"].Value.ToString();
st.textBox6.Text = dataGridView1.SelectedRows[0].Cells["address"].Value.ToString();
st.textBox12.Text = dataGridView1.SelectedRows[0].Cells["tel"].Value.ToString();
st.textBox13.Text = dataGridView1.SelectedRows[0].Cells["mobile"].Value.ToString();
st.pictureBox1.Image = Image.FromStream(newMemoryStream((byte[])(dataGridView1.SelectedRows[0].Cells["pic"].Value)));
st.ShowDialog();
}
else
MessageBox.Show("رکورد مربوطه را انتخاب نمایید");
}


و این هم کد دکمه ثبت اطلاعات در فرم 2:


privatevoid button1_Click(object sender, EventArgs e)
{
try
{
this.st_sabtTableAdapter.Fill(this.quranDataSet._s t_sabt);
MemoryStream ms = newMemoryStream();
try
{
pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
}
catch (Exception exc)
{
MessageBox.Show("¢­يï© êëں« ©ں ں뢦ں کëï§");
return;
}
byte[] arrayImage = ms.GetBuffer();
ms.Close();
myConnection.Open();
da.InsertCommand = newSqlCommand();
string query = "insert into [st-sabt](id,firstname,lastname,birthday,pic,tel,mobile,add ress)values(@id,@fname,@lname,@bdate,@i,@tel,@mob, @add)";
SqlCommand cmd = newSqlCommand(query, myConnection);
cmd.Parameters.Add("@id", SqlDbType.BigInt, 8).Value = (textBox1.Text);
cmd.Parameters.Add("@fname", SqlDbType.NVarChar, 50).Value = (textBox2.Text);
cmd.Parameters.Add("@lname", SqlDbType.NVarChar, 50).Value = (textBox3.Text);
cmd.Parameters.Add("@bdate", SqlDbType.Text, 16).Value = (maskedTextBox2.Text);
cmd.Parameters.Add("@i", SqlDbType.Image, 16).Value = arrayImage;
cmd.Parameters.Add("@tel", SqlDbType.NVarChar, 50).Value = (textBox12.Text);
cmd.Parameters.Add("@mob", SqlDbType.NVarChar, 50).Value = (textBox13.Text);
cmd.Parameters.Add("@add", SqlDbType.NVarChar, 50).Value = (textBox6.Text);
cmd.ExecuteNonQuery();
myConnection.Close();
sabtterm_Load(sender, e);
MessageBox.Show("اطلاعات با موفقیت وارد شد");


البته این کد دوم بزرگتره ولی من برای اختصار کوتاهش کردم.
برای دوستانی هم که می خان برنامه رو ببینن لینکش رو می ذارم:
این لینک بانکم:
http://persiandrive.com/863111
این هم برنامه:
http://persiandrive.com/674701

خواهشا بچه ها پای آبرو در میونه

تو رو خدا یکی منو کمک کنه:افسرده::ناراحت::اشتباه:

raha_20
دوشنبه 09 آذر 1388, 13:14 عصر
شما فیلد عکس رو تو بانک اطلاعاتی از چه نوعی در نظر گرفتی؟

sky_in_iran
دوشنبه 09 آذر 1388, 13:54 عصر
سلام دوست عزيز
دستت درد نكنه كد و گذاشتي اما پيغام خطايي كه ميده رو بگو چيه تا بهتر بتونيم كمك كنيم لينكاتم error ميده دسترسي به خود برنامت نداريم تا تست كنيم . لطف كن پيغام خطا رو بزار تا زود اساتيد كمكت كنن
موفق باشي

neda_dela
دوشنبه 09 آذر 1388, 20:07 عصر
شما فیلد عکس رو تو بانک اطلاعاتی از چه نوعی در نظر گرفتی؟
مرسی از توجهت دوست من
از نوع image

neda_dela
دوشنبه 09 آذر 1388, 20:16 عصر
سلام دوست عزيز
دستت درد نكنه كد و گذاشتي اما پيغام خطايي كه ميده رو بگو چيه تا بهتر بتونيم كمك كنيم لينكاتم error ميده دسترسي به خود برنامت نداريم تا تست كنيم . لطف كن پيغام خطا رو بزار تا زود اساتيد كمكت كنن
موفق باشي
مرسی دوست جون
این لینک ها نمی دونم چرا باز نمی شن خودم که می تونم !!!!!!!!!!!
ببین خطاش خیلی بزرگه خودم چیزی ازش سر در نیاوردم. ازش عکس گرفتم ببین لینک عکسش باز می شه
خدا کنه که باز بشه
http://persiandrive.com/786278

neda_dela
سه شنبه 10 آذر 1388, 15:31 عصر
مرسی دوست جون
این لینک ها نمی دونم چرا باز نمی شن خودم که می تونم !!!!!!!!!!!
ببین خطاش خیلی بزرگه خودم چیزی ازش سر در نیاوردم. ازش عکس گرفتم ببین لینک عکسش باز می شه
خدا کنه که باز بشه
http://persiandrive.com/786278
یعنی هیچ کس نیست منو کمک کنه؟؟؟؟؟؟؟؟؟؟؟؟:گریه:
خیلی فوریه یکی جواب سوال منو بده

sky_in_iran
پنج شنبه 12 آذر 1388, 11:45 صبح
دوست عزيز اين كد تبديل عكس به byte وروديش آدرس عكس خروجيشم byte كه نسبت بده به اونجايي كه داري اطلاعات عكس و تو پارامترات تو بانك ميريزي آدرس عكسم از همون picture بخون بفرست ايشالا كه مشكلت حل بشه اگر خدايي نكرده حل نشد كد و بانك تو بزار تا درست كنيم حالا من يا اساتيد محترم بعد برات بفرستيم اگه حجمشم زياد بود خواستي mail كن اينم كد




public byte[] ReadFile(string sPath)
{
try
{
byte[] data = null;
FileInfo fInfo = new FileInfo(sPath);
long numBytes = fInfo.Length;
FileStream fStream = new FileStream(sPath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fStream);
data = br.ReadBytes((int)numBytes);
return data;
}
catch { return null;}
}

5mmmmm
چهارشنبه 25 فروردین 1389, 00:48 صبح
حداقل یه بریک پوینت بگذار و بگو تو کدوم خط خطا میده!!!

raha_20
چهارشنبه 25 فروردین 1389, 01:48 صبح
SqlCommand objsqlcommand = new SqlCommand("InsertMember",con );
//.................................................. ................
objsqlcommand.Parameters.AddWithValue("@m_code", txtCodeOzviat.Text);
objsqlcommand.Parameters.AddWithValue("@m_fnam", txtName.Text);
objsqlcommand.Parameters.AddWithValue("@m_lname", txtFamili.Text);
objsqlcommand.Parameters.AddWithValue("@m_father", txtFather.Text);
objsqlcommand.Parameters.AddWithValue("@m_sh", txtSH.Text);
objsqlcommand.Parameters.AddWithValue("@m_birthday", txtBirthday.Text);
objsqlcommand.Parameters.AddWithValue("@m_gride", txtDegree.Text);
objsqlcommand.Parameters.AddWithValue("@m_ozviat", txtDateOzviat.Text);
objsqlcommand.Parameters.AddWithValue("@m_zamen", txtZamenName.Text);
objsqlcommand.Parameters.AddWithValue("@m_zamentell", txtzamenPhon.Text);
objsqlcommand.Parameters.AddWithValue("@m_adress", txtAddress.Text);
objsqlcommand.Parameters.AddWithValue("@m_tell", txtPhon.Text);
//.................................................. ................

MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
byte[] arrImage = ms.GetBuffer();
ms.Close();
//.................................................. ................
objsqlcommand.CommandType = CommandType.StoredProcedure;
objsqlcommand.Parameters.AddWithValue("@m_pic", arrImage);
// objsqlcommand.Parameters.Add(new SqlParameter("@m_pic", SqlDbType.Binary)).Value = arrImage;
con.Open();
objsqlcommand.ExecuteNonQuery();
objdataset.Clear();
adap.Fill(objdataset , "tbl_member");
con.Close();



این یه نمونه کد که عکس را داخل دیتا بیس ذخیره میکند
فقط دوست عزیز فرمت عکس را داخل بانک اطلاعاتی Image نباید بزاری . باید فرمت را varmaxBinary بگذاری
احتمالا مشکل شما واسه نوع عکس است

milad222
شنبه 15 بهمن 1390, 20:51 عصر
سلام.
من برای ذخیره، جستجو، و نمایش عکس، یه نمونه با SQL و #C نوشتم، که برای اتصال به پایگاه داده از LINQ استفاده می کند.
پایگاه دادش دو تا ستون به اسم های ID و PC داره که کلید اصلیش ID است که Auto Number اون فعاله.
کدش رو در زیر میذارم.

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.Linq;
using System.Data.Linq.Mapping;
using System.IO;
using System.Drawing.Imaging;

namespace t01_SvPc01
{
public partial class Form1 : Form
{
aaDataContext aa = new aaDataContext();
OpenFileDialog Of = new OpenFileDialog();
MemoryStream ms = new MemoryStream();
Image img = null;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
}

private void Btn_Select_Click(object sender, EventArgs e)
{
Of.DefaultExt = "Image File (*.jpg)|*.jpg";
Of.ShowDialog();
if (Of.FileName == string.Empty)
{
return;
}
img = Bitmap.FromFile(Of.FileName);
img.Save(ms, ImageFormat.Jpeg);
PcBx.Image = Image.FromFile(Of.FileName);
}

private void Btn_Close_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void Btn_Find_Click(object sender, EventArgs e)
{
var q1 = from P1 in aa.Tbl_SvPc01s
where P1.ID.ToString() == Txt_Find.Text
select P1;
foreach (var str in q1)
{
ms.Write(str.Pc.ToArray(), 0, str.Pc.Length);
img = Bitmap.FromStream(ms);
PcBx.SizeMode = PictureBoxSizeMode.StretchImage;
PcBx.Image = img;
}
}

private void Btn_Save_Click(object sender, EventArgs e)
{
Tbl_SvPc01 tbl = new Tbl_SvPc01
{
Pc = ms.GetBuffer()
};
aa.Tbl_SvPc01s.InsertOnSubmit(tbl);
aa.SubmitChanges();
MessageBox.Show(i.ToString());
}
}
}