# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > VB.NET > آموزش: نحوه کار با Sql Server 2008 و کد های آن در VB.Net

## behrooz69

با سلام خدمت مدیرای انجمن . خیلی از بچه ها ازم خواستن که اگه می تونم و بلدم بیام یکمی اموزش sql server  و کد هاش تو vb رو بگم . می خواستم با اجازتون این آموزش ها رو شروع کنم . منتظر تاییدتونم که شروع کنم .

----------


## sagggad

> با سلام خدمت مدیرای انجمن . خیلی از بچه ها ازم خواستن که اگه می تونم و بلدم بیام یکمی اموزش sql server  و کد هاش تو vb رو بگم . می خواستم با اجازتون این آموزش ها رو شروع کنم . منتظر تاییدتونم که شروع کنم .


 بهروز جان راست میگن.بعضی از ما SQL Server رو زیاد وارد نیستیم و به راهنمایی نیاز داریم.من هم از مدیران محترم میخوام که اجازه ایجاد این تایپیک در این بخش رو بدن!!! :قلب:  :قلب:  :قلب:

----------


## sagggad

بهروز جان اول ازهمه من مبتدی ترین سوال رو میپرسم:چطور با استفاده از ویژوال بیسیک2008 یه پایگاه داده SQL ایجاد کنم؟؟و
تفاوت SQL Server با Microsoft Access2010 چیه؟؟
هرکس چیزی میدونه تو تایپیک بذاره!! :قلب:

----------


## behrooz69

جواب سوال اولت دوست من شما با VB.net 2008 یا 2010 می تونی بانک sql express بسازی . که من خودم به شخصه پیشنهاد نمی کنم . 
روش ساختشم پروژت رو با عکس می زارم واست .
1 sql express.jpg
2 sql express.jpg
3 sql express.jpg
بهتره که دیتابیستو با خود SQL SERVER  بسازی چون مدیریتش خیلی قوی تر و کنترلت رو دیتابیس خیلی اسون تره و اگه بخوای پروژه سنگین بنویسی SQL SERVER خیلی کنترل هارو می تونی رو دیتابیست انجام بدی که بعدا بهت می گم .

جواب سوال دومت . 
1 ) تو sql server قابلیت ذخیره اسناد و صدا و تصاویر و ویدئو وجود داره.
2) sql server قابلیت متصل شدن با چند سرور و شبکه شدن رو داره.
3) sql server یه دنیاییه واسه خودش که تو pdf ای که اماده کردم ببینی متوجه می شی درباره دیتابیس هاست دوستان.

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

تو پروژه های سنگین و ضعیف در حال حاضر بالای 90 % از بانک SQL SERVER استفاده می کنن چرا ؟ چون مقدار اطالاعاتی که می گیره خیلی بیشتره و فکر کنم چند هزار تا از ACCESS بیشتره و از اونجایی که من از بانک و برنامه نویسی ACESS فقط تو راهنمایی استفاده کردم با VB6 از همون موقع خوشم نمیومد ازش . 

باقی اطلاعات تو pdf هست . 

http://uploadkon.ir/uploads/BehroozDb.pdf

----------


## sagggad

بهروز جان دستت درد نکنه واقعا بدرد بخوربود.می خواستم بگم برای بالا رفتن فهم موضوع ،
آموزش ساخت مثلا دفترچه تلفن باSQL Server رو آموزش پایه ای بده .اینطوری کسایی مثل من که از SQL Server هیچی نمیدونیم هم یاد میگیریم
موفق باشید

----------


## sagggad

آقا بهروز اگه میشه لطف کن بگو چطوری باید Tableساخت و کجا ذخیره میشه؟؟ آیا میشه ان رو در گرید ویو نمایش بدم؟؟و انواع داده های اون جیه؟؟

----------


## behrooz69

سلام . روی Table فلش گذاشتم . روش راست کلیک کن و Create کن . ساخت و مقدار های هر فیلد با Sql server  یکیه در واقع داری از Sql Express  استفاده می کنی همینطور که تو Pdf ام نوشتم فقط موتور Sql engine که در صورت نبودن Sql Server از اون استفاده می کنیم و با ساختنش هم به رسورس پروژت اضافه می شه و هم تو Drive c  تو پوشه Sql Express توی Data هستش و می شه ازش استفاده کرد . و ورژن که vb.net 2010 نصب می کنه Sql Express 2008  هستش .

امیدوارم مفهوممو رسونده باشم .

----------


## behrooz69

خوب دوستان به صورت آزمایشی ما میایم رو برنامه دفترچه تلفن ساده به صورت تستی کار می کنیم که هم همه آشنا بشن هم به درد همه بخوره هم کسی هم اگه خواست می تونه نظر بده تا همه استفاده کنن .

به نام هستی

مرحله اول ساخت دیتابیس با Sql Server 2008

1.jpg

در این مرحله  طبق روی Database راست کلیک کنید . گزینه New Database  رو بزنین . 

2.jpg

نام دیتابیس رو تو کادر بالا بنویسین من از TellDB استفاده کردم . سپس به Option برید و ببینید که کادر مورد نظر تو عمس رو Sql server 2008 (100) باشه . به باقی چیزا دست نزنین و Default باشه و Ok کنین . دیتابیس ما ساخته شد .


تو مرحله بعد می رسیم به ساخت Table مورد نظر برای ثبت اطلاعات .

طبق عکس روی Table راست کلیک کنید و New Table رو بزننین .


4.jpg


فیلد های مورد نظر رو وارد کنید و نوع داده ای اونا رو هم طبق عکس وارد کنید . رو به روی Id تیک Allow Null غیر فعال باشد زیرا اجازه خالی وارد کردن به اون داده نشه و سپس واسه اینکه به صورت صعودی با هر رکورد جدید یک Id بگیره میایم تو کادر پایین روی Identity Specification دابل کلیک کنید تا فعال بشه و Yes بشه و گزینه Is Identity رو هم Yes کنید و زیرش هم مشخص میکنید که از چند شروع بشه به صورت پیش فرض از 1 شروع میشه تا ....


تو این مرحله Id رو به عنوان کلید اصلی در نظر میگیریم که بعدا اگه Table دیکگه اضافه کردیم بتونیم با این کلید به Table دیگه وصل شیم .


8.jpg
تو این مرحله برای ذخیره دیتابیسمون روی دکمه Save کلیک کرده و طبق عکس توی کادر اسم Table خودمون رو مینویسیم و سپس Ok  میکنیم .


تبریک میگم شما هم Database رو ساختید هم Table  مورد نظر رو . 



امیدوارم تا اینجا مفهمومی بوده باشه و راضی باشید در مرحله بعد اولین صفحه برنامه دفترچه تلفن رو شروع میکنیم . مشکلی بود بپرسین .

----------


## sagggad

بهروزجان منSQL SErver2008 رو نصب کردم ولی هرجامیرم SQL Server Managment  رو نمیبینم.چی کارکنم؟؟؟
اگه میشه لطف کن یه توضیحی راجع به Data Type ها هم بده.ممنونم

----------


## behrooz69

اگه ویندوزت 7 ه تو Start >> All Program >> Sql Server 2008 >> Sql Server Management Studio

یا از این ادرس :
C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE

فایل Ssms.exe رو باز کن . اگه نبودن بدون بد نصب کردی داداش دوباره کامل نصب کن . ورژن Enterprise نسخه Sql server 2008 r2 رو نصب کن

----------


## sagggad

بهروز جان من وقتیSQL Server رو گرفتم یه فایل بود که باید اکستراکت میشد.یعنی زیپ بود.بعد که اکستراکتش کردم خود به خود رفت به C:\TEMP وانوجا فایل باز شدش بود.فولدر های زیادی ایجاد شده بود مثلا:X86-X64-StreamInsight-resourcesو...بعد همونجا یه فایل ستاپ بود من رو اون کلیک کردم ومراحل نصب رو انجام دادم.اما Management وجود نداره!!
واقعا از راهنمایی هات ممنونم

----------


## behrooz69

خوب دوستان . شرمنده چون من سرکار میرم و زیاد وقت ندارم شبا پست میذارم . 

طبق آموزش قبلی یه Table دیگه درست کنین به نام TblLogin و فیلد های اونو اینارو بذارین :
1 ) ID >> Data type : Int
2 ) Username >> Data Type : Nvarchar(50) 
3 ) Password >>Data Type : Nvarchar (50)

loggin.jpg

--------------------------------------------------------------------------------------------------------------
حالا میریم سر وقت برناممون . یه پروژه ایجاد کنید با هر اسمی من نوشتم TellBook  .

تو این آموزش می پردازیم به صفحه لاگین یا همون امنیتی برنامه . برنامه رو ضمیمه می کنم ولی خودتون درست کنید که یاد بگیرید .

تو فرمم 2 تا تکس باکس دارم و 2تا هم دکمه 1 ورود و 1 خروج .  اینم عکسش . دیگه طراحیش با خودتون
FrmLoggin.jpg


اما صبر کنین . قبل از هرچیزی بیام دیتابیسمون رو اول تعریف کنیم به صورت رشته ای مشخص که دیگه هربار و هر جا تعریفش نکنیم . چجوری ؟؟؟ منو همراهی کنید . 

از منوی Project آخرین گزینه یعنی Properties پروژتونو انتخاب کنید . 
Connection.jpg

حالا به قسمت Setting برید و تو قسمت نام کلمه Conn رو بنویسین نوعش یعنی Type رو بذارین رو Connection String و Scope رو بذارین رو Application و تو قسمت Value هم آدرس رشته دیتابیسمونو میدیم . 

شما اینجا 2 روش دارین 
اول اینکه چون دیتابیس رو سیستم شما و با Sql server خودتون ساخته شده و تو مسیر Local هست و تو سرور خودتونه می تونین از Local استفاده کنید .
 Data Source=(local);Initial Catalog=TellDB;Integrated Security=True

اینجوری . حالا مهم نیست برنامتون تو چه فولدری باشه حتی رو فلش ، رم ، سی دی هرچی باشه اجرا می شه چون دیتابیس رو سیستم شما و Local شماست . تا اینجاش که اوکی بود . 

حالا روش دوم می تونین تو پوشه Directory پروژتون توی Debug بیاین ازش استفاده کنید یا تو همین Debug بیاین یه فولدر درست کنین  مثلا به نام MyDb که دیتابیستونو بریزین توش و برنامتون رو به مشتری تحویل بدین و مشتری برنامشو اجرا کنه تو این روشم مهم نیست برنامه کجا باشه هرجا باشه دیتابیس از تو پوشه Directory یا تو فولدر مشخص شده ی شما اجرا می شه . کدشم اینه :
 Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector  y|\MyDB\TellDB.mdf;Integrated 
