در اين بخش مي‌توانيد به مباحث مربوط به انواع زبان هاي برنامه نويسي بپردازيد

New Member



نماد کاربر
پست ها

17

تشکر کرده: 0 مرتبه
تشکر شده: 0 مرتبه
تاريخ عضويت

پنج شنبه 11 مرداد 1386 16:00

آرشيو سپاس: 0 مرتبه در 0 پست

کي ميدونه اين پيغام خطا واسه چيه؟

توسط mehdi.kh » دوشنبه 15 مرداد 1386 01:14

سلام دوستان
من می خوام که یه سری اطلاعات که داخل یه فرم توسط کاربر وارد می شه رو تو بانک اطلاعاتی ذخیره کنم . ولی با پیغام زیر روبرو می شم.

Line 1: Incorrect syntax near 'Name'.

لطفا اگه کسی از شما می تونه منو راهنمایی کنه . ممنون می شم.

New Member



نماد کاربر
پست ها

17

تشکر کرده: 0 مرتبه
تشکر شده: 0 مرتبه
تاريخ عضويت

پنج شنبه 11 مرداد 1386 16:00

آرشيو سپاس: 0 مرتبه در 0 پست

توسط mehdi.kh » دوشنبه 15 مرداد 1386 01:17

راستي اينم کد برنامه اي که نوشتم(البته قسمت مربوط به ذخيره کردنش)
    public partial class frmcustomer : Form
    {
        // declear variables
        private string strfilename;
        //constant string
        private const string _commandtext =
            "SELECT CustomerID, Name, Fname, FatherName, MelliNumber, Addres, PostalCode," +
            "HomePhone, PhotoPath, Description FROM tbCustomer ORDER BY CustomerID";
        private const string _connectionstring =
            "Data Source=localhost;Initial Catalog=Book;Integrated Security=True";
        //declear global objects ...
        SqlConnection customerConnection;
        SqlDataAdapter customerDataAdapter;
        DataSet customerDataSet;
        DataView customerDataView;
        CurrencyManager customerCurrencyManager;
        private void FillDataSetAndView()
        {
            //initialize a new instance of the dataset customer ...
            customerDataSet = new DataSet();

            //fill the dataset customer with data ...
            customerDataAdapter.Fill(customerDataSet, "tbCustomer");

            //set the dataview customer to the dataset customer ...
            customerDataView = new DataView(customerDataSet.Tables["tbCustomer"]);

            //set our currencymanager customer to the dataview customer ...
            customerCurrencyManager = (CurrencyManager)(this.BindingContext[customerDataView]);
        }

        private void BindFields()
        {
            //clear any previous bindings ...
            txtname.DataBindings.Clear();
            txtfname.DataBindings.Clear();
            txtfathername.DataBindings.Clear();
            txtbrithdate.DataBindings.Clear();
            txtaddres.DataBindings.Clear();
            txtdiscription.DataBindings.Clear();
            txtmellicode.DataBindings.Clear();
            txtpicaddress.DataBindings.Clear();
            txtpostalcode.DataBindings.Clear();
            txttellnumber.DataBindings.Clear();

            //add new bindings to the dataview customer ...
            txtname.DataBindings.Add("Text", customerDataView, "Name");
            txtfname.DataBindings.Add("Text", customerDataView, "Fname");
            txtfathername.DataBindings.Add("Text", customerDataView, "FatherName");
            txtmellicode.DataBindings.Add("Text", customerDataView, "MelliNumber");
            txtaddres.DataBindings.Add("Text", customerDataView, "Addres");
            txtpostalcode.DataBindings.Add("Text", customerDataView, "PostalCode");
            txttellnumber.DataBindings.Add("Text", customerDataView, "HomePhone");
            txtpicaddress.DataBindings.Add("Text", customerDataView, "PhotoPath");
            txtdiscription.DataBindings.Add("Text", customerDataView, "Description");

            //display a ready status ...
            toolStripStatusLabel1.Text = "در حال خواندن";
        }
        private void ClearFields()
        {
            //clear the customer fields ...
            txtname.Text = "";
            txtfname.Text = "";
            txtfathername.Text = "";
            txtmellicode.Text = "";
            txtaddres.Text = "";
            txtpostalcode.Text = "";
            txttellnumber.Text = "";
            txtbrithdate.Text = "";
            txtpicaddress.Text = "";
            txtdiscription.Text = "";
            Photo.Image = bookpro.Properties.Resources.noimage;
            txtname.Focus();
            toolStripStatusLabel1.Text = "در حال خواندن";
        }


        public frmcustomer()
        {
            InitializeComponent();
        }
private void frmcustomer_Load(object sender, EventArgs e)
        {
            customerConnection = new SqlConnection(_connectionstring);
            customerDataAdapter = new SqlDataAdapter(_commandtext, customerConnection);
            //fill the dataset and bind the fields ...
            FillDataSetAndView();
            BindFields();


        }

        private void btnsave_Click(object sender, EventArgs e)
        {
            int intposition, intmax = 0;

            //declear local variables and object ...
            SqlCommand customercommand = new SqlCommand();

            // save the current record position ...
            intposition = customerCurrencyManager.Position;

            // create a new sqlcommand object ...
            SqlCommand maxidCommand = new SqlCommand("SELECT MAX(CustomerID)" +
                "FROM tbCustomer", customerConnection);

            //open the connection , execute the command
            customerConnection.Open();
            object maxid = maxidCommand.ExecuteScalar();

            // if the maxid clolumn is null ...
            if (maxid == DBNull.Value)
            {
                // set a default value of 1000 ...
                intmax = 1;
            }
            else
            {
                //increment the value ...
                intmax = (int.Parse((maxid).ToString())) + 1;
            }
            // set the sqlcommand object properties ...
            customercommand.Connection = customerConnection;
            customercommand.CommandText = "INSERT INTO tbCustomer " +
                "Name,Fname,FatherName,MelliNumber,Addres,PostalCode," +
                "HomePhone,PhotoPath,Description) " +
                "VALUES (@Name,@Fname,@FatherName,@MelliNumber,@Addres,@PostalCode," +
                "@HomePhone,@PhotoPath,@Description)";

            // add parameters for the placeholders in the sql in the command text property...            
            customercommand.Parameters.AddWithValue("@Name", txtname.Text);
            customercommand.Parameters.AddWithValue("@Fname", txtfname.Text);
            customercommand.Parameters.AddWithValue("@FatherName", txtfathername.Text);
            customercommand.Parameters.AddWithValue("@MelliNumber", txtmellicode.Text).DbType = DbType.Int32;
            customercommand.Parameters.AddWithValue("@Addres", txtaddres.Text);
            customercommand.Parameters.AddWithValue("@PostalCode", txtpostalcode.Text);
            customercommand.Parameters.AddWithValue("@HomePhone", txttellnumber.Text);
            customercommand.Parameters.AddWithValue("@PhotoPath", txtpicaddress.Text);
            customercommand.Parameters.AddWithValue("@Description", txtdiscription.Text);

            // execute the sqlcommand object
            // to insert the new data ...
            try
            {
                customercommand.ExecuteNonQuery();
            }
            catch (SqlException sqlExceptionErr)
            {
                MessageBox.Show(sqlExceptionErr.Message);
                throw sqlExceptionErr;
            }

            //close the connection ...
            customerConnection.Close();

            // fill the dataset and bind the filds ...
            FillDataSetAndView();
            BindFields();

            // set the record position to the one that you saved ...
            customerCurrencyManager.Position = intposition;

            // display a message that the record was added ...
            toolStripStatusLabel1.Text = "رکورد اضافه شد";
        }

New Member



نماد کاربر
پست ها

17

تشکر کرده: 0 مرتبه
تشکر شده: 0 مرتبه
تاريخ عضويت

پنج شنبه 11 مرداد 1386 16:00

آرشيو سپاس: 0 مرتبه در 0 پست

توسط mehdi.kh » دوشنبه 15 مرداد 1386 01:25

يه سوال ديگه هم داشتم و اون اينه که:
من تو بانک اطلاعاتي برنامه يکسري داده به زبان فارسي وارد کرده ام ولي برنامه قادر به خواندن اونا نيست مثلا در فرم ورود برنامه داده هاي ثبت شده به زبان انگليسي در بانک اطلاعاتي بدون هيچ مشکلي خونده مي شن ولي داده هاي فارسي اصلا در دسترس نيستن(خونده نمي شن) و پيغام خطايي رو که خودم واسه زماني که نام کاربري و رمز عبور با هم نخونن رو نمايش مي ده.
اساتيد محترم اگه ممکنه يه جوابي هم به اين سوال بديد.
با تشکر
فعلا امضا ندارم

New Member



نماد کاربر
پست ها

17

تشکر کرده: 0 مرتبه
تشکر شده: 0 مرتبه
تاريخ عضويت

پنج شنبه 11 مرداد 1386 16:00

آرشيو سپاس: 0 مرتبه در 0 پست

توسط mehdi.kh » چهارشنبه 17 مرداد 1386 03:21

کسي نيست به من کمک کنه.
آقا مهدي ، آقا .... پس شما کجاييد. :-(  :sad:
فعلا امضا ندارم

Colonel I

Colonel I



no avatar
پست ها

643

تشکر کرده: 0 مرتبه
تشکر شده: 7 مرتبه
تاريخ عضويت

سه شنبه 19 تیر 1386 13:08

آرشيو سپاس: 1235 مرتبه در 259 پست

توسط Frogfoot » چهارشنبه 17 مرداد 1386 09:00

اون خطای اول که مربوط به کد SQL ایی هست که نوشتید. توضیح ندادید که از چه نوع بانکی استفاده می کنید. می تونید این کد SQL را در محیط ارائه شده توسط اون نرم افزار مدیریت بانک اطلاعاتی اجرا کنید (مثلا در SQL Server می تونید از Query Analyzer استفاده کنید)، و زمانی که کد SQL بدون مشکل اجرا شد، آن را به داخل کد خودتون Copy/Paste کنید. فکر کنم در این مورد باید کلمه Name را داخل [ ] قرار بدید، البته مطوئن نیستم.

در مورد سوال دوم هم باید ابتدا مطمئن بشید که داده های فارسی درست در بانک ذخیره شده اند یا نه؛ مثلا در SQL Server باید از فیلدهای یونیکد استفاده کنید و در زمان ذخیره داده ها هم قبل از متن فارسی ارسال شده، یک حرف n قرار بدید. تنظیمات Regional Settings ویندوز را هم چک کنید که زبان فارسی نصب شده باشه. Charset فونت کنترل هایی که برای نمایش داده ها استفاده میشند را هم چک کنید که روی Arabic باشد.

Administrator

Administrator



نماد کاربر
پست ها

15465

تشکر کرده: 10175 مرتبه
تشکر شده: 3917 مرتبه
تاريخ عضويت

جمعه 7 بهمن 1384 19:51

آرشيو سپاس: 30251 مرتبه در 5981 پست

توسط Mahdi1944 » چهارشنبه 17 مرداد 1386 09:10

mehdi.kh جان
چيزي به نظرم نميرسه، متن خطا بيانگر خطاي نوشتاري هست که من فکر ميکنم به دستورات SQL بايد توجه کنيد، پيشنهاد ميکنم اگر از access استفاده ميکنيد، کد SQL رو در خود اکسس ايجاد کرده و در برنامه استفاده کنيد
براي مشکل فارسي هم قبل تمام رشته‌هاي فارسي n قرار بديد و در تنظيمات Regional&LanguageSettings در تب advance زبان رو براي non-unicode ها farsi انتخاب کنيد، به احتمال زياد مشکل حل خواهد شد
موفق باشيد
زندگي صحنه يکتاي هنرمندي ماست     هرکسي نغمه خود خواند و از صحنه رود
صحنه پيوسته به جاست     خرم آن نغمه که مردم بسپارند به ياد


 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  |  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  |  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  |  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

لطفا سوالات فني را فقط در خود انجمن مطرح بفرماييد، به اين سوالات در PM پاسخ داده نخواهد شد

New Member



نماد کاربر
پست ها

17

تشکر کرده: 0 مرتبه
تشکر شده: 0 مرتبه
تاريخ عضويت

پنج شنبه 11 مرداد 1386 16:00

آرشيو سپاس: 0 مرتبه در 0 پست

توسط mehdi.kh » جمعه 19 مرداد 1386 06:13

با تشکر از شما دوستان
چيزايي که گفتيد امتحان نکردم ولي حتما جواب خواهم داد
در ضمن من از SQL Server استفاده مي کنم
:razz:  :razz:  :razz:  :razz:  :razz:  :razz:  :razz:  :razz:  :razz:  :razz:  :razz:  :razz:  :razz:  :razz:  :razz:  :razz:  :razz:  :razz:
فعلا امضا ندارم

New Member



نماد کاربر
پست ها

17

تشکر کرده: 0 مرتبه
تشکر شده: 0 مرتبه
تاريخ عضويت

پنج شنبه 11 مرداد 1386 16:00

آرشيو سپاس: 0 مرتبه در 0 پست

توسط mehdi.kh » يکشنبه 21 مرداد 1386 01:59

سلام
بازهم از کمک شما ممنون . مشکل اولم حل شد ولي در مورد سوال دوم بازهم مشکل دارم . يه توضيح ديگه مي دم که بحث واضح تر بشه.
من در برنامه خودم يه قسمت واسه بازيابي رمز عبور فراموش شده در نظر گرفتم که يه سري اطلاعات امنيتي رو از کاربر ميگيره و بعد از تطبيق دادن اطلاعات وارد شده با اطلاعات ثبت شده در بانک اطلاعاتي اگه يکي بود رمز عبور رو نشون مي ده در غير اينصورت پيغام خطا ميده.
من واسه اينکار از stores procedure استفاده کردم و اينم بگم که بازيابي اطلاعاتي که انگليسي تو بانک ثبت شده انجام ميشه ولي با فارسي مشکل داره و پيغام خطاي مطابقت نداشتن اطلاعات رو نشون ميده.
اينم کد
CREATE PROCEDURE Recover
@Name nvarchar(20),
@Title nvarchar(30),
@UserName nvarchar(25),
@SecurityCode nvarchar(6 (
AS
SELECT Name,UserName,Password,LastLogin FROM tbEmployee
WHERE tbEmployee.Name=@Name AND tbEmployee.Title=@title AND tbEmployee.UserName=@UserName AND tbEmployee.SecurityCode=@SecurityCode
GO

از همه دوستان ممنون مي شم اگه راهنمايي کنن
فعلا امضا ندارم

Administrator

Administrator



نماد کاربر
پست ها

15465

تشکر کرده: 10175 مرتبه
تشکر شده: 3917 مرتبه
تاريخ عضويت

جمعه 7 بهمن 1384 19:51

آرشيو سپاس: 30251 مرتبه در 5981 پست

توسط Mahdi1944 » يکشنبه 21 مرداد 1386 02:20

mehdi.kh
توصيه ميکنم براي رمز فارسي رو غير فعال کنيد، مخصوصا اگر پسورد با MD5 و امثال اون کد ميشه، با حروف فارسي مشکل پيدا ميکنه، اما به طور کلي اگر در ارسال اطلاعات و يا بازخواني فيلدهاي فارسي مشکل داريد بايد قبل شرو رشته n قرار بديد، البته در اين صورت رشته فارسي مخسوب ميشه، اگر بعد از اين موضوع با انگليسيها مشکل داشتيد بايد به صورت شرطي تعيين کنيد به چه صورت ارسال بشه، اما به طور کلي براي پسوردها بهتره پرهيز کنيد  :-)
زندگي صحنه يکتاي هنرمندي ماست     هرکسي نغمه خود خواند و از صحنه رود
صحنه پيوسته به جاست     خرم آن نغمه که مردم بسپارند به ياد


 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  |  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  |  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  |  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

لطفا سوالات فني را فقط در خود انجمن مطرح بفرماييد، به اين سوالات در PM پاسخ داده نخواهد شد

New Member



نماد کاربر
پست ها

17

تشکر کرده: 0 مرتبه
تشکر شده: 0 مرتبه
تاريخ عضويت

پنج شنبه 11 مرداد 1386 16:00

آرشيو سپاس: 0 مرتبه در 0 پست

توسط mehdi.kh » يکشنبه 21 مرداد 1386 03:45

Mahdi1944 نوشته است:mehdi.kh
توصيه ميکنم براي رمز فارسي رو غير فعال کنيد، مخصوصا اگر پسورد با MD5 و امثال اون کد ميشه، با حروف فارسي مشکل پيدا ميکنه، اما به طور کلي اگر در ارسال اطلاعات و يا بازخواني فيلدهاي فارسي مشکل داريد بايد قبل شرو رشته n قرار بديد، البته در اين صورت رشته فارسي مخسوب ميشه، اگر بعد از اين موضوع با انگليسيها مشکل داشتيد بايد به صورت شرطي تعيين کنيد به چه صورت ارسال بشه، اما به طور کلي براي پسوردها بهتره پرهيز کنيد  :-)


Mahdi1944 جان
اولا ممنون از جوابی که ارسال کردی
بعدشم اینکه باید بگم که در فرم ورود ،برنامه هیچ مشکلی با رمز عبور وارد شده(البته منظورم فاسیه)  نداره و می تونه عملیات تشخیص سازگاری رمز عبور و نام کاربری رو طبق اطلاعات موجود در بانک انجام بده.
راستی چطور میشه رمز عبور فارسی رو غیر فعال کرد اگه یه کم بیشتر توضیح بدید ممنون می شم آخه من یه خورده زیادی تازه کارم :grin:  :-)

Administrator

Administrator



نماد کاربر
پست ها

15465

تشکر کرده: 10175 مرتبه
تشکر شده: 3917 مرتبه
تاريخ عضويت

جمعه 7 بهمن 1384 19:51

آرشيو سپاس: 30251 مرتبه در 5981 پست

توسط Mahdi1944 » يکشنبه 21 مرداد 1386 10:15

mehdi.kh,
فکر ميکنم در قسمت خصوصيات وجود داره اين مورد، اما ميشه از ترفندهايي هم استفاده کرد، که مثلا کاراکترهاي وارد شده، موارد خاصي بودند، پيغام خاصي نمايش بده و عمليات ثبت در ديتابيس رو انجام نده، مثلا کاراکترهاي فارسي رو ليست کنيد و اگر يکي از اونها در رشته وجود داشت، از ثبت اون جلوگيري کنه، در اين صورت فارسي در ديتابيس ثبت نخواهد شد
زندگي صحنه يکتاي هنرمندي ماست     هرکسي نغمه خود خواند و از صحنه رود
صحنه پيوسته به جاست     خرم آن نغمه که مردم بسپارند به ياد


 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  |  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  |  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  |  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

لطفا سوالات فني را فقط در خود انجمن مطرح بفرماييد، به اين سوالات در PM پاسخ داده نخواهد شد

Colonel I

Colonel I



no avatar
پست ها

643

تشکر کرده: 0 مرتبه
تشکر شده: 7 مرتبه
تاريخ عضويت

سه شنبه 19 تیر 1386 13:08

آرشيو سپاس: 1235 مرتبه در 259 پست

توسط Frogfoot » يکشنبه 21 مرداد 1386 15:09

برای سوال دومتان اگر با راهکارهایی که ارائه شد مشکل حل نشد، چک کنید که Coalition بانک اطلاعاتی و فیلدهای شما در SQL Server بر روی Arabic تنظیم شده باشه.

دو نکته را هم اضافه کنم که؛ حرف n در ابتدای رشته به SQL Server میگه که رشته را به صورت یونیکد ذخیره کنه. در این صورت، فرقی نمی کنه که از چه زبانی استفاده کنید، چون یونیکد تمام زبان های زند دنیا را پشتیبانی می کند، پس استفاده از یونیکد مشکلی در کاراکتر های انگلیسی شما بوجود نمی آورد. نکته دوم هم اینکه MD5 هش کد (Hash Code) های غیرقابل برگشت با طول ثابت تولید میکنه، یعنی شما هر متنی با هرحجمی به آن بدهی (چه یک بایت، چه 1 میلیارد بایت)د، یک Hash Code (مثلا 128 بیتی) از آن تولید می کند که منحصر به فرد است. این فرایند برگشت پذیر نیست و شما نمی توانید از روی Hash Code ایجاد شده، دوباره متن مربوطه (در اینجا کلمه رمز) را بازیافت کنید. معمولا در نرم افزارهایی که کلمه رمز را Hash می کنند، کد Hash شده در بانک ذخیره می شود، و اگر کاربر کلمه رمز خود را فراموش کند، رمز قبلی ریست شده و رمز جدیدی توسط سیستم به کاربر داده می شود و از کاربر خواسته می شود که در اولین مراجعه به سیستم، این رمز ساخته شده را با رمز دلخواه خود تعویض کند.

موفق باشید

بعدي

چه کسي حاضر است ؟

کاربران حاضر در اين انجمن: بدون كاربران آنلاين و 1 مهمان