Security=True;User Instance=True
فقط فرش اینه که شما تو این روش باید دیتابیستونو تو این فولدری که درست کردین MyDb کپی کنین و به مشتری بدید . 

ما از روش اول استفاده می کنیم که مشکل ساز نشه . اینم عکسش
Connection 2.jpg

--------------------------------------------------------------------------------------------------------------
حالا میریم سراغ پروژه . 
روی دکمه خروج دابل کلیک کنید و کلمه End رو بنویسین واسه خروج از برنامه و اگه هم می خواین قشنگ بشه اینکارو کنین :
  Dim s As String
        s = MsgBox("آیا مایل به خروج از برنامه هستید؟ ", MsgBoxStyle.YesNo + MsgBoxStyle.Question, Title:="هشدار")
        If s = vbYes Then
            End
        End If
اینجا میاد از کاربر می پرسه که می خواد خارج شه یا نه اگه Yes رو بزنه می اد بیرون اگه No رو بزنه برمیگرده به برنامه  :خجالت: 
--------------------------------------------------------------------------------------------------------------
روی دکمه ورود دابل کلیک کنید و کد زیر رو بنویسین واسه ورود به برنامه 

خوب یه سری توضیحات اینجا می دم که همه جا ازش استفاده می کنیم :
1 ) تعریف Data های Sql 
2 ) تعریف کانکشن ها و رشته های ما
3 ) تعریف دستورات sql 

1 ) داده های Sql داده هایی هستن که واسه استفاده از sql باید فراخونی بشن و جاش قبل همه کد هاست .از جمله این 2 تا داده
 Imports System.Data
Imports System.Data.SqlClient

2 ) کانکشن ها و رشته های ما تو این صفحه Loggin
 Dim con As SqlConnection = New SqlConnection(My.Settings.conn)
    Dim cmd As SqlCommand
    Dim dr As SqlDataReader
 Dim strcon, strsql As String


دیگه به جای تعری 2 خط رشته ی دیتابیس از این نیمچه خط استفاده میکنیم  :قهقهه: 
My.Settings.conn

-----------------------------
Cmd ما از نوع SqlCommand هم دستورات Sql مارو شامل می شه .
dr  ما از نوع SqlDataReaderهم واسه خوندن دیتا هامون استفاده می شه . 

تعریف اینا جاش کجاست ؟ زیر کلاس فرمم ما مثل :

Public Class FrmLogin

------------------------------------------------------------------------------------------------
اوف خسته شدم بچه ها یکی دوشمو بماله . تشکرررررررررررررررررررررر  ررررررر  :گیج:  :گریه:  :قهقهه:  :بامزه: 
-----------------------------------------------------------------------------------------------
خسته نباشین .

حالا میایم دستور فراخوانی رو میدیم همون Select Query خودمون . من کلا کدی کار می کنم ویزارد کار نیستم  :قهقهه: 

روی کمه ورود دابل کلیک کنید :

 If TxtUserName.Text = String.Empty Then
            MsgBox("نام کاربری را وارد كنيد", vbExclamation + vbOKOnly, "پيام")
            TxtUserName.Focus()
            Exit Sub
        ElseIf TxPass.Text = String.Empty Then
            MsgBox("پسوورد را وارد كنيد", vbExclamation + vbOKOnly, "پيام")
            TxPass.Focus()
            Exit Sub
        End If  
این کدا چی میگن ؟؟؟ توضیح بدم ؟؟؟ اگه هر کدومو از تکس باکس ها خالی بود اررور میده که اونو پر کنین و Focus میکنه روش . اوکی .

حالا ادامه

 '// select query //
        cmd = New SqlCommand
        cmd.Connection = con
        con.Open()
        strsql = "select Username,Password from TblLogin where (Username= N'" & TxtUserName.Text & "') and (Password =N'" & TxPass.Text & "')"
        cmd = New SqlCommand(strsql, con)
        dr = cmd.ExecuteReader()
        If dr.Read Then
            FrmMain.Show()
            Me.Hide()
        Else
            MsgBox("اطلاعات را صحیح وارد کنید", MsgBoxStyle.OkOnly, "هشدار")

        End If
        con.Close() 

دیگه همه چیزش واضحه نیاز به توضیح نیست . میاد یوزرنیم و پسوورد رو از تکس باکس هاشون می خونه و اگه دیتارو خوند و درست خروجی گرفت فرم FrmMain رو نمایش می ده و این فرم رو مخفی می کنه و در غیر اینصورت اررور می ده که اطلاعاتو درست وارد کنین . 

-----------------------------------------------------------------------------------------------------------
امیدوارم تا اینجاشو خوب فهمیده باشید . 2 ساعته رو این پستم به خدا حقم نی تشکر کم شه 
-----------------------------------------------------------------------------------------------------------

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

بفرمائید
هم بدون دیتابیس رو می ذارم هم با دیتابیس که اگه نتونست بسازه فقط زحمت Attach دیتابیس رو بکشه تو Sql Server

این بدون دیتابیس :
TellBook Bedon Db.rar

اینم با دیتابیس :
http://uploadkon.ir/uploads/TellBook%20ba%2
0Db.rar

تا فردا شب ، شب تون خوش

----------


## sagggad

بهروز جان سورست نزدیک 100 جا زیرش خط آبی می کشید.اما اونی که از رو آموزشت درست کردم مشکلی نداشت.فقط وقتی که نام کاربری وپسورد رو وارد می کنی باز هم می گه اطلاعات را صحیح وارد کنید!!مشکل چیه؟؟

----------


## behrooz69

سلام دیتابیست رو چک کن . چون دوست من تو Table مربوط به Login خودت یوزرو پسووردی وارد نکردی  :بامزه:  . برو تو Sql server و دیتابیس تلفنت و تیبل TblLoggin و مثلا یوزر نیم رو 1 و پسوورد رو 1 وارد کن و تو برنامت همونو وارد کن دیگه حالا می خوای یکی باشه می خوای 10 تا یوزر نیم باشه . 

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

----------


## behrooz69

سلام دیتابیست رو چک کن . چون دوست من تو Table مربوط به Login خودت یوزرو پسووردی وارد نکردی  :بامزه:  . برو تو Sql server و دیتابیس تلفنت و تیبل TblLoggin و مثلا یوزر نیم رو 1 و پسوورد رو 1 وارد کن و تو برنامت همونو وارد کن دیگه حالا می خوای یکی باشه می خوای 10 تا یوزر نیم باشه . 

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

----------


## behrooz69

:قلب:   :گیج:  واسه پستای من آره . بچه ها اررور هارو بگین من رفع کنم اگه داره . اگه نه که هیچ . شب میام ثبت اطلاعاتو می گم . مرسی فعلا

----------


## Hossis

> جواب سوال اولت دوست من شما با VB.net 2008 یا 2010 می تونی بانک sql express بسازی . که من خودم به شخصه پیشنهاد نمی کنم . 
> روش ساختشم پروژت رو با عکس می زارم واست .
> 1 sql express.jpg
> 2 sql express.jpg
> 3 sql express.jpg
> بهتره که دیتابیستو با خود SQL SERVER  بسازی چون مدیریتش خیلی قوی تر و کنترلت رو دیتابیس خیلی اسون تره و اگه بخوای پروژه سنگین بنویسی SQL SERVER خیلی کنترل هارو می تونی رو دیتابیست انجام بدی که بعدا بهت می گم .
> 
> جواب سوال دومت . 
> 1 ) تو sql server قابلیت ذخیره اسناد و صدا و تصاویر و ویدئو وجود داره.
> ...


 آره من هم قبول دارم
منم تا چندی پیش از اکسس استفاده می کردم ولی دیدم خیلی درد سر داره و برنامه هام یک سر ارور میده، رفتم سمت اسکیوال که علاوه بر مزایای فوق الذکر، سرعت بالائی هم داره
منتها در مورد نصب حداقل هایی که در زمان اجرا نیاز هست در سیستمی غیر از سیستم خودمون، اگر توضیحی بدید خیلی خوبه!

----------


## Hossis

Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector  y|\MyDB\TellDB.mdf;Integrated 
Security=True;User Instance=True
فقط یک سوال این جا مطرح میشه که آیا امکان این که پسوند فایل اتچ شده دیتابیس رو تغییر بدیم هست؟
چون شاید نخواسته باشیم که مشتری بفهمه که این فایل چه فایلی هست و احیانا از دست کاری اون بر حذر باشه.
تو اکسس این امکان بود ولی تو اسکیوال یک بار این کار رو کردم برنامه تشخیص نداد!

----------


## behrooz69

نه دوست من باید پسووند باشه . خو شما فایل Setup می سازی از پروژت سورسش رو که نمی دی شخص بفمهمه داستان چیه . 
بعدشم که شما باید دیتابیس رو بدنی چیه و کیه که بعدا واسه ذخیره تو یه درایوی ازش استفاده کنی . دیتابیس نرم افزار چیزی نیست که از خریدار پنهان کنیمش . قانون برنامه نویسیه .

----------


## behrooz69

و جواب سوال اولت دوست من Hossis من از روش اول یعنی 
Data Source=(local);Initial Catalog=TellDB;Integrated Security=True
استفاده کردم و پسووندی نیست که بخواد دیده شه . اگه منظورت اینه .

----------


## behrooz69

دوست من شما به اینا نیاز داری رو سیستم مقصد

1 ) Sql server 2008 
2 )  Microsoft.net framwork 4  و بالاتر
3 ) اگه از کریستال استفاده کنیم تو پروژه به SAP crystal report engine x86 | x64  نیاز داریم .

----------


## behrooz69

سلام مجدد به همه . 
طبق قولم چند دقیقه ای میشه که بیدار شدم که بهتون ثبت اطلاعات رو بگم .  :گریه: 

پروژه رو که دارید یا ساختید . دیتابیس رو هم همینطور .

حالا رو فرم FrmMain ما روی دکمه ثبت اطلاعات کلیک کنید و این کد رو واسه باز کردن صفحه ثبت اطلاعات بنویسید :

  FrmRegister.Show()
        Me.Hide()
روی منومون هم تو بخض اطلاعات رو ثبت دابل کلیک کنید و هم کد بالا رو بنویسید که از هر 2 جا باز بشه

-----------------------------------------------------------------------------------------------------------------
حالا روی فرم FrmRegister  کلیک کنید و روی ثبت اطلاعات دابل کلیک کنید و کد های زیر رو بنویسید :
یادتون نره اول دیتاها :
 Imports System.Data
Imports System.Data.SqlClient

و رشته هارو :

Dim con As SqlConnection = New SqlConnection(My.Settings.conn)
    Dim cmd As SqlCommand
    Dim dr As SqlDataReader

تعریف کنید

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

 ' ///// error if txt is empty /////

        If TxtName.Text = String.Empty Then
            MsgBox("نام شخص را وارد كنيد", vbExclamation + vbOKOnly, "پيام")
            TxtName.Focus()
            Exit Sub
        ElseIf TxtLName.Text = String.Empty Then
            MsgBox("نام خانوادگی را وارد كنيد", vbExclamation + vbOKOnly, "پيام")
            TxtLName.Focus()
            Exit Sub
        ElseIf TxtTell.Text = String.Empty Then
            MsgBox("تلفن شخص وارد كنيد", vbExclamation + vbOKOnly, "پيام")
            TxtTell.Focus()
            Exit Sub
        ElseIf CboGen.Text = String.Empty Then
            MsgBox("نوع جنسیت را مشخص كنيد", vbExclamation + vbOKOnly, "پيام")
            CboGen.Focus()
            Exit Sub
        ElseIf TxtAddress.Text = String.Empty Then
            MsgBox("آدرس را وارد كنيد", vbExclamation + vbOKOnly, "پيام")
            TxtAddress.Focus()
            Exit Sub
        End If

        '///// insert query /////
        con = New SqlConnection(My.Settings.conn)
        cmd = New SqlCommand()
        cmd.Connection = con
        cmd.CommandText = "INSERT INTO TblRegister (Fname,Lname,Tell,Address,Gen) VALUES (@Fname,@Lname,@Tell,@Address,@Gen) "
        cmd.Parameters.Add("@Fname", SqlDbType.NVarChar, 50).Value = TxtName.Text
        cmd.Parameters.Add("@Lname", SqlDbType.NVarChar, 50).Value = TxtLName.Text
        cmd.Parameters.Add("@Tell", SqlDbType.NVarChar, 100).Value = TxtTell.Text
        cmd.Parameters.Add("@Address", SqlDbType.NVarChar, 50).Value = TxtAddress.Text
        cmd.Parameters.Add("@Gen", SqlDbType.NVarChar, 50).Value = CboGen.Text
        
        ' ///// check state connection age baz bod khoroji bede o amal insert anjam beshe   /////
        con.Open()
        If con.State = ConnectionState.Open Then
            If cmd.ExecuteNonQuery() Then
                con.Close()
                MessageBox.Show(" اطلاعات ورودی مورد نظر ثبت شد")
            End If
        End If
        cmd.Dispose()
        con.Dispose() 

توضیحات کد ها : 
قسمت اول کد اومدم چک کردم اگه رشته هاشون خالی بود Error بده و Focus کنه روش . 

قسمت دوم که کد Insert  یا ثبت اطلاعات تو دیتابیسه که پارامترهای ورودیشو به صورت دستی نوشتم و فیلتر هارو دستی وارد کردم حتی مقدار ورودی Data Type هارو و مقدارشنو از TextBox های مورد نظر گرفتم . 

قسمت سوم هم میاد چک میکنه که اگه وضعیت ارتباط ما یا کانکشن ما باز بود اطلاعات رو ثبت کن Query خروجی رو بده و کانکشن رو ببند . Con.close  و اررور ثبت اطلاعات در صورت صحت عملیات . 

و در آخر هم میاد همه کانکشن ها  و دستوراتو Dispose یا خارج می کنه . 

اینم نمونه انجام شده و ثبت شده به صورت صحیح :
FrmRegister.jpg

-----------------------------------------------------------------------------------------------------------------
توی دکمه پاک سازی این کدهارو بنویسید :
 TxtName.Clear()
        TxtLName.Clear()
        TxtTell.Clear()
        TxtAddress.Clear()  
این دکمه هم کارش خالی کردن تکس باکس هاست دوستان .

-----------------------------------------------------------------------------------------------------------------
و در آخر توی دکمه بازگشت هم این کدهارو بنویسید :
  FrmMain.Show()
        Me.Close() 

-----------------------------------------------------------------------------------------------------------------
توجه : شما در حال حاضر جایی نمی تونین اطلاعات ثبت شده رو ببینید جز دیتابیستون تو Sql server 2008  خودتون . بازش کنید . برین تو دیتابیس TellDB  و روی Table مربوطه همون TblRegister  راست کلیک کرده و Edit Top 200 Rows رو کلیک کنید . با اینکار 200 سطر ثبت شده رو میتونین ببینین و ببینید که اطلاعاتتون صحیح ثبت شد . اینم عکساش :
FrmRegisterShowDb.jpg

و Rows
FrmRegisterShowDb2.jpg

-----------------------------------------------------------------------------------------------------------------
این سورس جدید برنامه :

TellBook v2.rar
-----------------------------------------------------------------------------------------------------------------
خو دوستان امشب و ثبت اطلاعات تموم شد . تا فردا دوستان . امیدوارم خوب و مفهموی توضیح داده باشم .

مشکلی بود بگید تا رفع شه .

----------


## sagggad

بهروزجان نگفتی چطوری باید متن داخل مثلا Columns پسورد رو بنویسیم؟؟یعنی چطور اطلاعات وارد کنیم تاپسورد ویوزر نیم مشخص بشه؟؟

----------


## behrooz69

داداش منظورتو نفهمیدم . یعنی چی ؟؟

----------


## sagggad

شما به من گفتی باید چی کار کنم که نگه اطلاعات صحیح نیست؟؟اگه میشه پایه ای توضیح بده که مبتدی هایی مثل من هم بفهمیم!!!

----------


## sagggad

درست شد همین جایی که گفتی:توجه : شما در حال حاضر جایی نمی تونین اطلاعات ثبت شده رو ببینید جز  دیتابیستون تو Sql server 2008  خودتون . بازش کنید . برین تو دیتابیس  TellDB  و روی Table مربوطه همون TblRegister  راست کلیک کرده و Edit Top  200 Rows رو کلیک کنید . با اینکار 200 سطر ثبت شده رو میتونین ببینین و  ببینید که اطلاعاتتون صحیح ثبت شد .رو نخونده بودم.
داداش دستت درد نکنه!!!
دوستت داریم بهروز!!!!!! :قلب:  :قلب:  :قلب:  :قلب:

----------


## sagggad

من خودم سورسش رو میذارم شما ببین مشکلی داره؟؟آخه سورسی که شما میذاری ازکدهای اصلی خود برنامه ارور میگیره از زیر دانلودش کن:
البته من به جای  Fname و Lname گذاشتم:Name و Family حواست باشه.
TellBook2.rar

----------


## sagggad

بهروز جان من الان میخوام فایل دیتابیس SQL رو کپی کنم تو یه کامپیوتر دیگه.کجاست فایلش؟؟

----------


## behrooz69

دیتابیس توی سیستم خودته دوست من . تو این مسیر :
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
کل دیتابیس هایی که میسازی با Sql server اینجاست .

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

----------


## behrooz69

تویه پست بالا رو نگاه کن 2 تا سورس آپ کردم یکی با دیتابیس و یکی هم بدون دیتابیس . اون با دیتابیس رو دوستان می تونن کپی کنن تو سیستمشون و توی Sql Server 2008 اونو Attach کنن. و برنامه رو اجرا کنن

----------


## sagggad

دستت طلا.فقط من که میام اون رو به فایل خودم کپی کنم ارور زیر رومیده
Error1.png
سیستم رو ریستارت کردم که دیگه اینو نگه اما فایده نداشت!!

----------


## behrooz69

داداشی این میگه برنامه یجا دیگه داره از این فایلت استفاده می کنه . شما روی Sql server  خودت همین دیتابیس رو ساختی واسه همین اررور می گیره .یا برنامت رو سیستم بازه برو تو Task manager  و برنامه ای که نوشتی اونجاست End Task اش کن

----------


## behrooz69

خوب دوستان با اینکه تشکری ندارم و هیچ امیدی ولی بازم پست رو ادامه می دم . امشب برنامه رو کامل کردم و سورس پروژه رو تو پست آخر میزارم . اول آموزش هارو بگم بعد میرسیم به سورس . 
اول می خوام نحوه حذف اطلاعات رو بگم بهتون . 
توی حذف ما ابتدا از جستجو استفاده کردیم و سپس از حذف . 
فرم FrmDelete رو بسازید . 
تکس باکس ها و دکمه هایی که تو ثبت اطلاعات گذاشتید رو Copy  و تو این صفحه Paste کنید . فرم زیر رو بسازید :
Deletefrm.jpg

روی دکمه جستجو کلیک کنید و بالای صفحه اول دیتاهارو تعریف کنید :

 Imports System.Data
Imports System.Data.SqlClient  

و زیر کلاس فرم :

  Dim con As SqlConnection = New SqlConnection(My.Settings.conn)
    Dim cmd As SqlCommand
    Dim dr As SqlDataReader 

و بیاین رو Button مورد نظر و دستورات زیر رو بنویسید:
 '/// search data ///

        If TxtTell.TextLength > 0 Then

            cmd = New SqlCommand()
            cmd.Connection = con
            cmd.CommandText = "SELECT Fname,Lname,Address,Gen FROM TblRegister  WHERE(Tell=@Tell)"
            cmd.Parameters.Add("@Tell", SqlDbType.NVarChar, 50).Value = TxtTell.Text

            con.Open()
            Dim sReader As SqlDataReader = cmd.ExecuteReader()

            If sReader.Read() Then
                TxtName.Text = sReader.GetValue(0).ToString()
                TxtLName.Text = sReader.GetValue(1).ToString()
                TxtAddress.Text = sReader.GetValue(2).ToString()
                TxtGen.Text = sReader.GetValue(3).ToString()

            Else : MessageBox.Show("پیدا نشد")
            End If
            con.Close()
        End If 

کد چی می گه ؟؟

1 ) SELECT Fname,Lname,Address,Gen میاد این فیلد هارو از جدول TblRegister فراخونی می کنه به شرطی که ( WHERE ) تلفن ( Tell ) برابر با پارامتر @Tell  باشه که پایینش تعریف کردیم . پارامترم اومدیم از این تکس باکس گرفتیم : TxtTell.Text

2 ) اینجا
  TxtName.Text = sReader.GetValue(0).ToString()
                TxtLName.Text = sReader.GetValue(1).ToString()
                TxtAddress.Text = sReader.GetValue(2).ToString()
                TxtGen.Text = sReader.GetValue(3).ToString() 
هم رشته ها وقتی با sReader که رشته ای از نوع SqlDataReader برای خودندن داده هاست خونده می شن و مقدارش تو تکس باکس مورد نظر بر اساس ایندکسی که خودمون تعیین می کنیم قرار می گیره . 
به ترتیب این کد :
Fname,Lname,Address,Gen
و تکس باکس توجه کنید :
TxtName.Text
TxtLName.Text
TxtAddress.Text
TxtGen.Text

در آخرم اگه نباشه می گه پیدا نشد . و تموم . 

تا اینجاش اوکی این دیگه ؟؟

حالا روی دکمه حذف دابل کلیک کنید :
و این کدارو بنویسید :

 If TxtTell.TextLength > 0 Then
            cmd = New SqlCommand()
            cmd.Connection = con
            cmd.CommandText = "DELETE FROM TblRegister WHERE Tell='" & TxtTell.Text & "'"

            con.Open()
            Dim count As Integer
            count = cmd.ExecuteNonQuery()
            con.Close()
            If count > 0 Then
                MessageBox.Show("اطلاعات مورد نظر حذف شد")
                End If
            Else : MessageBox.Show("اطلاعات مورد نظر پیدا نشد")
        End If
        TxtName.Clear()
        TxtLName.Clear()
        TxtTell.Clear()
        TxtAddress.Clear()
        TxtGen.Clear() 

توضیح کد :

1 ) DELETE FROM TblRegister WHERE Tell='" & TxtTell.Text
واضه می گه پاک کن همه رو از جدول TblRegister به شرطی که تلفن ما با تکس باکس TxtTell.Text برابر 
باشه .
آخرشم بعد پاک کردن از دیتابیس میاد تکس باکس هارو خالی می کنه .

 اوکی ؟

حالا روی دکمه پاک سازی دابل کلیک کنید و کد زیر رو بنویسید :
 TxtName.Clear()
        TxtLName.Clear()
        TxtTell.Clear()
        TxtAddress.Clear()
        TxtGen.Clear() 

اینم عکس های این پست :

ابتدا شماره رو وارد کنید و دکمه جستجو رو بزنین 
Delete1.jpg

اطلاعات به شما نشون داده می شه 
Delete2.jpg

حالا بعد از صحت اطلاعات دکمه حذف رو بزنین و اطلاعات حذف می شه .
Delete3.jpg

پست بعدی راجب نمایش اطلاعاته که هی نرین تو Sql Server  :تشویق: 


-------------------------------------------------------------------------------------------------------
اگه پستم و آموزشم کمکتون کرد تشکر یادتون نره .

----------


## behrooz69

تو این پست می خوام نحوه ویرایش اطلاعات رو بگم بهتون . 
توی حذف ما ابتدا از جستجو استفاده کردیم و سپس از ویرایش یا Update یا بروز رسانی. 
فرم FrmEdit رو بسازید . 
تکس باکس ها و دکمه هایی که تو ثبت اطلاعات گذاشتید رو Copy  و تو این صفحه Paste کنید . فقط 1 تکس باکس دیگه اضافه کنید واسه نمایش جنسیت و یه کمبو باکس واسه ثبت جنسیت جدید . 
یعنی فرم زیر رو بسازید 


روی دکمه جستجو کلیک کنید و بالای صفحه اول دیتاهارو تعریف کنید :

 Imports System.Data
Imports System.Data.SqlClient  

و زیر کلاس فرم :

  Dim con As SqlConnection = New SqlConnection

(My.Settings.conn)
    Dim cmd As SqlCommand
    Dim dr As SqlDataReader 

روی دکمه جستجو دابل کلیک کنید و کد زیر رو بنویسید :
  '/// search data ///
        If TxtTell.Text = String.Empty Then
            MsgBox("تلفن شخص را وارد كنيد", vbExclamation + vbOKOnly, "پيام")
            TxtTell.Focus()
            Exit Sub
        End If

        If TxtTell.TextLength > 0 Then

            cmd = New SqlCommand()
            cmd.Connection = con
            cmd.CommandText = "SELECT Fname,Lname,Address,Gen FROM TblRegister  WHERE(Tell=@Tell)"
            cmd.Parameters.Add("@Tell", SqlDbType.NVarChar, 50).Value = TxtTell.Text

            con.Open()
            Dim sReader As SqlDataReader = cmd.ExecuteReader()

            If sReader.Read() Then
                TxtName.Text = sReader.GetValue(0).ToString()
                TxtLName.Text = sReader.GetValue(1).ToString()
                TxtAddress.Text = sReader.GetValue(2).ToString()
                TxtGen.Text = sReader.GetValue(3).ToString()

            Else : MessageBox.Show("پیدا نشد")
            End If
            con.Close()
        End If 
توضیحاتشو قبلا دادم دیگه . 

حالا روی دکمه بروز رسانی دابل کلیک کنید و کد زیر رو بنویسید :

 '/// update data ///
        Try

            cmd.CommandText = "UPDATE TblRegister SET Fname=@Fname,Lname=@Lname,Address=@Address,Gen=@Ge  n WHERE(Tell=@Tell)"
            cmd.Parameters.Add("@Fname", SqlDbType.NVarChar, 50).Value = TxtName.Text
            cmd.Parameters.Add("@Lname", SqlDbType.NVarChar, 50).Value = TxtLName.Text
            cmd.Parameters.Add("@Address", SqlDbType.NVarChar, 500).Value = TxtAddress.Text
            cmd.Parameters.Add("@Gen", SqlDbType.NVarChar, 50).Value = CboGen.Text

            con.Open()
            Dim count As Integer
            count = cmd.ExecuteNonQuery()
            con.Close()


            If count > 0 Then
                MessageBox.Show("بروز رسانی شد")
            Else : MessageBox.Show("اطلاعات مورد نظر پیدا نشد")
            End If
        Catch ex As Exception
            MsgBox("لطفا همه گزینه ها را کامل وارد نمایید")
        End Try 

توضیحات :

1) UPDATE TblRegister SET 
آپدیت میکنه تیبل مارو با مقدار های پارامترهای تعریف شده ست می کنش . پارامترها رو هم تعریف کردیم زیرش . 

دیگه اررور رو توضیح ندم دیگه زشته  :لبخند گشاده!: 

و یه خبر خوش فرم نمایش اطلاعات رو درست کردم واستون که هی نرین تو Sql server همینجا ببینین دیگه  :تشویق: 

اسمش FrmShowInfo هستش و یه گرید ویو داره که به دیتابیس وصله و تیبل رجیستر رو نشون می ده و یه دکمه بازگشت داره . عکساش پایین هست ببینین دیگه  :کف کرده!: 


اینم عکس های این پست :
شماره رو وارد کنید و جستجو رو بزنین 
Editform.jpg

اطلاعاتو که دیدین و تائید کردین و تغییر دادین روی دکمه بروز رسانی کلیک کنید و حله دیگه  :گیج:  :متعجب:  :قهقهه:  :بامزه: 

Editform1.jpg

Editform2.jpg

اینجام فرم نمایشه دیگه ببینین :
Editform3.jpg

دیگه نمی گم تشکر کنین .

----------


## behrooz69

واقعا نمی دونم چی بگم . بخدا اهل منت گذاری نیسم و اگه هم می گم تشکر کنید واسه خندس والا می خوام 1 قول 2 قول بازی کنم با تعداش ؟؟؟

من صبح ساعت 8 تا 2 ظهر میرم سر کار . 2 تا 4 میرم تدریس میکنم . تا بیام 5 شده و خوابمم پریده . ساعت 6 به بعدم می رم سالن فوتسال تا 8 9 یا 10 . و با اوج خستگی میام 2 3 ساعت پست رو تکمیل می کنم و آموزش میزارم و کل پست چقدر تشکر می خوره ؟؟؟ مرسی واقعا .   :عصبانی:  :افسرده:  :خیلی عصبانی:

----------


## sagggad

بهروزجان نگفتی چطوری فایلSQL رو تو وی بی نمایش بدیم.اصلا چطوری Add کنیم؟من از همون راهی که برای Microsoft Access میرفتم رفتم وخواستم فایل Mdf روAdd کنم که ارور زیر روداد:
Err4.png

----------


## behrooz69

دادش ورژن دیتابیسی که ساختی همونی که با Sql Server خودت ساختی به اسم TELLDB این ورژنش بالاتره از سرورت . 
اررور دوم خط 5 هم می گه که یه دیتابیس با همین نام هست . بعد شما اومدی دیتابیس منو Attachکردی .

اگه Attach نکردی بکن ببین چی میگه اگه بازم اررور داد برو دیتابیسی که ساختی رو حذف کن و دیتابیس منو جاش Attach کن . مشکلت رفع می شه

----------


## sagggad

داداش دستت دردنکنه اما منظورت ازAttachکردن چیه؟؟

----------


## behrooz69

یعنی اضافه کردن به سرور سیستمت . یعنی دیتابیس رو از 1 جا دیگه میاری تو سیستمت و Attach میکنی . سرچ کن تو پستهام گذاشتم آموزششو

----------


## sagggad

الان من دقیقا باید چیکارکنم؟؟؟؟ :خیلی عصبانی:

----------


## behrooz69

توی Sql Server روی پوشه دیتابیس راست کلیک کن و Attach رو بزن /. بعد Add رو بزن بعد برو دیتابیس منو انتخاب کن . و اوکی کن تا Execute شه . اکی ؟؟

----------


## sagggad

بازم این ارور رو داد:
6.png

----------


## behrooz69

داداش باید رو اررور بزنی ببینی متنش چیه . ولی احتمالا واسه اینه که 2 تا دیتابیس با 1 اسم و فیلد ها داری . بازم چک کن . ن فردا ادامه پروژه رو میذارم

----------


## sagggad

دستت دردنکنههههه!

----------


## behrooz69

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

---------------------------------------------------
1 فرم بسازید اینجوری :

1.jpg

روی دکمه دابل جستجو کلیک کنید و بالای صفحه اول دیتاهارو تعریف کنید :

 Imports System.Data
Imports System.Data.SqlClient  

و زیر کلاس فرم :

  Dim con As SqlConnection = New SqlConnection

(My.Settings.conn)
    Dim cmd As SqlCommand
    Dim dr As SqlDataReader 

روی دکمه جستجو دابل کلیک کنید و کد زیر رو بنویسید :
  '/// search data ///
        If TxtTell.Text = String.Empty Then
            MsgBox("تلفن شخص را وارد كنيد", vbExclamation + vbOKOnly, "پيام")
            TxtTell.Focus()
            Exit Sub
        End If

        If TxtTell.TextLength > 0 Then

            cmd = New SqlCommand()
            cmd.Connection = con
            cmd.CommandText = "SELECT Fname,Lname,Address,Gen FROM TblRegister  WHERE(Tell=@Tell)"
            cmd.Parameters.Add("@Tell", SqlDbType.NVarChar, 50).Value = TxtTell.Text

            con.Open()
            Dim sReader As SqlDataReader = cmd.ExecuteReader()

            If sReader.Read() Then
                TxtName.Text = sReader.GetValue(0).ToString()
                TxtLName.Text = sReader.GetValue(1).ToString()
                TxtAddress.Text = sReader.GetValue(2).ToString()
                TxtGen.Text = sReader.GetValue(3).ToString()

            Else : MessageBox.Show("پیدا نشد")
            End If
            con.Close()
        End If 
توضیحاتشو قبلا دادم دیگه .  :لبخند گشاده!:  :بامزه: 

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

2.jpg

----------


## behrooz69

بچه ها  تا 2 ساعت دیگه فرم اطلاعات و سورس کامل پروژه رو میذارم . فعلا دارم میرم سالن فوتسال  :قلب:

----------


## behrooz69

سلام . طبق قولم اومدم . 

آموزش آخر فرم نمایش اطلاعات با فیلتر جداگونه .

-----------------------------------------------------------------
فرم زیر رو درست کنید :

1.jpg
یه Data Grid View بذارید و به Table خودتون وصلش کنید . Columns هاشو فارسی کنید . ID رو حذف کنید . واسه شمارش بعدا می تونین از SUM تو Sql استفاده کنید تا تعداد رو بدست بیارین . 

دیگه اضافه کردن یا کم کردن Columns دست خودتونه . 
2.jpg

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

  TblRegisterBindingSource.Filter = "Tell Like '*" & TxtTell.Text & "*'" 

توی تکس باکس روی تکس باکس نام دابل کلیک کنید و تو رویداد TextChanged اون کد زیر رو واسه فیلتر کردن بر حسب نام بنویسید :

  TblRegisterBindingSource.Filter = "Fname Like '*" & TxtName.Text & "*'" 

توی تکس باکس روی تکس باکس نام خانوادگی دابل کلیک کنید و تو رویداد TextChanged اون کد زیر رو واسه فیلتر کردن بر حسب نام خانوادگی  بنویسید :

 TblRegisterBindingSource.Filter = "Lname Like '*" & TxtLName.Text & "*'" 

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

3.jpg

اینم سورس کامل پروژه . پایان آموزش این برنامه . تا برنامه بعدی خدا نگهدار . مشکلی بود بپرسین.


TellBook v3.rar

----------


## sagggad

بهروز جان اصلش همینه که چه جوری به تیبل خودمون وصل کنیم؟؟

----------


## behrooz69

بفرما دوست من . اینم آموزشش 

توی فرمتون 1 DataGridView بذارید و اسمش رو هرچی دوست داشتید بذارید . از اینجا بیاریدش از Toolbox

grid1.jpg

ووقتی گذاشتینش یه پنجره اینجوری میاد :

grid2.jpg
قسمت 1 : اینجا تیبل خودتونو انتخاب می کنین یا اگه نبود اضافه می کنید .
قسمت 2 : ستون هاتونو تغییر میدین
قسمت 3 : اضافه کردن ، حذف کردن و تغییر دادن و مرتب سازی رو حذف یا فعال میکنید .

بعد از زدن کمبو باکس تو قسمت اول به این صفحه میرین
grid3.jpg

قسمت 1 : اینجا تیبل خودتونو انتخاب می کنین
قسمت 2 : می تونین Dataset مورد نظر رو دستی بسازید و اضافه کنید . ویزاردیه بلدین دیگه . 
از گزینه Add Project Data source هم می تونن دیتاسورس به پروژتون اضافه کنید . 

بعد از اضافه کردن Table یه همچین صفحه بهتون نشون می ده که مهمترین بخششه .

grid4.jpg

تو سمت چپ می بینین که ID انگلیسی نوشته شده و واسه تغییر Header  ستون ها باید Edit Columns رو بزنین تا به پنجره سمت راست واستون باز بشه .

از قسمت Select Columns ستون های مورد نظر رو انتخاب میکنید اول ID رو حذف کنید . از دکمه Remove واسه حذف کردن و از دکمه Add واسه اضافه کردن استفاده کنید . 

Columns نام که Fname هست رو انتخاب کنین سمت راست با استفاده از Header Text می تونین تغییرش بدید . بنویسید نام . تنظیماتش اختیاریه . 
بقیه رو هم همینجوری درست کنین. نام خانوادگی و تلفن و آدرس و جنسیت رو میگمااا .  :قهقهه:  اینجوری

grid5.jpg

-----------------------------------------------------------------------------------------------------------

خوب کارمون تموم شد . حالا میایم 1 سری تنظیمات کوچولو واسه دیتاگریدمون انجام میدیم . 
اولیش راست به چپ کردن دیتاگریده . از سمت راست یعنی Properties دیتاگریدمون RightToLeft رو Yes می کنیم . بعد میایم پاین تو قسمت Layout تنظیمات Anachor , AutoSizeColumns ,AutoSizeRow 
رو تغییر میدیم . اینارو میگم  :لبخند گشاده!:  



Anachor واسه جایگذاری دیتاگریده وقتی فرمم ما بزرگ یا کوچیک میشه . بقیه چیزارو هم می شه با این درست کردا . مثل دکمه ها یا تکس باکس ها که وقتی فرم رو بزرگ یعنی Maximize کردی اجزات بهم نریزه و سر جای خودش قرار بگیره . 
اینو هر 4 تا جاشو فعال کنید . 

-----------------------------------
AutoSizeColumns رو بذارید روی Fill که وقتی بزرگ شد فرمتون کل دیتار بگیره .

-----------------------------------
AutoSizeRow رو هم به همه سلول ها نسبت بدید .
-----------------------------------

این حالت نرمال فرم :


اینم حالت بزرگ شده فرم :



اوکیه ؟؟؟ کار با Properties  سلیفه ایه و مربوط به کارتون و پروژتون . یا حق 

آقا سجاد حله ؟؟  :بوس:  :بامزه:

----------


## sagggad

نه داداش من خنگ تر از این حرفا هستم.من میگم چه جوری باید اون فایل Mdf رو وارد برنامه کنیم.نمایشش تو گرید ویو زیاد کار سختی نیست
ممنونم داداش

----------


## behrooz69

این سوالت : :عصبانی:  :عصبانی:  :عصبانی:  :عصبانی:  :عصبانی:  :عصبانی:  :عصبانی: 
بهروز جان اصلش همینه که چه جوری به تیبل خودمون وصل کنیم؟؟

یعنی واقعا دستم بهت برسه اینجوریت میکنم  :خیلی عصبانی: 

این میشه تیبل وصل کردن . اون سوالی که الان شما پرسیدی یعنی این :
من میگم چه جوری باید اون فایل Mdf رو وارد برنامه کنیم.
این یعنی اضافه کردن فایل دیتابیس به برنامه .  :خیلی عصبانی:  :عصبانی:  :گریه: 

داداشی نیاز نیست دیتابیس رو به برنامه من اضافه کنی . فقط شما اونو تو sql server 2008 خودت که رو سیستمت نصبه Attach کن دادا .

 :بوس:  یا علی

----------


## sagggad

حالا خودتو نزن من وقتی اون رو Attch کنم خود به خود وارد وی بی میشه؟؟

----------


## sagggad

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

----------


## barrai

سلام به همه عزیزان علی الخصوص آقا بهروز گل 
آقا دمت گرم واقعا به همچین تاپیکی احتیاج داشتیم خیلی حال کردم 
چند تا چیز دیگه هم به ذهنم رسیده که ایشالا سر وقت مزاحمتون میشم
خدا قوت

----------


## behrooz69

قربونت دادا  تا جایی که بتونم کمک میکنم .

----------


## sagggad

پس من رو چرا کمک نمی کنه کسی؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟!!!!! :گریه:  :گریه:  :گریه:  :گریه: 
با این ارور چه کار کنم؟؟هیچ اطلاعات بیشتری هم نداره فقط همین ارور رومیده:

----------


## sagggad

داداش دستت درد نکنه اون مشکلم حل شد ولی این ارور رو هر کار میکنم در حین Add کردن دیتابیس میده:
دیتابیس خودمو حذف کردم بجاش مال تو رو Attach کردم بازم همین ارور رو میده.
توروخدا کمک کن!!!!!!!! من با وی بی 2008 کار میکنم

----------


## behrooz69

داداش یه شب بهت خبر میدم که با team viewer بیام تو سیستمت. این اروور هم میگه نسخه دیتابیس من از sql server شما جدیدتره . و میگه یه دیتبیس با همین نام تو مسیری ک تو عکس هست وجود داره ک داره استفاده میشه. داش پس درک برنامه نویسی کو؟؟؟ مهم نیست حتما دیتابیس منو بذاری تو پروژت که . خودت بساز 2 تا تیبل با 8 تا فیلد دیگه . اطلاعاتتتم خودت وارد کن. تعریف رشته conn هم تو setting برنامه رو عوض کن و ادرس دیتابیس جدید رو بده . یه دیتابیس رو سیستم خودت بساز مثلا TellSajad

یا علی

----------


## sagggad

داداش ممنون که جواب میدی.من اول همین کار رو کرده بودم و خودم تیبل رو ساختم اما اون موقع باز می گفت نسخه Sql Server همخونی نداره.فکرکنم میگفت پایین تره.
چکارکنم؟؟؟ :گریه:  :گریه:  :گریه:  :گریه:  :گریه:  :گریه:

----------


## behrooz69

مگه ورژن Sql server  تو چنده داداشی ؟؟؟ Microsoft Sql Server 2008 r2  رو نصب کن

----------


## sagggad

همین ورژن دقیقا نصبه با ویژوال استودیو 2008.توروخدا یه راه حلی بهم بده

----------


## behrooz69

داداشی Sql server 2008 با vb.net 2008 هم خونی نداره به جان مادرم . تورو جون من عوضش کن  :قهقهه:  :لبخند گشاده!:   ویژوال استودیو دات نت 2010 یا 2013 رو نصب کن و با اون کار کن. اوکی می شه .

----------


## barrai

سلام آقا بهروز ممنون از وقتی که میذاری 
من موقع اضافه کردن تیبل به مشکل خوردم که عکس پیغام را برات میذارم نمیدونم بابت چیه 
sql server 2008  &&  vs2013
در ضمن یه مورد دیگه تو فرم ادیت با زدن شماره تلفن و زدن دکمه جستجو اطلاعات اون فراخونی میشه ولی اگه ما جنسیت جدید را وارد نکنیم جای خالی جایگزین جنسیت قبلی میشه و این یعنی که باید جنسیت تو قسمت جدیدش نوشته بشه حتی اگه تکراری باشه اینم اگه درستش کنید خوب میشه 
ممنون

----------


## sagggad

داداش بهروز گلم با راهنمایی هاتون مشکلات رفع شد به جز یه ارور:
Error1.png
تو رو خدا جواب بده :افسرده:

----------


## barrai

مشکل من با پاک کردن vs2013 و نصب vs2012 حل شد ممنون از دوستان

----------


## sagggad

من 2012 رو دارم ولی این ارور رو میده:
Error1.png

----------


## sagggad

با تشکر از تمام بچه ها به خصوص آقا بهروز گل مشکلم حل شد.
حالا یه چند تا سوال از استاد بهروز دارم:
1-اگه یادتون باشه گفته شد:در جایی که میخوایم به برنامه آدرس دیتابیس رو بدیم اگر دیتابیس در محل مورد نظر خودمون ذخیره شده باشه باید از کد زیر استفاده کنیم
Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector  y|\MyDB\TellDB.mdf;Integrated Security=True;User Instance=True

حالا سوال من اینه که آیا باید این آدرس رو هم مثل وقتی که Local هست در Setting پروژه کپی کرد؟؟
وسوال دومم اینه که در این کد گفته شده:SQL Express.آیا اگه از نسخه های دیگه استفاده شده باشه باید به جای این کلمه چی گذاشت؟؟
ممنونم

----------


## behrooz69

دوست من Baraii  ورژن vb شما چنده ؟؟؟ ورژن sql server شما چنده ؟؟ این 2 تا فک کنم با هم همخونی ندارن چون به ورژنش گیر داده . یا sql server 2008 رو بد نصب کردی دوست من

----------


## behrooz69

> با تشکر از تمام بچه ها به خصوص آقا بهروز گل مشکلم حل شد.
> حالا یه چند تا سوال از استاد بهروز دارم:
> 1-اگه یادتون باشه گفته شد:در جایی که میخوایم به برنامه آدرس دیتابیس رو بدیم اگر دیتابیس در محل مورد نظر خودمون ذخیره شده باشه باید از کد زیر استفاده کنیم
> Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector  y|\MyDB\TellDB.mdf;Integrated Security=True;User Instance=True
> 
> حالا سوال من اینه که آیا باید این آدرس رو هم مثل وقتی که Local هست در Setting پروژه کپی کرد؟؟
> وسوال دومم اینه که در این کد گفته شده:SQL Express.آیا اگه از نسخه های دیگه استفاده شده باشه باید به جای این کلمه چی گذاشت؟؟
> ممنونم


سوال اولت آقا سجاد : من توی توضیحات گفتم که واسه چی به Setting پروژه مسیر دیتابیسو معرفی میکنیم . چون دیگه نیاز نباشه هربار تو برنامه بیایم هی کد بالا رو بنویسیم . فقط بنویسیم My.setting.con  همین . 

سوال دومت :لوکال رو هم تو پست های دوم به بعد توضیح دادم که چرا لوکال استفاده کنیم و چرا متغییر . لوکال تو سیستم خودته و اگه بخوای برنامه رو به کسی بدی باید 100 % به طرف دیتابیسی که تو سیستم خودت ( لوکال ) ساختی رو بدی و اونم دیتابیس رو تو sql server 2008 خودش Attach کنه. 

ولی روش متغییر اینجوری نیست و دلیل استفاده کردن از کلمه sqlexpress هم اینه که وقتی دیتابیس رو متغییر تعریف می کنیم و همراه پروژه میدیمش اگه رو سیستم sql server 2008  نصب نبود فقط با نصب موتور Engine خود Sql Express 2008  برناممون اجرا شه . 

این موتور تو سایتا و تو خودت پک دی وی دی sql server 2008  یا Visual Studio 2010 هستش دوست من.

امیدوارم بدردت خورده باشه . یا حق

----------


## نسرین2000

سلام
از آموزش خوبتون تشکر می کنم
خیلی عالی و واضح توضیح دادید
یه سوال : وقتی کدهای cmd.dispose() , con.dispose() را می نویسم اولین بار که اطلاعات رو ثبت می کنم همه چیز درست پیش می ره و اطلاعاتم ثبت می شه و تکس باکسها خالی می شه ولی برای نفر بعد که اطلاعات رو وارد می کنم و ثبت رو می زنم در قسمت connection.open(قسمتی که بانک اطلاعاتی رو باز می کنم ) ارور زیر را می دهد و وقتی این دو خط را پاک می کنم مشکل حل می شود .
the connectionstring property has not been initialized
اگر این دو خط را ننویسم و خالی نکنم مشکلی ایجاد می شود ؟

----------


## sagggad

استاد من یه مشکل خیط دارم:
این دیتابیس به خوبی تو سیستم خودم کار میکنه.البته سیستمم 32 بیتی هست.اما وقتی تو یه سیستم 64 بیتی با همون ویندوز میخوام اجراش کنم ارور زیر رو میده:
1.png

----------


## behrooz69

> سلام
> از آموزش خوبتون تشکر می کنم
> خیلی عالی و واضح توضیح دادید
> یه سوال : وقتی کدهای cmd.dispose() , con.dispose() را می نویسم اولین بار که اطلاعات رو ثبت می کنم همه چیز درست پیش می ره و اطلاعاتم ثبت می شه و تکس باکسها خالی می شه ولی برای نفر بعد که اطلاعات رو وارد می کنم و ثبت رو می زنم در قسمت connection.open(قسمتی که بانک اطلاعاتی رو باز می کنم ) ارور زیر را می دهد و وقتی این دو خط را پاک می کنم مشکل حل می شود .
> the connectionstring property has not been initialized
> اگر این دو خط را ننویسم و خالی نکنم مشکلی ایجاد می شود ؟


باید بیای با دستور چک کردن باز بودن و بسته بودن دیتابیس اینکارو انجام بدی که بعد هر بار ارسال و دریافت اطلاعات کانکشن دیتابیس رو ببنده و حالا واسه بار دوم بیاد اگه باز کانکشن همچنان باز بود ببنده اونو بعد دستورات اجرا بشه و اگه باز نبودم بازش کنه .اینم نمونه کدش که تو پست 22 من صفحه قبلی هست

 ' ///// check state connection age baz bod khoroji bede o amal insert anjam beshe   /////
       con.Open()
       If con.State = ConnectionState.Open Then
           If cmd.ExecuteNonQuery() Then
               con.Close()
               MessageBox.Show(" اطلاعات ورودی مورد نظر ثبت شد")
           End If
       End If
       cmd.Dispose()
       con.Dispose()

----------


## behrooz69

> استاد من یه مشکل خیط دارم:
> این دیتابیس به خوبی تو سیستم خودم کار میکنه.البته سیستمم 32 بیتی هست.اما وقتی تو یه سیستم 64 بیتی با همون ویندوز میخوام اجراش کنم ارور زیر رو میده:
> 1.png


داداشی ورژنMicrosoft .net frameworket b با سیستم ی که 64 بیتیه نمی خونه . تو برنامه هات دات نت فریم ورک 4.5 به بالا رو نصب داری و رو سیستمی که برنامه رو اجرا کردی و Sql توش داری نسخه پایین ترشو . تست کن نصبش کن فریم وورکو . اگه نشد تو Vb قسمت Any cpu  رو انتخاب کن هم 86 و هم 64 بیتی.

یا حق

----------


## نسرین2000

سلام
ممنون بابت آموزش خوبتون
من تو پروژم فیلد نام و نام خانوادگی رو می زنم و جستجو می کنم ، 
مثلا نام و نام خانوادگی را مریم عدل می زنم برای اولین بار درست نشون می ده ولی اگه نام رو به فاطمه تغییر بدم ولی با همون فامیل (عدل) و دوباره دکمه جستجو رو بزنم ارور زیر را می دهد .
The variable name '@first_name' has already been declared. Variable names must be unique within a query batch or stored procedure.

----------


## نسرین2000

یه مشکل دیگه  :گریه: 
وقتی برای اولین بار نام و نام خانوادگی رو جستجو می کنم و نشون می ده اطلاعات رو ، دکمه حذف رو که می زنم پیغام "پیدا نشد " رو نمایش می ده چرا؟
یعنی اصلا تشخیص نمی ده که این اطلاعات تو دیتا بیس هست تا delete بکنه . چرا؟
کدهای مربوط به حذف نام و نام خانوادگی رو هم به صورت زیر نوشتم :
If (txtfirst_name.TextLength > 0 And txtlast_name.TextLength > 0) Then
objcommand.Connection = objconnection
objcommand.CommandText = "DELETE FROM guest WHERE (first_name='" & txtfirst_name.Text & "' and last_name='" & txtlast_name.Text & "')"
objconnection.Open()
Dim count AsInteger
count = objcommand.ExecuteNonQuery()
objconnection.Close()
If count > 0 Then
MessageBox.Show("اطلاعات مورد نظر حذف شد")
Else
MessageBox.Show("اطلاعات مورد نظر پیدا نشد")
EndIf
EndIf
txtfirst_name.Clear()
txtlast_name.Clear()
txtfather_name.Clear()
txtno_shenasnameh.Clear()
txtdate_tavalod.Clear()
txtmahale_tavalod.Clear()
txtphone.Clear()
txtaddress.Clear()

----------


## sagggad

> یه مشکل دیگه 
> وقتی برای اولین بار نام و نام خانوادگی رو جستجو می کنم و نشون می ده اطلاعات رو ، دکمه حذف رو که می زنم پیغام "پیدا نشد " رو نمایش می ده چرا؟
> یعنی اصلا تشخیص نمی ده که این اطلاعات تو دیتا بیس هست تا delete بکنه . چرا؟
> کدهای مربوط به حذف نام و نام خانوادگی رو هم به صورت زیر نوشتم :
> If (txtfirst_name.TextLength > 0 And txtlast_name.TextLength > 0) Then
> objcommand.Connection = objconnection
> objcommand.CommandText = "DELETE FROM guest WHERE (first_name='" & txtfirst_name.Text & "' and last_name='" & txtlast_name.Text & "')"
> objconnection.Open()
> Dim count AsInteger
> ...


سلام دوست من.شما براچی کد if رو داخل پرانتز نوشتید؟؟
If (txtfirst_name.TextLength > 0 And txtlast_name.TextLength > 0) Then
این ممکنه باعث اشکال باشه!

----------


## behrooz69

> سلام دوست من.شما براچی کد if رو داخل پرانتز نوشتید؟؟
> If (txtfirst_name.TextLength > 0 And txtlast_name.TextLength > 0) Then
> این ممکنه باعث اشکال باشه!


سلام . نه دستور If من مشکل ساز نمی کنه و میاد میگه اگه تکس باکس من مقدارش و طولش بزرگتر از 0 بود عملیات رو انجام به .

بعد دوست من شما میای 1 بار دستورات رو می خونی درست . بعدش میای همه txt هاتو clear میکنی و پاک میکنی و دکمه حذف رو میزنی به نظرت برنامه چی رو پیدا کنه ؟؟؟ 

من برنامه رو گذاشتم واسه آموزش شما می تونی برنامه رو بهینه کنی و دوباره بفرسی . هدف من آموزش کار با عملیات اصلی Sql بود.

----------


## barrai

آقا بهروز اگه من بخوام یه دیتا گرید ویو هم بزارم و اطلاعات بعد از ثبت شدن تو دیتا گرید ویو هم نشون داده بشه چیکار باید بکنم؟
ممنون

----------


## sagggad

> آقا بهروز اگه من بخوام یه دیتا گرید ویو هم بزارم و اطلاعات بعد از ثبت شدن تو دیتا گرید ویو هم نشون داده بشه چیکار باید بکنم؟
> ممنون


سلام دوست من.من هم اول با این موضوع مشکل داشتم.اما الان ویدئوی زیر رو واست ساختم دان کن قشنگ متوجه میشی.فقط چون حجمش 3 مگابایت هست نتونستم تو سایت آپلودش کنم .
لینک دانلود: http://www.uplooder.net/cgi-bin/dl.c...2007bd66a09667
موفق باشید :لبخند:

----------


## barrai

یه سوال دیگه
چطوری میتونم تو فرم ویرایش به جای تکست باکس ، کمبو باکس بزارم و از لیست کشویی شماره تلفن را انتخاب کنم و با انتخاب شماره تلفن باقی اطلاعات سر جاهای خودش بشینه ؟
ممنون

----------


## behrooz69

> آقا بهروز اگه من بخوام یه دیتا گرید ویو هم بزارم و اطلاعات بعد از ثبت شدن تو دیتا گرید ویو هم نشون داده بشه چیکار باید بکنم؟
> ممنون



داداشه من برنامه من تو بخش نمایش اطلاعاتش دیتا گرید ویو هست دیگه !!!! نیاز نیست دوباره بذاری که

----------


## barrai

> سلام دوست من.من هم اول با این موضوع مشکل داشتم.اما الان ویدئوی زیر رو واست ساختم دان کن قشنگ متوجه میشی.فقط چون حجمش 3 مگابایت هست نتونستم تو سایت آپلودش کنم .
> لینک دانلود: http://www.uplooder.net/cgi-bin/dl.c...2007bd66a09667
> موفق باشید


 ممنون از حسن توجهتون ولی اون چیزی که من میخواستم نبود یعنی من بعد از ثبت اطلاعات در بانک همون موقع تو دیتا گرید ویو هم ببینم

----------


## behrooz69

> یه سوال دیگه
> چطوری میتونم تو فرم ویرایش به جای تکست باکس ، کمبو باکس بزارم و از لیست کشویی شماره تلفن را انتخاب کنم و با انتخاب شماره تلفن باقی اطلاعات سر جاهای خودش بشینه ؟
> ممنون



باید یه کمبو باکس بذاری و وصلش کنی به دیتابیس . بعد بیای بر حسب اون مقدار جستجو کنی . تکس باکس بهتره چون دست کاربر بازه .

----------


## behrooz69

> سلام آقا بهروز ممنون از وقتی که میذاری 
> من موقع اضافه کردن تیبل به مشکل خوردم که عکس پیغام را برات میذارم نمیدونم بابت چیه 
> sql server 2008  &&  vs2013
> در ضمن یه مورد دیگه تو فرم ادیت با زدن شماره تلفن و زدن دکمه جستجو اطلاعات اون فراخونی میشه ولی اگه ما جنسیت جدید را وارد نکنیم جای خالی جایگزین جنسیت قبلی میشه و این یعنی که باید جنسیت تو قسمت جدیدش نوشته بشه حتی اگه تکراری باشه اینم اگه درستش کنید خوب میشه 
> ممنون


تو دکمه ثبت بیا شرط بذار که اگه تکس باکس جنسیت خالی بود اررور بده اینجوری :

 If TxtGensiyat.Text = String.Empty Then
          MsgBox("نوع جنسیت را وارد كنيد", vbExclamation + vbOKOnly, "پيام")
          TxtGensiyat.Focus()
          Exit Sub
      End If 

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

یا علی

----------


## barrai

> باید یه کمبو باکس بذاری و وصلش کنی به دیتابیس . بعد بیای بر حسب اون مقدار جستجو کنی . تکس باکس بهتره چون دست کاربر بازه .


 میشه بگید چه جوری ؟

----------


## behrooz69

> میشه بگید چه جوری ؟


داداشی سرچ کن تو انجمن هست . من اضافه کردن یه تیبل از دیتابیس رو به کمبو باکس میذارم  . باقیش با خودت . چون خودم کار نکردم روش هنوز داداشی .

 
Private Sub CboNoeMahsol()
 
 
        '// tabee farakhani select 1 field az jadval db be combobox , DISTINCT : bedon tekrar
 
        con = New SqlConnection(My.Settings.conn)
 
        '// age con ma baste bod ono baz mikone
 
        If con.State = ConnectionState.Closed Then
            con.Open()
        End If
 
        Dim da As New SqlDataAdapter("select Distinct Name from TableShoma", con)
 
        Dim ds As New DataTable
 
         
        da.Fill(ds)
 
        ComboName.DataSource = ds
 
        ComboName.DisplayMember = "Name"
 
        '// age con ma baz bod ono mibande
 
        If con.State = ConnectionState.Open Then
            con.Close()
        End If
 
 
    End Sub 


بعدش تو Combo مورد نظر که قراره اطلاعات ما نشون داده شه این تابع رو فراخوانی می کنیم با Call اینجوری 
1
2
3

 Private Sub ComboNameMahsol_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboNameMahsol.DropDown
        Call CboNoeMahsol()
    End Sub

----------


## behrooz69

سلام بچه ها . خو خودمم درگیر این بودم که چرا اررور باز بودن دیتابیس میده وقتی کار انجام شده یا بیشتر از 1 بار رو دکمه جستجو یا بروز رسانی یا هرچیزی کلیک میشه .

1 نمونش تو فرم ویرایش اطلاعات وقتی رو جستجو کلیک میکنید و بروز رسانی میزنید دفعه دیگه که کلیک میکنه اررور میده که همه رو وارد کنید اگه برید تو کد و قسمت آخر Catch رو به این تغییر بدید تا اررور رو بفهمید اینجوری :

Catch ex As Exception
            MsgBox(ex.Message)
        End Try

خو حالا واسه رفع مشکلمون من اول میام چک میکنم که اگه Connection من بسته بود اونو باز کنم .

بعد کارامو انجام بدم موقع دریافت اطلاعات یا همون Query از Sql میام شرط بذارم که اگه Connection ما وضعیتش همچنان باز بود بیا خروجی بده . 

بعد که خروجی داد بیام Connection رو ببندم . 

اینم کدش تو دکمه سرچ :

  If TxtTell.Text = String.Empty Then
            MsgBox("تلفن شخص را وارد كنيد", vbExclamation + vbOKOnly, "پيام")
            TxtTell.Focus()
            Exit Sub
        End If

        If TxtTell.TextLength > 0 Then

            If con.State = ConnectionState.Closed Then
                con.Open()
            End If

            cmd = New SqlCommand()
            cmd.Connection = con
            cmd.CommandText = "SELECT Fname,Lname,Address,Gen FROM TblRegister  WHERE(Tell=@Tell)"
            cmd.Parameters.Add("@Tell", SqlDbType.NVarChar, 50).Value = TxtTell.Text

            'con.Open()
            If con.State = ConnectionState.Open Then
                Dim sReader As SqlDataReader = cmd.ExecuteReader()

                If sReader.Read() Then
                    TxtName.Text = sReader.GetValue(0).ToString()
                    TxtLName.Text = sReader.GetValue(1).ToString()
                    TxtAddress.Text = sReader.GetValue(2).ToString()
                    TxtGen.Text = sReader.GetValue(3).ToString()
                    con.Close()
                Else : MessageBox.Show("پیدا نشد")
                End If
            End If


        End If 

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

  Try
            If con.State = ConnectionState.Closed Then
                con.Open()
            End If
            cmd.CommandText = "UPDATE TblRegister SET Fname=@Fname,Lname=@Lname,Address=@Address,Gen=@Ge  n WHERE(Tell=@Tell)"
            cmd.Parameters.Add("@Fname", SqlDbType.NVarChar, 50).Value = TxtName.Text
            cmd.Parameters.Add("@Lname", SqlDbType.NVarChar, 50).Value = TxtLName.Text
            cmd.Parameters.Add("@Address", SqlDbType.NVarChar, 500).Value = TxtAddress.Text
            cmd.Parameters.Add("@Gen", SqlDbType.NVarChar, 50).Value = CboGen.Text

            'con.Open()
            If con.State = ConnectionState.Open Then
                Dim count As Integer
                count = cmd.ExecuteNonQuery()

                If count > 0 Then
                    MessageBox.Show("بروز رسانی شد")
                    con.Close()
                Else : MessageBox.Show("اطلاعات مورد نظر پیدا نشد")
                End If

            End If

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try 


همه پروژه هاتونم میتونید از این 2تا تیکه کد استفاده کنید .

----------


## swallow.pa

با سلام از آقا بهروز و اموزش مفيدشان
ايا تو sql server express 2008 امكان داره كه پشتيبان فول - و همچنين از تراكنشها بصورت اتومات انجام بشه 
ممنون

----------


## swallow.pa

با سلام از آقا بهروز و اموزش مفيدشان
ايا تو sql server express 2008 امكان داره كه پشتيبان فول - و همچنين از تراكنشها بصورت اتومات انجام بشه 
ممنون

----------


## behrooz69

سلام دوست من منظورت رو نفهمیدم . 
ولی اگه منظورت پشتیبان گیری از بانک خودته که تو بخش Backup & Restore تو بخش Sql server این فروم موجوده . 

به صورت اتوماتیک کردنشم که فقط 1 تایمر میخواد که تو تایم مشخص اینکار انجام شه . ولی تو نرم افزار ها باید بعد از دستور خروج از برنامت اینکار انجام بشه .

وقتی بکاپ گرفت بعد برنامه بسته شه اینجوری :

  Dim s As String
        s = MsgBox("آیا مایل به خروج از برنامه هستید؟ ", MsgBoxStyle.YesNo + MsgBoxStyle.Question, Title:="هشدار")
        If s = vbYes Then
            Try

                Dim cnn As New SqlConnection("Data Source=(local);Initial Catalog=Sardkhone;Integrated Security=True")

                Dim cmd As New SqlCommand
                cnn.Open()
                Dim query As String = "BACKUP DATABASE [Sardkhone] TO DISK =N'E:\Sardkhone.BAK'"
                cmd.CommandText = query
                cmd.Connection = cnn
                cmd.ExecuteNonQuery()
                MsgBox("پشتیبانگیری با موفقیت صورت گرفت")
                cnn.Close()
            Catch ex As Exception
                MsgBox("مشکل در پشتیبان گیری")
            End Try
            End
        End If 

این دستور اول میگه میخواید خروج شید یا نه اگه کاربر بله رو بزنه بکاپ میگیره و دیتابیس منو تو درایو E میریزه . هربارم روش آپدیت میکنه . 

اگه میتونی متغیرش کن به فولدر خود برنامه و فایل زیپشم بکن . من هنز وقت نکردم روش کار کنم . تا حالا هم روش کار نکردم . ولی جستجو کن پره.

یا حق

----------


## a_mohammadi_m

> دستت طلا.فقط من که میام اون رو به فایل خودم کپی کنم ارور زیر رومیده
> ضمیمه 113568
> سیستم رو ریستارت کردم که دیگه اینو نگه اما فایده نداشت!!


سلام
چون دیتابیس توسط sql در حال استفاده است نمیشه کپی کرد 
اول باید روی نام دیتابیس در sql کلیک راست کنی و گزینه Dettach رو بزنی بعد میشه کپی کرد 
بعد از کپی دوباره باید روی Database کلیک راست کنی و Attach Database رو بزنی و با انتخاب دیتابس مورد نظر دوباره فعالش کنی تا در sql و برنامه ات قابل استفاده باشه
من توصیه می کنم جهت انتقال یک دیتابیس به یک Sql دیگه ازش Backup بگیری و در مقصد Restore کنی مراحلش کمتره و همون کار رو برات میکنه
موفق باشید

----------


## a_mohammadi_m

با سلام
نسخه Express با Enterprise تفاوت چندانی در عملکردهای پایه ای  نداره فقط قدرتش کمتره و امکانات اضافی رو نداره
Backup اتوماتیک رو میتونید در قسمت Maintnance Plan در sql تعریف کنید تا در زمانهای مورد نظر شما و در محل مورد نظر شما Backup بگیره 
توصیه می کنم عوض پرسیدن سوالهای جزئی و گرفتن جوابهای ناقصی مثل جواب من ، حتما یک کتاب Sql Server رو کامل بخونید خیلی به دردتون میخوره
موفق باشید

----------


## behrooz69

> با سلام از آقا بهروز و اموزش مفيدشان
> ايا تو sql server express 2008 امكان داره كه پشتيبان فول - و همچنين از تراكنشها بصورت اتومات انجام بشه 
> ممنون


داداش سوالتو خیلی خیلی بد پرسیدی که من اصلا نفهمیدم .
الان که دیدم دوستم توضیح داده متوجه شدم.

آره تو Sql Server 2008 امکان Backup گیری ( پشتیبان گیری ) از دیتابیس به صورت خودکار یا اتوماتیک ( Auto ) وجود داره .

واسه اینکار روی دیتابیست توی برنامه Sql Server 2008 راست کلیک کن و Task و بعدشم Backup رو بزن . همه چیز واضحه ولی بازم بهت میگم.

1 - اسم دیتابیستو واسه بکاپ انتخاب کن
2- نوعشو که کامل باشه یا نه
3 - کل دیتابیستو میخوای یا فایل ها و دیتاهاشو
4- تعیین میکنی که بعد از چند روز یا چه روزی به صورت خودکار بکاپ بگیره
5 - مسیر زخیره سازی بکاپ دیتابیس رو مشخص میکنید.
backup1.jpg

6- منوی آپشن های اضافی تنظیمات بکاپتونه.
7- فایلهای قبلی رو نگه میداره و اطلاعات جدید رو توش میریزه ( حجم دیتابیس بعد هر بار بکاپ حتی اطلاعات وارد نکنی 2 برابر میشه )
8 - اطلاعات جدید رو به جای قبلی جایگزین میکنه ( روش صحیح بکاپ اینه )
9 - قسمت اررور های بکاپه که اولیش بعد بکاپ دوباره چک میکنه بکاپو ، سومی هم میگه اررور رو بیخیال شو و ادامه بده بره  :لبخند گشاده!: 
backup2.jpg

سوال رو واضح بپرسید لطفا خواهشا.


یا حق

----------


## rasouli_70

سلام 
چجوری میشه جدولمونو ویرایش کنیم؟

----------


## behrooz69

جدول کجاتو داداشه من ؟؟؟ دیتابیس رو میگی ؟؟؟ توی Sql server 2008 روی دیتابیست دابل کلیک کن باز که شد روی Tables کلیک کن و Table مورد نظر رو روش راست کلیک کن و Design رو واسه طراحی ، اضافه یا کم و زیاد کردن فیلد هاش استفاده کن و از Show 200 Row رو واسه دیدن 200 رکورد ثبت شده خودت استفاده کن بعد که اطلاعاتتو دیدی ویرایش یا حذف کن

یا حق

----------


## vb341

> توی تکس باکس روی تکس باکس تلفن دابل کلیک کنید و تو رویداد TextChanged اون کد زیر رو واسه فیلتر کردن بر حسب شماره تلفن بنویسید :
> 
> 
> TblRegisterBindingSource.Filter = "Tell Like '*" & TxtTell.Text & "*'"


آقا بهروز سلام . د رعبارت لایک که شما برای جستجو گذاشتین اگر مقدار یک فیلد عدد باشه خطا میگیریه . تغییری در دستور باید داد ؟

----------


## behrooz69

> آقا بهروز سلام . د رعبارت لایک که شما برای جستجو گذاشتین اگر مقدار یک فیلد عدد باشه خطا میگیریه . تغییری در دستور باید داد ؟


سلام نه مشکل نداره . 
textbox تلفن اصلا خودش عدد هستش .

----------


## vb341

آقا بهروز منظور من اینه که نوع فیلد در دیتابیس عددی باشه نه اینکه شما در شماره تلفن عدد وارد کرده باشین .
چون زمانیکه بادستور شما یک فیلد عددی جستجو میشه از DataType  اون اشکال میگیره . لطفا یک بررسی مجدد بفرمائید

----------


## behrooz69

داداشی این تست شدست . اررورش رو بفرست . چون اگه نوع فیلدش رو عدد یا چیز دیگه میذاشتم تو گزارش گیری مشکل ساز بود واسم .

بچه ها کسه دیگه این مشکل رو داره ؟؟؟

----------


## vb341

با سلام 
ارور در خصوص نوع دیتا هست . الان پروه دم دستم نیست و در اداره و در محل کارمه .
ولی عرض کردم . نوع دیتای من در بانک از نوع bigint هست و این دستور شما از نوع دیتا اشکال میگیره . چون دستور شما نوع استرینگ رو برمیگردونه

----------


## behrooz69

> با سلام 
> ارور در خصوص نوع دیتا هست . الان پروه دم دستم نیست و در اداره و در محل کارمه .
> ولی عرض کردم . نوع دیتای من در بانک از نوع bigint هست و این دستور شما از نوع دیتا اشکال میگیره . چون دستور شما نوع استرینگ رو برمیگردونه


دوست من ، پروژه در اختیار شماست . دیتابیس هم که دارید . 

من نوع رو Nvarchar گذاشتم فکر کنم بازم نمیدونم . الان دم دست ندارم تو Pc ایمه . ولی یادمه که موقع نوشتن وقتی نوع int یا BigInt رو سرچ میکردم به مشکل میخوردم . 

Int که 11 عدد میگیره .
BigInt خوبه . ولی فکر کنم Bigint باشه هااا . بازم چک میکنم .

ولی Nvarchar خوبیش اینه که میشه +98 گذاشت دوست من . واسه این گذاشته بودم . ولی بازم چک میشه

----------


## iranaztec

دوستان با سلام من یک سوال فنی دارم
با ویژوال بیسیک دات نت 2008  پروژه ای نوشتم که  قسمتی از وظیفه آن تهیه کپی پشتیبان و بازیابی اطلاعات در است
بازیابی توسط یک query در یک شئی command انجام میشه  به فرم   Restore Database [Dbname] From [BackupFileName] کلی مشکل داشتم که حل شد تا اونجا که دیگه خطا نگرفت اما بعد از restore کردن پیام میده که نمی تونی به این پایگاه داده login کنی (یادآوری می کنم که backup از یک سیستم انجام شده اما restore باید در سیستم دیگری انجام شود (مثلا backup از سیستمی در شمال شهر و restore به سیستم دیگری در جنوب شهر) منظورم اینکه سیستمها هیچ ارتباطی با هم ندارند . بانک هاشون عیناً یکی است فقط نام سیستمها (سرورهاشون) فرق داره

----------


## as987498749874

واقعا دمت گرم........... :تشویق:  :تشویق: 
خیلی عالی بود.من هم سه سوال داشتم اون هم این بود که وقتی فایل دیتابیس طراحی شد و بخوایم در شبکه ازش استفاده کنیم مثلا 5-6 سیستم باید اونو توی یه پوشه شییر شده بذاریم و دایرکتوری کانکشن استرینگ رو هم به ادرس پوشه شییر شده تغییر بدیم.ایا این روش درسته؟ یا روش بهتری برای شبکه هست؟
و دومین سوال: برای انتقال به سیستم مشتری گفتین که engin sql کافیه از نظر حجم فایل نصبیش چقدر هست و ایا حتما برای sql2008 دات نت 4 لازمه چون برناممو با دات نت 2 نوشتم به جهت کاهش حجم فایل ستاپ برا دانلودش؟؟؟؟؟


دوباره ازتون بخاطر وقتتی که گذاشتین تشکر می کنم!!!!!! :قلب:  :قلب:

----------

