View Full Version : آموزش: نكاتی در مورد برنامه نويسي در Visual Basic
اوبالیت به بو
سه شنبه 17 اردیبهشت 1387, 19:48 عصر
ابتدا کار باADO رو می گم:
برای استفاده از تکنولوژی ADO باید Refrence اون رو به پروژه اضافه کنید. روش:
Project - Refrence - Microsoft Actixiv Data Object
نحوه ارتباط پایگاه داده Access با Visual Basic از طریق کد نویسی:
* شی Adodc
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DataBaseName.mdb"
Adodc1.CommandType = adCmdTable
Adodc1.RecordSource = "TableName"
Adodc1.Refresh
ConnectionString: اتصال به انواع مختلف بانک اطلاعاتی هستش. مثل Access - SQL - Oracle - ODBC و...
حالت کلی:
Provider="Provider Code" ; DataSource = "DataSource"Data Source: رشته ای هستش حاوی آدرس بانک اطلاعاتی تویه حافظه جانبی.
CommandType: نوع جستجو در بانک اطلاعاتی رو مشخص می کنه که خاصیت مهمش adCmdTable هستش که جهت اتصال به جدول هستش. برای جستجوی SQL باید این مقدار رو با ثابت adCmdText مقدار دهی کنیم.
نمونه کد برای ثابت adCmdText یا جستجو از طریق SQL:
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DataBaseName.mdb"
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "Select * FORM TableName"
Adodc1.Refresh
DataBaseName: نام بانک اطلاعاتی
TableName: نام جدول
ثابت adCmdTable : یک جدول
اوبالیت به بو
سه شنبه 17 اردیبهشت 1387, 19:50 عصر
نحوه ارتباط پایگاه داده Access با Visual Basic از طریق کد نویسی:
* شی ADODB :
برای این کار باید یک رابط ایجاد کنیم تا با بانک اطلاعاتی وصل بشیم. رابطهامون متغیرهامون هستن.
Dim Cnn As New ADODB.Connection
متغیر Cnn رابط ما شد. با استفاده شی Connection می تونیم با پایگاه داده وصل بشیم. حالا باید با دستور Open بانک رو باز کنیم:
Cnn.Open(ConnectionString)Cnn: متغیر رابط
ConnectionString :اتصال به انواع مختلف بانک اطلاعاتی هستش. مثل Jet- SQL Server - Oracle - ODBC و...
حالا باید به جداول یانک ارتباط برقرار کنیم. یه متغیر برای اتصال به اسم Rst.
Dim Rst As New ADODB.Recordsetباز کردن جدول با دستور Open صورت میگیره:
Rst.Open(TableName,Connection,CursorType,LockType, Option)
*** نکته: حتماً هر فایلی یا هر بانکی که باز میشه حتماً باید بسته بشه. دستور بستن :
Closeاتصال به بانک:
Dim Cnn As New ODODB.Connection
Dim Rst As New ODODB.Recordset
Cnn.Open ( "Provider=Microsoft.Jet.OLEDB.4.0 ; DataSource= & App.Path & \DataBaseName")
Rst.Open(TableName,Cnn,addOpenKeyset,adLockOptimis tic,adCmdTable
.
.
.
Rst.Close
Cnn.Close
Set Rst = Nothing
Set Cnn = Nothing
با Source و ConnectionString آشنا شدیم. حالا Cursor Type.
CursorType: نوع دسترسی شما به Recordset رو بیان می کنه که با یکسری ثابت مقداری دهی میشه.
adOpenForwardOnly: فقط Recordset خواندنی
adOpentStatic : یک Recordset استاتیک در اختیار شماست یعنی هر تغییری که انجام بدین در بانک اعمال نمیشه!
adOpenDynamic: یه Recordset کامل و پویا رو در اختیارتون قرار می ده.
LockType: یک نوع Permission برای Recordset اختیار می کنین.
adLockReadOnly: اجازه ایجاد رکورد جدید رو ندارید. فقط مشاهده.
adCmdtext: تویه پست قبلی توضیح دادم.
adCmdTable : تویه پست قبلی توضیح دادم.
adLockOptimistic: هنگام Update کردن Recordset رو قفل می کنه.
اوبالیت به بو
سه شنبه 17 اردیبهشت 1387, 19:52 عصر
نحوه ارتباط پایگاه داده Access با Visual Basic از طریق کد نویسی:
متدهای Recordset:
متدهایی هستن که به شما امکان پردازش رویه رکوردها رو می ده.
* شی Adodc :
اضافه کردن رکورد جدید:
Adodc1.Recordeset.AddNewرفتن به رکورد دلخواه:
Adodc1.Recordset.Move (RecordNumber)
حذف:
Adodc1.Recordset.Deleteاولین رکورد :
Adodc1.Recordset.MoveFirstرکورد قبلی:
Adodc1.Recordset.MovePreviousرکورد بعدی :
Adodc1.Recordset.MoveNextآخرین رکورد :
Adodc1.Recordset.MoveLastرسیدن به اولین فیلد - {Begin Of File} :
Adodc1.Recordset.BOF
رسیدن به آخرین فیلد - {End Of File} :
Adodc1.Recordset.EOF
ذخیره یک رکورد جدید:
Adodc1.Recordset.Update ذخیره اطلاعات رکورد به صورت فایل :
Adodc1.Recordset.Save جستجو :
Adodc1.Recordset.Find(Criteria As String,SkipRecords As Long,Search Direction As SearchDirectionEnum=adSearchForward,[Start])
Criteria As String: عبارت مورد جستجو
SkipRecord: شروع از رکورد شماره N (پرش از رکورد)
SearchDirection: مسیر جستجو
اوبالیت به بو
سه شنبه 17 اردیبهشت 1387, 19:53 عصر
نحوه ارتباط پایگاه داده Access با Visual Basic از طریق کد نویسی:
متدهای Record Set
* شی ADODB :
بعد از باز کردن Recordset جهت پردازش رکورد ها از روش های زیر استفاده می کنیم:
اضافه کردن رکورد جدید:
Rst.AddNewحذف:
Rst.Delete رفتن به رکورد دلخواه:
Rst.Move (RecordNumber) اولین رکورد :
RST.MoveFirst رکورد قبلی:
RST.MovePreviousرکورد بعدی :
Rst.MoveNext آخرین رکورد :
Rst.MoveLast رسیدن به اولین فیلد - {Begin Of File} :
Rst.BOF رسیدن به آخرین فیلد - {End Of File} :
Rst.EOF ذخیره یک رکورد جدید:
Rst.Update ذخیره اطلاعات رکورد به صورت فایل :
Rst.Save جستجو :
Rst.Find(Criteria As String,SkipRecords As Long,Search Direction As SearchDirectionEnum=adSearchForward,[Start])
Criteria As String: عبارت مورد جستجو
SkipRecord: شروع از رکورد شماره N (پرش از رکورد)
SearchDirection: مسیر جستجو
اوبالیت به بو
سه شنبه 17 اردیبهشت 1387, 19:54 عصر
نحوه ارتباط پایگاه داده Access با Visual Basic از طریق کد نویسی:
ویرایش :
برای ویرایش یک رکورد ابتدا باید رکورد مورد نظر رو جستجو کنیم و سپس مقادیر اون در فیلدهای مختلف رو تغییر بدیم.
Dim Cnn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
.
.
.
Do While Not (Rst.EOF)
If Rst!FirstName = Trim(FirstNameTxt.Text) Then
Rst!LastName = Str(LastName.Text)
Rst!Telephone = Val(PhoneNumberTxt.Text)
End If
Wend
Rst.Close
Set Rst = Nothing
اوبالیت به بو
سه شنبه 17 اردیبهشت 1387, 19:55 عصر
ذخیره عکس در پایگاه داده Access
Private Sub CmdNew_Click()
Adodc1.Recordset.AddNew
End Sub
Private Sub CmdNew_Click()
CommonDialog1.Filter = "(*.JPG)|*.JPG"
If CommonDialog1.Filename <> "" Then
Image1.LoadPicture = (CDMain.Filename)
End If
End Sub
Private Sub CmdSave_Click()
Call CmdOpen
Adodc1.Recordset.Update
Adodc1.Refresh
End Sub
ذخیره عکس در پایگاه داده باعث بالا رفتن حجم پایگاه داده میشه و از سرعت دسترسی به اطلاعات یک رکورد کاسته میشه. پس توصیه میشه که عکس رو در پایگاه داده ذخیره نکنید!
اوبالیت به بو
سه شنبه 17 اردیبهشت 1387, 21:56 عصر
برای دسترسی کاربران به یک سری فعالیت ها باید یک روال بسازیم تا تمام امکانات را در اختیار کاربران قرار دهد.
مثال:
مدیر : اجازه ثبت نام، ویرایش، اخراج دانش آموزان را دارد.
معاون: اجازه ثبت نام، ویرایش دانش آموزان را دارد.
دفتردار : اجازه ویرایش دانش آموزان را دارد.
Option Explicit
Public AddNew As Boolean
Public Delete As Boolean
Public Edit As Boolean
Public GroupTypeName As String
Public Sub GroupType()
'Access Type
If GroupTypeName = "Admin" Then
AddNew = True
Delete = True
Edit = True
End If
If GroupTypeName = "Assistant" Then
AddNew = True
Edit = True
Delete = False
End If
If GroupTypeName = "BookKeeper" Then
AddNew = False
Edit = True
Delete = False
End If
End Sub
یک مثال برای فهم بیشتر.
اوبالیت به بو
چهارشنبه 18 اردیبهشت 1387, 01:51 صبح
« مقدمه »
برای جستجو در پایگاه داده ابتدا باید به اولین رکورد مراجعه شود. بعدش باید فیلد مورد نظر با مقدار مورد جستجو مقایسه بشه. این کاراونقدر ادامه پیدا می کنه تا به آخرین رکورد برسه. در انجا جواب جستجو مقداریست منطقی. یا عنصر مورد نظر ما پیدا میشه(True) یا پیدا نمیشه (False) که باید برای این دو حالت ما کدهایی رو بنویسیم تا کاربر متوجه بشه که آیا جستجوی با موفقیت انجام شده یا نه!
جستجو با استفاده از Find :
Find یک Recordset از شی ADODC و ADODB هستش که این امکان رو فراهم می کنه تا شما در بانک اطلاعاتی شروع به جستجو نمایید.
حالت کلی در شی ADODC:
Adodc1.Recordset.Find(Criteria As String,SkipRecords As Long,Search Direction As SearchDirectionEnumadSearchForward,[Start])
حالت کلی در شی ADODB:
Rst.Find(Criteria As String,SkipRecords As Long,Search Direction As SearchDirectionEnumadSearchForward,[Start])
Criteria As String: عبارت مورد جستجو
SkipRecord: شروع از رکورد شماره N (پرش از رکورد)
SearchDirection: مسیر جستجو
اوبالیت به بو
چهارشنبه 18 اردیبهشت 1387, 02:24 صبح
برنامه ای برای فهم بیشتر.
اوبالیت به بو
چهارشنبه 18 اردیبهشت 1387, 02:56 صبح
این جستجو بیشتر شبیه به SQL (تاحدودی(!)) هستش که شما در اینجا قادرین با استفاده از عملگرهای رابطه ای یک جستجو رو انجام بدین.
توجه: این جستجو زمانی امکان پذیر هستش که جدول ما دارای ایندکس (Index) باشه که در پستهای بعدی بهش اشاره می شه.
عملگرهایی که در این جستجو استفاده می شن به شرح زیر هستن:
= ، > ، < ، =< ، =>
استفاده از این عملگرها باید درون " " انجام بگیره و بعد از گذاشتن کاما (,) دو باره درون " " عبارت مورد شرط رو می نویسیم.
Rst.Seek "=" , "123456789"
رکوردی که فیلد اون برابر شماره 123456789 باشه جستجو میشه.
اوبالیت به بو
چهارشنبه 18 اردیبهشت 1387, 03:20 صبح
جستجو با استفاده از دستورات SQL زماني امكان پذير هستش كه شما به زبان SQL مسلط باشين پس بايد اون رو ياد بگيريد.
ما براي استفاده از دستورات SQL بايد خاصيت CommandType رو برابر adCmdText قرار بديم و بعددرقسمت RecordSource دستورات SQL رو بنويسيم.
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = SQL Code
اوبالیت به بو
پنج شنبه 19 اردیبهشت 1387, 13:30 عصر
Index چیست؟ و به چه دردی می خوره؟:
عمل Index کردن در بانک اطلاعاتی باعث میشه که جستجو در بانک سریع تر انجام بشه. Index میاد رکورد ها رو بر اساس یک فیلد به صورت نزولی یا صعودی مرتب می کنه. با Index کردن ترتیب رکوردها به هم نمی خوره ولی فایلی Indexدار ایجاد میشه که براساس اون فیلد Index شده مرتب شده. مثلاً رکورد زیر:
شماره رکورد، نام، نام خانوادگی، سن
1 - روح الله ، عطایی ، 25
2 - علی ، علی زاده ، 28
3 - علیرضا ، نیکبخت ، 27
4- وحید ، طالب لو ، 25
5 - افشین ، قطبی ، 43
6 - کریم ، باقری ، 36
حالا این جدول پس از Index شدن سن بازیکنان به صورت زیر در میاد:
شماره رکورد ، سن
1 - 25
4 - 25
3 - 27
2 - 28
6 - 36
5 - 43
اوبالیت به بو
پنج شنبه 19 اردیبهشت 1387, 13:52 عصر
مسير زير:
Add-Ins - Visual Data Manager
در پنجره Visual Data Manager مسير:
File - Open DataBase - Microsoft Access
و بانك اطلاعاتي رو انتخاب مي كنيم.
حالا جدول مورد نظر رو Select و بعدش روش RC مي كنيم(RC=Right Click) و از منوي ظاهر شده Design رو كليك مي كنيم. حالا از اينجا به بعد آسونه فيلدهايي رو كه مي خواين ايندكس بشن رو انتخاب مي كنيم.
در Index كردن ما مي توانيم Index را براساس چند فيلد انجام دهيم.
ابتدا Index براساس فيلد اول و بعد فيلد دوم و تا آخرين فيلد Index شده.
http://www.barnamenevis.org/forum/images/icons/icon4.gif هر جدول بيشتر از 10 Index نمي تونه داشته باشه!!
اوبالیت به بو
پنج شنبه 26 اردیبهشت 1387, 09:24 صبح
نمونه. برنامه جستجويي كه به وسيله يه دستور SQL كار مي كنه
اوبالیت به بو
پنج شنبه 26 اردیبهشت 1387, 09:55 صبح
DataGrid كنترلي هستش كه امكان ويرايش، افزايش ركورد، حذف و مشاهده چندين ركورد رو رو به صورت همزمان فراهم مي كنه براي همين ترفدارايه زيادي داره.
Project - Components - Microsoft DataGrid Control 6.0
فارسي كردن ستون هاي عنوان:
بعد از اتصال به Adodc از طريق Properties رويه DataGrid كليك راست و بعد گزينه Edit رو انتخاب. حالا دوباره RC مي كنين و بعد رويه Insert كليك. (به تعداد فيلدهاتون) بعد از تكميل دوباره RC و اين دفعه Properties رو كليك مي كنيم و تو تب Columns ستون مورد نظر رو انتخاب مي كنيم در قسمت Caption يك نام فارسي و در قسمت DataField به فيلد دلخواهمون تو بانك اطلاعاتي وصل مي كنيم.
يه مثال:
اوبالیت به بو
دوشنبه 30 اردیبهشت 1387, 11:56 صبح
مسير:
Project - Component - Microsoft DataList Control 6.0
بيشتر براي نشون دادن ليست تك ستوني از مقادير فيلد ها در جدول هستش. نكته مهم اينه كه ايتصفاده از اين كنترل محدوديت براي حافظه نداره يعني هرچقدر هم ركورد داشته باشين بازم مي تونين نمايش بدين.
براي اينكه در استفاده از اين كنترل راحت باشين اول از همه ركورداتون رو Sort كنين بعد از DataList نشون بدين تا كاربر خيالش از بابت مرتب بودن راحت باشه.
اوبالیت به بو
جمعه 03 خرداد 1387, 18:05 عصر
مسير:
Project - Component - Microsoft DataCombo Control 6.0
http://www.barnamenevis.org/forum/images/icons/icon4.gif علت اينكه تويه اسم كامپوننت ها ميبينيد نوشته Control 6.0 به اين دليل هستش كه مفاهيم پايگاه داده و بانك اطلاعاتي در اين زبان بعد از نسخه 6.0 ويژوال بيسيك مطرح شد.
كنترلي از نوع List و متني و از خانواده آرايه هاست با ويژگي سازگاري با پايگاه داده و طرز كارش شبيه كنترل DataList هستش ولي به صورت Combo عمل مي كنه يعني ديگه احتياجي نيستش كه فضايي به اندازه ي DataList تويه فرم اشغال بكنه.
تنها كاربردي كه داره اينه كه در فيلدهايي كه تعداد مقاديرشون كم هستش كاربرد داره.
مثل تعيين جنسيت (زن،مرد) يا رشته تحصيلي (كامپيوتر، حسابداري، مكانيك و...) يا سال تحصيلي (اول، دوم، سوم و...)!
برنامه ضميمه شد
اوبالیت به بو
دوشنبه 06 خرداد 1387, 18:13 عصر
بدليل نا مقيد بودن كنترل FlexGrid با بانك اطلاعاتي، در نتيجه نمي توان از آن در فرم هاي بانك اطلاعاتي استفاده كرد. براي همين از كنترلDataGrid و يا MSHFlexGrid و حتي ListView استفاده مي كنيم. كنترل DataGrid در اين پست توضيح داده شده.
كنترل MSHFlexGrid:
مسير:
Project - Component - Microsoft Hierarchical Flex Grid Control 6.0 (OLEDB)
كنترلي هستش مانند كنترل DataGrid كه امكان مشاهدع چندين ركرود رو دارا هستش.
جهت اتصال به بانك اطلاعاتي خاصيت Data Source رو مورد استفاده قرار بدين.
برنامه جهت آشنايي بيشتر با اين كنترل.
اوبالیت به بو
دوشنبه 06 خرداد 1387, 18:54 عصر
:گیج:شايد سوال خيلي ها باشه. مي تونيد ازش به صورت هاي مختلفي استفاده كنيد.
مثل نام و نام خانوادگي ، نام كلاس و نام مدرسه و ...
مي تونيد اين برنامه رو با برنامهاي كه در پست تعیین حدود دسترسی کاربران (http://barnamenevis.org/forum/showpost.php?p=511371&postcount=8) گذاشته شده تلفيق كنيد و يه طرح نو با ابتكار خودتون بسازين.
*برگرفته از تايپيك:http://barnamenevis.org/forum/showthread.php?t=96352 (http://barnamenevis.org/forum/showthread.php?t=96352)
اوبالیت به بو
سه شنبه 07 خرداد 1387, 13:37 عصر
ثبت ساعت و تاريخ ميلادي سيستم در بانك اطلاعاتي
اوبالیت به بو
پنج شنبه 09 خرداد 1387, 08:35 صبح
مي تونيد بوسيله عمل فيلترسازي يك شراطي رو براي برخي ركورد ها در نظر گرفت تا ركورد هاي واجد شرايط نمايش داده بشن و ركوردهاي اضافي نمايش داده نشن.
مثلاً مي تونيد كاري كنيد كه دانش آموزاني كه داراي معدل 16 به بالا هستن نمايش دادن بشن. تقريباً همون كار پرس و جو (Query) رو انجام مي ده ولي در يه محيط برنامه نويسي HL(زبان برنامه نويسي غير پايگاه داده اي)
Adodc1.Recordset.Filter = "FieldName =' " + InputValue + " ' "
Adodc1.Recordset.Filter = " FieldName like '" & InputValue & "*'"
FieldName: نام فيلد مورد نظر در بانك اطلاعاتي
InputValue : مقدار ورودي هستش كه از طريق دستورات ورودي (InputBox) يا كنترل هاي ورودي مثل TextBox وارد ميشه.
اوبالیت به بو
پنج شنبه 09 خرداد 1387, 08:51 صبح
نكته: از فيلترسازي ميشه براي جستجو هم استفاده هم كرد اما هميشه جواب 100درصد رو به ما نميده و باعث به نمايش درومدن گروهي ركوردها ميشه
اين برنامه اطلاعات رو بر حسب نام فيلتر مي كنه
اوبالیت به بو
پنج شنبه 09 خرداد 1387, 09:10 صبح
شما به وسيله مرتب سازي مي تونيد ركوردهاتون رو بر اساس يكي از فيلدها مرتب كنيد. دستورش خيلي ساده هستش:
Adodc1.Recordset.Sort = "FieldName"
FieldName: نام فيلد جدول بانك اطلاعاتي
اوبالیت به بو
پنج شنبه 09 خرداد 1387, 09:26 صبح
براي باز كردن يك بانك Password دار فقط و فقط احتياج به يك خط كد هستش. به كد زير دقت كنيد:
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" DataBase Address ; Password=DataBasePassword"
DataBase Address : آدرس بانك اطلاعاتي شما هستش
DataBasePassword: نام رمزي هستش كه شما براي بانكتون اعمال كردين.
اوبالیت به بو
پنج شنبه 09 خرداد 1387, 15:40 عصر
با مفهوم Index (http://barnamenevis.org/forum/showpost.php?p=512460&postcount=13)و اعمال Index در بانك اطلاعاتي (http://barnamenevis.org/forum/showpost.php?p=512474&postcount=14) آشنا شديم.
براي فعال كردن يه Index در يك جدول بايد از متدAppend استفاده كنيم.
Dim DB As DataBase
Dim NewIndex As New Index
Set DB = OpenDataBase ("DataBaseAddress.mdb")
NewIndex.Name = "IndexName"
NewIndex.Fields = "FieldName"
NewIndex.Uniqe = False
DB.TableDefs ("TableName").Indexes.Append NewIndex
MsgBox "ايندكس فعال شد." , vbInformation , "پيام"
DB.Close
DataBaseName.mdb: نام بانك اطلاعاتي هستش
IndexName: نام Index ما هستش كه قرار در مجموعه Indexes (ايندكس هاي جدول) اضافه بشه
FieldName: ايندكس رو برحسب اون فيلد مورد نظر مي سازه.
NewIndex.Uniqe = False: باعث ميشه تا از ورود داده هاي تكراري تويه ايندكس جلوگيري بشه
در خطي كه متد Append نوشته شده NewIndex (همون متغير بالايي) رو به جدول (TableName) از بانك اطلاعاتي (DataBaseName.mdb) اضافه مي كنه.
اوبالیت به بو
پنج شنبه 09 خرداد 1387, 15:44 عصر
http://www.barnamenevis.org/forum/images/icons/icon4.gif نكته: در ايندكس سازي جدول ها، براي هر جدول فقط بايد از يك ايندكس استفاده كنيد.
من تويه پست مفهوم Index (http://barnamenevis.org/forum/showpost.php?p=512460&postcount=13) گفتم كه ميشه از چندين ايندكس در جدول استفاده كرد. ولي تويه نكته گفتم كه يكبار ميشه ايندكس ساخت. چرا؟
منظور اين هستش كه اگر ما ايندكسي رو قبلاً ساخته باشيم ديگه نمي تونيم همون ايندكس رو دوباره بسازيم و دوباره ازش استفاده كنيم چون سيستم Error مي ده. چاره چيه؟ بايد قبل از اجراي برنامه اون ايندكس رو فعال كنيم. براي فعال كردن يك ايندكس بايد از خاصيت Index استفاده كنيم.
Dim DB As DataBase
Dim RS As Recordset
Set DB = OpenDataBase ("DataBaseName.mdb")
Set Rs = OpenRecordst ("TableName")
Rs.Index = "IndexName")
DataBaseName.mdb: نام بانك اطلاعاتي هستش.
TableName: نام جدول بانك اطلاعاتي هستش.
Index: خاصيتي هستش كه ما از اون براي فعال سازي ايندكسي كه قبلاً ايجاد كرديم استفاده مي كنيم.
IndexName: ايندكسي هستش كه ما قبلاً اون رو ايجاد كرديم.
اوبالیت به بو
پنج شنبه 09 خرداد 1387, 16:03 عصر
در پست مفهوم Index (http://barnamenevis.org/forum/showpost.php?p=512460&postcount=13) گفتم كه Indexها در يك مجموعه اي جمع مي شن كه بهش مجموعه Indexes ميگيم و اين رو هم گفتم كه هر جدولي مي تونه فقط تا 10 تا Index داشته باشه.
اگر ما خواستيم كه ايندكسي رو از مجموعه Indexهايي كه ساختيم حذف كنيم از متد Delete استفاده مي كنيم:
DB.TableDefs ("TableName").Indexes.Delete "IndexName"
TableName: نام جدولي هستش كه ما ميخوايم Index رو از اون حذف كنيم.
Delete: متد هستش.
IndexName: نام ايندكسي هستش كه قبلاً ايجاد كرديم و مي خوايم حذفش كنيم.
اوبالیت به بو
پنج شنبه 09 خرداد 1387, 16:18 عصر
با مفهوم جستجو با Seek در پست جستجو با Seek (http://barnamenevis.org/forum/showpost.php?p=511553&postcount=12) آشنا شديم.اين جستجو بر اساس فيلدي كه Index شده باشه انجام مي پذيره.
مثال:
Dim DB As DataBase
Dim Rs As Recordset
Set DB = OpenDataBase ("DataBaseName.mdb")
Set Rs = OpenRecordset ("TableName")
Rs.Index = "IndexName")
Rs.Seek "=" , 18
DataBaseName.mdb: نام پايگاه داده يا بانك اطلاعاتي
TableName: نام جدول مورد نظر كه يكي از فيلدهاي اون قبلاً Index شده
IndexName: ايندكسي كه قبلاً ايجاد شده.
يا:
Rs.Seek "=" , "Ali"
يا:
Rs.Seek ">1369/06/10"
اوبالیت به بو
پنج شنبه 09 خرداد 1387, 16:47 عصر
Filing System
در ابتدا سيستم ذخيره و بازيابي بانك اطلاعاتي توسط سيستم فايلينگ انجام مي شد.
يعني داده هايي كه درون فيلدها به صورت ركورد ذخيره شده بود به صورت يك فايل متني ذخيره مي شد.(بعداً فايل دودويي بوجود مياد) يعني هر ركوردي درون يك فايل ذخيره مي شد. اين نوع ذخيره سازي باعث به وجود اومدن Redundancy (بروز افزونگي) در سيستم فايل مي شد. مثلاً در يك ركوردي اگر فيلدي Computer Software مقدارش بود و در ركورد ديگري همان فيلد مقدار Computer Sftware Engeening وجود داشت باعث بوجود اومدن يك افزونگي در نحوه بازيابي(جستجو يا بازكردن) فايل مي شد. كه بعد ها پايگاه داده رابطه اي بوسيله ادگارد فرانك كاد با نمونه برداري از مجموعه ها در رياضي ساخته شد.
فايل:
مجموعه ركورد هايي هستن كه در كنار هم يك فايل رو تشكيل مي دن.
مراحل دسترسي به فايل:
در كار با فايل بايد 5 تا مرحله رو انجام بديم:
تعريف متغيري به عنوان اشاره گر به فايل (در پاسكال)
ايجاد ارتباط بين اشاره گر مورد نظر و فايل فيزيكي در حافظه جانبي(هارد، فلش، فلاپي و ...)
باز كردن فايل
پردازش فايل
بستن فايل
گزينه اول در پاسكال هستش كه براي دسترسي به فايل متني، نوع دار و بدون نوع به صورت زير تعريف مشه:
Var FP : Text ;
Var FP Fileof Longint;
Var FP File;
اما ما در Visual Basic همچين چيزي رو نداريم.
ما براي دسترسي به فايل به دو چيز نياز داريم:
آدرس فايل
موقعيت فايل
آدرس فايل: آدرس(Path) دقيقي هستش كه ما بايد به برنامه بديم تا اون فايل رو از حافظه جانبي پيدا كنه و موقعيتش رو بدست بياره.
موقعيت فايل: شماره اي هستش كه توسط تابع ()FreeFile پيدا ميشه. از اين تابع مي شه به دو صورت استفاده كرد:
استفاده از يك متغير از نوع Integer
استفاده از FreeFile در دستور
كه هيچ فرقي با هم نمي كنن چون هر فايلي شماره مخصوص خودش رو داره و اگر از تابع FreeFile استفاده بشه محال هستش كه دو فايل با يك شماره باز بشن.
بازكردن، پردازش و بستن
پردازش: يعني عمليات خواندن و نوشتن (اطلاعات جديد، ويرايش اطلاعات قبلي، افزودن) در يك فايل.
براي اينكه يك فايل پردازش بشه بايد اون فايل باز بشه يعني اطلاعات اون خونده بشه بعد پردازش بشه و بعد حتماً بايد بسته بشه.
http://www.barnamenevis.org/forum/images/icons/icon4.gif نكته: هر فايلي كه باز ميشه حتماً بايد بسته بشه چون ممكنه اطلاعات درونش آسيب ببينن.
اوبالیت به بو
شنبه 11 خرداد 1387, 15:22 عصر
فايل ها در Visual Basic دو دسته هستن:
ترتيبي Sequintial File
تصادفي Random File
كه ما با اين دو نوع فايل سروكار داريم.
http://www.barnamenevis.org/forum/images/icons/icon4.gif يك نوع فايل به اسم Binary(فايل دودويي) داريم كه جزء فايل هاي تصادفي محسوب ميشه.
براي باز كردن يك فايل و انجام عمليات روي فايل بايد از يكي از 5 حالتي كه Visual Basic در اختيار ما قرار داده استفاده كنيم:
Input: باز كردن يك فايل ترتيبي جهت خواندن. اشاره گر در ابتداي فايل قرار ميگيره.
Output: باز كردن يك فايل ترتيبي جهت نوشتن. اگر فايل وجود نداشته اون رو ايجاد مي كنه. اشاره گر در ابتداي فايل قرار ميگيره. (حذف اطلاعات قبلي و از نو نوشتن)
Append: باز كردن يك فايل ترتيبي جهت نوشتن. اگر فايل وجود نداشته باشه اون رو در مسير مورد نظر ايجاد مي كنه و شاره گر در انتهاي فايل قرار ميگيره. (بدون حذف اطلاعات قبلي)
Random: باز كردن يك فايل تصادفي. اگر فايل وجود نداشته باشه ايجاد ميش. اشاره گر در ركوردي كه مي خواهيم اطلاعات نوشته بشن قرار ميگيره. زماني استفاده ميش كه بخواهيم يك ركورد رو در جايي معين از فايل ذخيره كنيم (بدون حذف اطلاعات قبلي)
Binary: باز كردن فايل دودويي. در صورت عدم وجود فايل اون رو ايجاد مي كنه.
http://www.barnamenevis.org/forum/images/icons/icon4.gif نكته 1: در تمامي اين حالات فايل اگر وجود نداشته باشه به صورت خودكار در مسير مورد نظر ايجاد ميشه به غير از حالت Input!
http://www.barnamenevis.org/forum/images/icons/icon4.gif نكته 2: از Random برا باز كردن يك فايل ترتيبي ميشه استفاده كرد.( اصلاً براي همين ايجاد شده بدليل كندي فايل ترتيبي)
http://www.barnamenevis.org/forum/images/icons/icon4.gif نكته 3: منظور از اشاره گر همون مكان نما (ماوس) هستش.
اوبالیت به بو
شنبه 11 خرداد 1387, 17:39 عصر
شكل كلي دستور:
Open FilePath For Mode Access AccessType As FileNumber Len = Width
Open: كلمه كليدي جهت باز كردن فايل
FilePath: آدرس دقيق فايل (با پسوند) كه اشاره گر جهت پيدا كردن موقعيت فايل به آدرس فايل ميره.
For: كلمه كليدي
Mode: حالات دسترسي به فايل (http://barnamenevis.org/forum/showpost.php?p=527244&postcount=32)
Access: كلمه كليدي
AccessType: نوع دسترسي به فايل با مشخصات زير:
Shared: در شبكه كاربران مي توانند همزمان يك فايل رو باز كنند.
Lock Read: كاربر فايل رو فقط مي تونه بخونه
Lock Write: كاربر اجازه ويرايش يا تغييرات رو در فايل دارند.
Lock Read Write: كاربر مي تونه فايل رو بخونه بنويسه
AS: كلمه كليدي
FileNumber: شماره فايل كه بوسيله تابع ()FreeFile بدست مياد ( توضيحات:مفهوم فايل - File (http://barnamenevis.org/forum/showpost.php?p=526793&postcount=31))
Len: كلمه كليدي
Width: طول يك ركورد از فايل رو تعيين مي كنه.
http://www.barnamenevis.org/forum/images/icons/icon4.gif به هر سطر در فايل ركورد مي گن.
باز كردن يك فايل ترتيبي جهت خواندن:
Open "C:\Student.txt" For Input As #FreeFile Len = 7
اين فايل قبلاً در مسير "C:\Student.txt" وجود داشته در غير اينصورت پيغام خطا صادر ميشه و يك ركورد به طول 7 رو مي خونه.
باز كردن يك فايل ترتيبي جهت نوشتن (پاك شدن اطلاعات قبلي):
Open "C:\Student.txt" For Output As #FreeFile Len = 7
اگر فايلي با اين نام از قبل بوده اطلاعاتش رو پاك مي كنه و اشاره گر رو در ابتداي فايل نگه مي داره و اجازه نوشتن يك ركوردي به طول 7 رو صادر مي كنه.
باز كردن يك فايل ترتيبي جهت نوشتن (بدون پاك شدن اطلاعات قبلي):
FileNumber = FreeFile
Open "C:\Student.txt" For Append As #FileNumber Len = 7
Print #FileNumber, "Obalit"
Close #FileNumber
http://www.barnamenevis.org/forum/images/icons/icon4.gif من در اينجا يك متغير FileNumber از نوع Integer تعريف كردم و مقدارش رو برابر تابع ()FreeFile قرار دادم.
فايل Student.txt رو باز مي كنه و بدون اينكه اطلاعات قبلي اون رو پاك كنه اون رو باز مي كنه و اجازه نوشتن ركوردي به طول 7 رو صادر مي كنه و بوسيله دستور Print (http://barnamenevis.org/forum/showpost.php?p=527353&postcount=34)درون فايل كلمه Obalit رو مي نويسه. و در انتها بوسيله دستور Close (http://barnamenevis.org/forum/showpost.php?p=527339&postcount=35)فايل رو ميبنده.
باز كردن يك فايل تصادفي:
براي باز كردن يك فايل تصادفي بايد حالات دسترسي به فايل (http://barnamenevis.org/forum/showpost.php?p=527244&postcount=32) به صورت Random باشه. فايل تصادفي زماني به د مي خوره كه دسترسي ما به فايل به صورت مستقيم باشه يعني بوسيله آدرس دقيق فايل (آدرس + ركورد مورد نظر) ما بخواهيم يه فايل رو باز كنيم.
Open "C:\Student.txt" For Random As #FreeFile Len = RecordWidth
بوسيله اين دستور ميشه اطلاعات فايل tudent.txt به صورت تصادفي خواند.
http://www.barnamenevis.org/forum/images/icons/icon4.gif معمولاً براي نوشتن (ثبت ركورد) از اين حالت استفاده مي شه.
اوبالیت به بو
شنبه 11 خرداد 1387, 18:19 عصر
هر فايلي كه باز ميشه براي پردازش اون دو حالت وجود داره:
يا براي خوندن اطلاعاتش باز شده
يا براي نوشتن اطلاعات جديد باز شده
http://www.barnamenevis.org/forum/images/icons/icon4.gif اطلاعات = ركورد
خواندن فايل
براي خواندن فايل بايد حالت دسترسي به فايل (http://barnamenevis.org/forum/showpost.php?p=527244&postcount=32) Input باشه تا بشه اطلاعاتش رو خوند. دستوري كه ميشه باهاش اطلاعاتش رو خوند دستور Line Input هستش.
شكل كلي اين دستور:
Line Input #FileNumber , InputString
Line Input: كلمه كليدي جهت خواندن فايل
FileNumbe: شماره فايل
InputString: رشته اي هستش كه قراره خونده بشه.
http://www.barnamenevis.org/forum/images/icons/icon4.gif چون فايل ما ترتيبي هستش نميشه به يك ركورد خاصي اشاره كرد اگر فايل 500 ركورد داشت و ما بخواهيم به ركورد 239 بريم بايد 500 ركورد رو خوند پس براي خوندن اطلاعات يك ركورد تمامي ركورد ها بايد خونده بشن. عيب اين نوع فايل سنگيني و كندي اون هستش كه علتش همين هستش.
http://www.barnamenevis.org/forum/images/icons/icon3.gif حالا من مي خوام اطلاعات فايل Student.txt رو بخونم و در يه متغير به اسم strInput قرار بدم و سپس در يك TextBox اونا رو بريزم:
Dim strInput As String
Dim FileNumber As Integer
FileNumber = FreeFile
Open "C:\Student.txt" For Input As #FileNumber
Do While Not EOF(FileNumber)
Line Input #FileNumber, strInput
Loop
Close #FileNumber
PassageTxt.Text = strInput
نوشتن فايل
براي نوشتن فايل دو راه وجود داره:
استفاده از دستور Print
استفاده از دستور Write
دستور Print:
از دستور Print براي نوشتن تويه فايل ترتبي استفاده ميشه.
شكل كلي دستور:
Print #FileNumber , OutputString
Print: كلمه كليدي جهت نوشتن در فايل ترتيبي
FileNumber: شماره فايل ترتيبي
OutputString: رشته يا عبارتي كه قرار نوشته بشه در فايل ترتيبي
http://www.barnamenevis.org/forum/images/icons/icon3.gif حالا من مي خوام اطلاعات يه TextBox رو در يه متغير به اسم strOutput قرار بدم و سپس در فايل Student.txt اونا رو بريزم:
Dim strOutput As String
Dim FileNumber As Integer
FileNumber = FreeFile
Open "C:\Student.txt" For Output As #FileNumber
strOutput = PassageTxt.Text
Print #FileNumber, strOutput
Close #FileNumber
دستور Write:
از دستور Write هم ميشه براي نوشتن اطلاعات در يك فايل متني هم استفاده كرد و دقيقاً مثل دستور Print هست با يكسري تفاوت كه فيلدها در دستور Write با كاما (,) از هم جدا ميشن و درون دوتا دبل كوتيشن (" ") و مقادير تاريخ و منطقي درون دوتا علامت شارپ (#) قرار ميگيرن.
String Value : " Barnamenevis.ORG "
DateValue : #10/3/1387#
Boolean : #True# OR #False#
شكل كلي دستور:
Write #FileNumber , OutputString
Write: كلمه كليدي جهت نوشتن در فايل ترتيب
FileNumber: شماره فايل ترتيبي
OutputString: ليست خروجي ها كه قراره در فايل ترتيبي نوشته بشن.
اوبالیت به بو
شنبه 11 خرداد 1387, 18:47 عصر
هر فايلي كه باز ميشه حتماً بايد بسته بشه حالا چه بخواد پردازش بشه چه بخواد نشه حتماً بايد بسته بشه.
با استفاده از دستور Close ميشه يك فايل ترتيبي و تصادفي رو بست.
شكل كلي دستور:
Close #FileNumber
Close: لمه كليدي جهت بستن فايل ترتيبي يا تصادفي
FileNumber شماره فايل
در برنامه اي ممكن هست كه ما 4 تا 5 تا فايل ترتيي يا تصادفي رو باز كنيم شايد هم در برخي مواقع 20 تا فايل. براي بستن تك تك اين فايل ها شايد معقول به نظر نرسه كه n تا دستور Close نوشت. براي همين اگر بخواهيم تمامي فايل هاي ترتيبي يا تصادفي رو ببنديم از دستور Close به صورت تنها استفاده مي كنيم:
Close
اون موقع تمام فايل ها بسته مي شن.
اوبالیت به بو
سه شنبه 14 خرداد 1387, 14:36 عصر
http://www.barnamenevis.org/forum/images/icons/icon4.gif جهت كار با فايل تصادفي بايد ما طول ركورد و شماره ركورد فايل مورد نظر را بدونيم در غير اينصورت ما نمي تونيم فايل رو پردازش كينم به دليل اينكه برنامه با اين فرمول مي تونه ابتداي يك ركورد رو حدس بزنه:
طل ركورد * شماره ركورد
دستور Get:
براي خواندن از فايل تصادفي بايد از دستور Get استفاده كنيم.
شكل كلي دستور:
Get #FileNumber , RecordNumber,InputString
Get: دستور خواندن در فايل تصادفي
FileNumber: شماره فايل تصادفي
RecordNumber: شماره ركورد كه قراره اطلاعات از اونجا خونده بشه.
InputString: متغيري كه قراره اطلاعات درون فايل توش ريخته بشه.
خواندن اطلاعات يك فايل:
Open "C:\Student.txt" For Random As #FileNumber Len = 3
For Counter = 1 To 3
Get #FileNumber, Counter, strInput
Next Counter
Close #FileNumber
دستور Put:
براي نوشتن در يك فايل تصادفي ما از دستور Put استفاده مي كنيم.
شكل كلي دستور:
Put #FileNumber , RecordNumber , OutputString
Put: دستور جهت نوشتن در فايل به صورت تصادفي
Filenumber: شماره فايل تصادفي
RecordNumber: شماره ركوردي كه قراره توش اطلاعات نوشته بشه
Outputstring: متغير يا رشته اي هستش كه قراره جايه RecordNumber جايگزين بشه.
نوشتن اصلاعات در يك فايل:
Open "C:\Student.txt" For Random As #FileNumber Len = 15
Put#FileNumber, 3, "Barnamenevis.ORG"
Close #FileNumber
عبارت Barnamenevis.ORG در ركورد شماره 3 نوشته ميشه.
اوبالیت به بو
چهارشنبه 15 خرداد 1387, 13:49 عصر
http://www.barnamenevis.org/forum/images/icons/icon3.gif مفهوم:
بعضي اوقات منه برنامه نويس احتياج به يه نوع داده (DataType) جديدي دارم كه تو انواع داده هاي ويژوال بيسيك تعبيه نشده يعني اون چيزي كه من مي خوام نيست. بوسيله UDT مي شه يه نوع داده اي جديد ساخت.
شكل كلي:
Type UDTName
Element's
.
.
.
End Type
Varaible of UDT
http://www.barnamenevis.org/forum/images/icons/icon4.gif نوع داده جديد بايد تو Declarations بخش General تعريف بشه.
Type: كلمه كليدي كه دستور ساخت هستش.
UDTName: يك نام منحصر به فرد براي نوع داده جديدمون انتخاب مي كنيم.
Element's متغير هايي هستن كه نوع داده اونها از نوع داده هاي ويژوال بيسيك مثل Byte, Integer ,String,... بايد باشه.
http://www.barnamenevis.org/forum/images/icons/icon4.gif در تعريف Element's ها نبايد از كلمات Dim , Static, Public , Private استفاده كرد و بايد بدون اينها نوشته بشن. مثل:
Type RecordStudent
FName As String
Age As Byte
.
.
.
EndType: كلمه كليدي كه بلاك رو ميبنده.
Varaible of Element : متغيري هستش كه از نوع UDTName هستش و فقط يك متغير از اين نوع داريم:
Dim RecordStudent As Student
http://www.barnamenevis.org/forum/images/icons/icon2.gif يك مثال:
من يك نوع داده جديد به اسم RecordStudent مي سازم و متغيري به اسم Student از اين نوع تعريف مي كنم:
Type RecordStudent
FName As String * 10
LName As String * 15
Age As Byte
Average As Single
TelePhone As Integer
End Type
Public Student As RecordStudent
http://www.barnamenevis.org/forum/images/icons/icon5.gif دسترسي به فيلدهاي UDT:
براي دسترسي به فيلدها و مقدار دهي يا چاپ مقادير قبلي اونها بايد ابتدا نام متغيري از نوع UDT و بعد فيلدهاي درونش رو بنويسيم:
VaraibleofUDT.FieldName = Value
Student.FName = "Obalit"
اوبالیت به بو
شنبه 18 خرداد 1387, 01:38 صبح
استفاده از UDT در فايلهاي تصادفي.
اوبالیت به بو
شنبه 18 خرداد 1387, 01:43 صبح
استفاده از UDT در فايلهاي ترتيبي.
اوبالیت به بو
شنبه 18 خرداد 1387, 04:34 صبح
DriveListBox
يه Object كه براي نمايش و تغيير درايو از طريف برنامه استفاده ميشه براي تغيير درايو فعلي يا نمايش يه درايو ديگه بايد از خاصيت Drive اين كنترل استفاده كنيم.
مثال:
Private Sub CmdChange_Click()
Drive1.Drive = "E"
End Sub
DirectoryListBox
از اين كنترل براي نمايش يا تغير پوشه ها از طريف برنامه استفاده ميشه. مهمترين خاصيت ها:
Path: آدرس دقيق پوشه مورد نظر رو برميگردونه. مثال:
Private Sub CmdPath_Click()
MsgBox Dir1.Path
End Sub
FileListBox
عنصري هستش كه ميشه باهاش فايلها رو مشاهده كرد. مهمترين ويژگي:
Pattern: مانند Filter تويه CommonDialog كار مي كنه يعني فايلهايي كه داراي شرايط خاصي هستن رو نشون مي ده. مثال:
FileListBox1.Pattern = "*.txt"
Hidden: فايلهايي كه به صورت مخفي هستن رو نشون مي ده در صورتي كه با True مقدار دهي بشه(پس منطقي هستش)
System: اگر با True مقدار دهي بشه فايلهاي سيستمي رو نشون مي ده
Path: آدرس دقيق فايل مورد نظر رو اعلام مي كنه.
Private Sub CmdPath_Click()
MsgBox File1.Path & File1.List(File1.ListIndex)
End Sub
اوبالیت به بو
شنبه 18 خرداد 1387, 14:17 عصر
تابع ()Dir:
تابعي هستش كه بوسيله اون ميشه فهميد فايل مورد نظر در درايو جاري وجود داره يا نه. پس خروجي اون مقداريست منطقي. در صورت وجود فايل خروجي True و در صورت پيدا نشدن فايل مورد نظر خروجي False خواهد بود.
مثال:
كد زير تعيين مي كنه كه آيا فايل Student.txt در درايو C وجود داره يا نه.
If (Dir("C:\Student.txt") = "Student.txt") Then
MsgBox "اين فايل موجود مي باشد"
Else
MsgBox "اين فايل موجود نمي باشد"
End If
تابع () CurDir:
تابعي هستش كه مي شه بوسيله اون نام دايركتوري فعلي رو تعيين كرد.
MsgBox CurDir("D")
اوبالیت به بو
شنبه 18 خرداد 1387, 14:49 عصر
دستور Kill:
فايل مورد نظر را پاك مي كند.
مثال فايل Student.txt از دايركتوري خود پاك مي شود:
Kill ("C:\Student.txt")
http://www.barnamenevis.org/forum/images/icons/icon4.gif فايل حتما بايد بسته باشد.
دستور MkDir :
يك پوشه در آدرس مورد نظر خود يعني Path مي سازد.
مثال پوشه Student را در درايو D مي سازد:
MkDir ("D:\Student")
دستور RmDir:
يك پوشه را پاك مي كند ولي بايد شرايط زير محيا باشد:
داخل پوشه خالي باشد (يعني هيچ فايل يا پوشه ديگري وجود نداشته باشد)
هم اكنون درون اين پوشه نباشيم (يعني پوشه جاري نباشد)
مثال پوشه Student از درايو D پاك مي شود:
RmDir("D:\Student")
دستور ChDrive:
با استفاده از اين فرمان ميشه به يك درايو ديگر رفت يعني درايو جاري را تغيير داد.
ChDrive ("F:")
دستور ChDir:
با استفاده از اين دستور ميشه به پوشه ديگري رفت يعني بين پوشه ها حركت كرد.
ChDir ("teacher")
دستور Name:
با استفاده از اين دستور ميشه يك فايل رو Rename كرد.
شكل كلي:
Name OldFileName As NewFileName
OldFileName : نام فايل قديمي
NewFileName : نام جديدي كه قراره براي فايل قديمي انتخاب كنيم.
مثال:
Name "C:\Student.txt" As "Teacher.txt"
دستور Seek:
با اين دستور ميشه اشاره گر يا مكان نما رو به محل دلخواه فايل فرستاد.
شكل كلي:
Seek #FileNumber , RecordNumber
FileNumber: شماره فايل مورد نظر
RecordNumber: شماره ركوردي كه مي خوايم مكان نما اونجا قرار بگيره.
مثال:
Seek #1 , 9
Put #1, 9, "Barnamenevis.ORG"
http://www.barnamenevis.org/forum/images/icons/icon4.gif در تمامي دستورات بالا (دستوراتي كه كار با پوشه و فايل هستند) اگر نام درايو ذكر نشود، درايو پيش فرض درايوي هستش كه نرم افزار Visual Studio نصب شده.
اوبالیت به بو
شنبه 18 خرداد 1387, 16:56 عصر
دستور Input
دستور Input اطلاعات فيلد يك فايل رو به طور كامل مي خونه. يعني اگر ما فيلدهايي رو در يك فايل ترتيبي تعيين كرده باشيم و بهشون مقداري رو داده باشيم، تمامي مقادير اونها رو درون متغيري كه از قبل جلوي دستور Input نوشتيم به ترتيب ميريزه:
Input #FileNumber, FirstVaraible, SecondVaraible, ....
مثلاً كد زير اطلاعات فيلد FirstName ، LastName و Telephone رو از فايل Student.txt مي خونه و هر مقداري كه درونش باشه رو در متغيرهاي FName ، LName و Tel مي ريزه.:
Open "C:\Student.txt" For Input As #FileNumber
Input #FileNumber, FName, LName, Tel
Close #FileNumber
دستور Line Input
اين دستور براي خواندن يك سطر از فايل ترتيبي به كار مي ره. يعني مثلاً اگر در سطر پنجم يك فايلي نام و نام خانوادگي و شماره دانش آموزي به ترتيب نوشته بود اونها رو به صورت رشته مي خونه و درون يك متغير از نوع رشته (String) ميريزه. يعني اينجا ديگه براش فرقي نمي كنه كه چند تا فيلد يا ركورد داريم مهم اين هستش كه اطلاعات رو بخونه و در متغير اصلي قرار بده.
Line Input #FileNumber, StringVaraible
FileNumber: شماره فايل
StringVaraible: متغيري از نوع String
حالا اينجا يك بحثي مطرح ميشه: شايد من برنامه نويس مي خوام بوسيله دستور Line Input تمامي اطلاعات فايل رو بخونم در صورتي كه من اين اجازه رو ندارم! چون كه گفتيم Line Input اطلاعات يك سطر از فايل ترتيبي رو مي خونه. حالا چاره چيه؟
اين هستش كه ما در يك حلقه نامعين به همراه دستور EOF اطلاعات رو بخونيم و اطلاعات جديد رو به اطلاعات قبلي پيوند بديم يا بهم بچسبونيم.
كد زير اطلاعات فايل Help.txt رو بوسيله يه حلقه مي خونه:
FileNumber = FreeFile
Open "C:\Help.txt" For Input As #FileNumber
While Not EOF(FileNumber)
Line Input #FileNumber, strInput
strOutput = strOutput & strInput
Wend
Close #FileNumber
Print strOutput
اوبالیت به بو
شنبه 18 خرداد 1387, 17:12 عصر
تابع API:
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
lpszSoundName: آدرس دقيق فايل صوتي
uFlags: اگر با 1 مقدار دهي بشه فايل صوتي پخش ميشه.
http://www.barnamenevis.org/forum/images/icons/icon4.gif بايد قبل از پخش صدا يك روال (Sub) خودمون بسازيم تا زماني كه مي خواهيم فايل رو پخش كنيم آدرس رو دريافت مي كنه و بر اساس اون آدرس يا Path فايل رو پخش مي كنه.
روال تابع:
Private Sub PlaySound(strFileName As String)
sndPlaySound strFileName, 1
End Sub
strFileName: آدرس دقيق فايل صوتي
*************************
http://www.barnamenevis.org/forum/images/icons/icon3.gif برنامه رو دانلود كنيد.
اوبالیت به بو
دوشنبه 20 خرداد 1387, 02:51 صبح
مسير:
Project - Components - Windows MultiMedia Control 6.0
كنترلي هستش كه بعد از نسخه 6 ويژوال بيسيك ارائه شد و براي انجام كارهاي MultiMedia خيلي ساده و كوچيك مورد استفاده قرار ميگيره.
مهمترين خاصيتي كه داره، خاصيت DeviceType اون هستش كه با مقادير زير براي انجام كاراي MultiMedia مقدار دهي ميشه:
WaveAudio - پخش فايل صوتي با فرمت Wave
AviVideo - پخش فايل تصويري كوچيك با فرمت Avi
Scanner - كار با اسكنر
CDAudio - پخش فايل صوتي به صورت Audio از روي CD
....
يكي ديگه از خاصيت هاي مهمش خاصيت FileName هستش كه از نوع String هستش و آدرس دقيق فايل رو برمي گردونه.
يه خاصيت ديگه داره به اسم UpdateInterval كه مياد كنترل رو بر اساس مقداري كه بر حسب ميلي ثانيه گرفته به روز مي كنه.
يه خاصيت ديگه داره به ام Command كه ميشه به كنترل دستورات اصلي پخش در ابزارهاي MultiMedi رو داد. مثل Play,Stop,... كه به صورت زير به كار مي ره:
Objectname.Command = "Command"
ObjectName: نام كنترل هستش كه معمولاً براي راحتي MMC Control ميزارن.
Command: كلمه كليدي
"Command: اعمال اصلي در ابزارهاي ultiMedia هستش مثل:
Play
Eject
Pause
Stop
Next
Previous
Close
Open
Seek
...
يه خاصيت ديگه داره به اسم Mode كه به ما ميگه الان كنترل در چه وضعيتي هستش آيا باز هستش آيا در حال پخش هستش ايا در حال Record هست و...
پخش يه فايل صوتي با فرمت Wave:
MMControl1.DeviceType = "WaveAudio"
MMControl1.FileName = "C:\Kate Ryan.Wav"
MMControl1.Command = "Open"
MMControl1.Command = "Play"
http://www.barnamenevis.org/forum/images/icons/icon4.gif اگر من در خط سوم نوشتم Open به اين دليل هستش كه اين ابزار هم با فايل كار مي كنه و قبلاً اشاره كردم كه براي كار با فايل بايد اول باز بشه پردازش بشه و بعد بسته بشه.
اوبالیت به بو
چهارشنبه 22 خرداد 1387, 02:19 صبح
http://www.barnamenevis.org/forum/images/icons/icon3.gif پاسخ سوال يكي از دوستان در اين پست (http://barnamenevis.org/forum/showpost.php?p=533602&postcount=1).
.This Program Worked By Find Method You Can used More Way. e.c: SQL, Filter, Index
اوبالیت به بو
پنج شنبه 23 خرداد 1387, 16:31 عصر
براي نمايش فيلم كوتاه با استفاده از كنترل MMC Control ، احتياج به يه PictureBox داريم. چون براي پخش فيلم كنترل MMC احتياج به يه پنجره خروجي براي نمايش فيلم داره. دليلش اينه كه مهمترين خاصيت اون يعني DeviceType با AviVideo مقدار دهي شده.
PictureBox يه خاصيتي به اسم hWndDisplay داره. اين همون خاصيتي هستش كه در MMC هم وجود داره. وقتي ما اينها رو برابر هم قرار ميديم كنترل MMC خروجي رو درون PictureBox ميريزه و فيلم به نمايش درمياد.
يعني :
MMCControl.HWndDisplay = Picture1.hwnd
اوبالیت به بو
سه شنبه 28 خرداد 1387, 21:15 عصر
از اين فرمول:
Int (Rnd * (HighBound - LowerBound)) + LowerBound
LowerBound: حد پايين
HighBound: حد بالا
Dim LowerBound, HighBound, Area As Integer
LowerBound = InputBox("Enter Lower Bound:", "Lower Bound of Area")
HighBound = InputBox("Enter High Bound:", "High Bound of Area")
Area = HighBound - LowerBound
Print Int(Rnd * Area) + LowerBound
http://www.barnamenevis.org/forum/images/icons/icon4.gif Area محدوده هستش.
اوبالیت به بو
سه شنبه 28 خرداد 1387, 21:23 عصر
يك آرايه كه تعداد خونه هاش از كاربر گرفته ميشه و در يك حلقه معين شروع به گرفتن يك مقدار تصادفي مي كنه.
Option Explicit
Option Base 1
Dim LowerBound, HighBound, Area As Integer
Dim mArray() As Integer
Dim HomeArray As Integer
Dim Counter As Integer
Dim ArrayValue As Integer
HomeArray = InputBox("Enter Number of few Home For mArray:", "Index of Value")
ReDim mArray(HomeArray) As Integer
'Creat Random Number
LowerBound = InputBox("Enter Lower Bound:", "Lower Bound of Area")
HighBound = InputBox("Enter High Bound:", "High Bound of Area")
Area = HighBound - LowerBound
For ArrayValue = LBound(mArray) To UBound(mArray)
mArray(ArrayValue) = Int(Rnd * Area) + LowerBound
Next ArrayValue
'Print MArray
For Counter = LBound(mArray) To UBound(mArray)
Print mArray(Counter) 'Print MArray in the Form
Next Counter
اوبالیت به بو
سه شنبه 28 خرداد 1387, 21:30 عصر
همون طور كه مي دونيد ListBox آرايه اي از رشته هاست.
اوبالیت به بو
پنج شنبه 30 خرداد 1387, 13:53 عصر
انواع تقويم:
2 فايل OCX
برنامه
اوبالیت به بو
چهارشنبه 05 تیر 1387, 15:12 عصر
كار با كنترل خيلي ساده Animation
اوبالیت به بو
جمعه 07 تیر 1387, 21:23 عصر
مسير:
Project - Component - Windows Media Player
خيلي ساده هستش و فقط با URL كار مي كنيد.
http://www.barnamenevis.org/forum/images/icons/icon3.gif مي تونيد براي پخش بعضي از صدا ها براي قسمت Open URL اين كد رو در نظر بگيريد:
If Right(URLAddress, 3) = "Suffix" Then
URLAddress: آدرس URL هستش كه شما تايپ مي كنيد.
Suffix: پسوند يا فيلتري هستش كه شما اعمال مي كنيد مثل MP3,Wav,...
http://www.barnamenevis.org/forum/images/icons/icon4.gif نكته: اگر از اين كد:
WindowsMediaPlayer1.openPlayer CDMain.FileName
يا
' WindowsMediaPlayer1.openPlayer URLAddress
استفاده كنيد خود Media Player ويندوز باز ميشه و برنامه ديگه كارايي نداره.
y.saied
یک شنبه 23 تیر 1387, 20:22 عصر
جناب obalitjoOon (http://barnamenevis.org/forum/member.php?u=47457) ، دستت درد نکنه ........ خیلی ممنون
من از vb sp6 استفاده میکنم و میخوام در پروژه ام از Ado استفاده کنم برای استفاده از تکنولوژی Ado باید کدوم یکی از این گزینه های زیر رو در Refrence فعال کنم :
1) : Microsoft ActiveX Data Objects (Multi-dimensional) 2.8 Library
2) : Microsoft ActiveX Data Objects 2.0 Library
3) : Microsoft ActiveX Data Objects 2.1 Library
4) :Microsoft ActiveX Data Objects 2.5 Library
5) :Microsoft ActiveX Data Objects 2.6 Library
6) :Microsoft ActiveX Data Objects 2.7 Library
7) :Microsoft ActiveX Data Objects 2.8 Library
8) :Microsoft ActiveX Data Objects Recordset 2.8 Library
اوبالیت به بو
یک شنبه 23 تیر 1387, 20:33 عصر
من از vb sp6 استفاده میکنم و میخوام در پروژه ام از Ado استفاده کنم برای استفاده از تکنولوژی Ado باید کدوم یکی از این گزینه های زیر رو در Refrence فعال کنم :
اينها همشون كتابخانه هاي ADO هستش و هر كدوم رو انتخاب كنيد مي تونيد كار كنيد.
من تويه پست اول Microsoft ActiveX Data Objects 2.0 Library رو انتخاب كردم و با اون جلو اومدم.
*************************
http://www.barnamenevis.org/forum/images/icons/icon3.gif توجه: لطفاً دوستان اينجا سوال نكنن و اگر مطلب آموزشي جديدي دارن كه به درد بخوره رو حتماً پست كنن.
اوبالیت به بو
پنج شنبه 27 تیر 1387, 12:42 عصر
استفاده از كاراكترهاي فارسي در يك ورودي:
Private Sub PassageTxt_KeyPress(KeyAscii As Integer)
If KeyAscii >= 199 And KeyAscii <= 237 Or KeyAscii = 32 Or KeyAscii = 8 Then
PassageTxt.Text = PassageTxt.Text & Chr(KeyAscii)
End If
End Sub
اوبالیت به بو
پنج شنبه 27 تیر 1387, 12:52 عصر
با اين برنامه ميشه بانك اطلاعاتي طراحي كرد.
اوبالیت به بو
جمعه 04 مرداد 1387, 16:32 عصر
ذخيره عكس در پايگاه داده كه سوال خيلي از بچه هاست.
اوبالیت به بو
شنبه 05 مرداد 1387, 22:41 عصر
جستجو در فايل ترتيبي كه با تابع Dir كار كردم.
اوبالیت به بو
جمعه 08 شهریور 1387, 16:49 عصر
ويژوال بيسيك از جمله برنامه هايي است كه قابليت پيكر بندي بالايي براي تنظيم محيط IDE خود دارد. براي انجام و آشنـــايي با اين پيكر بندي كافيست از منوي Tools گزينه Option را كليك كنيد:
http://i36.tinypic.com/ot4684.jpg
توجه: قبل از باز كردن پنجره Option حتماً بايد يك پروژه باز داشته باشيد در غير اينصورت اين پنجره غير فعال خواهد بود.
هم اكنون پنجره كوچكي كه در مقابل خود مي بينيد پنجره Option نام دارد كه در آن زبانه ها يا نشـانه هايي از قبيل Editor، Editor Format، General، Docking، Environment و Advanced وجود دارد كه در ادامه به تمام اين زبانه هاي مي پردازم.
زبانه Editor:
زبانه Editorبه شما اين امكــــان را مي دهد تا پنجره Code و Project محيط IDE خود را ساماندهي كنيد. همان طور كه مي دونيد قسمت Projectبه بررسي فرم هـا و مدول هايي كه در برنامه استفاده شده مي پردازد و اجازه سوييچ كردن يا حركت كردن بين فرم ها و مدول ها رو در اختيار شما قرار مي دهد. پنجره Code هم مكانيست كه شما در آن برنامه نويسي مي كنيد. حال وقت آن رسيده تا با اين نشانه بيشتر آشنا بشويم.
http://i33.tinypic.com/i6bfy0.jpg
در Frame يا قسمت Code Setting شما تغييراتي در پنجره Code برنامه هــاي خود ايجاد مي كنيد. گزينه Auto Syntax Check وظيفه اش اين است كه خطاهـاي نحوي يا املايي برنامه نويس را اعلام نمايد.
نكته: خطاي نحوي خطايي است كه در اثر تايپ اشتباه نام يك شي يا متد يا خصيصه يا ... بوجود مي آيد كه در اثر عدم تمركز برنامه نويس رخ مي دهد.
اگر اين گزينه غير فعال باشد، شما اگر يك عبارت را به اشتباه تايپ كنيد تا زمان كامپـــايل هيچ پيغــامي مبني بر اشتباه بودن كد به شما داده نمي شود. پس بهتر است كه فعال باشد تا ما را از اشتباهات خود آگاه سازد. گزينه Require Varaible Declaration عبـارت "Option Explicit" را به ابتداي هر مدول يا فرم اضافه مي كند و باعث مي شود تا اعلان يا تعريف متغير ها به صورت صريح باشد. هنگامي كه اين كد به بخش General Declaration اضافه شود فقط و فقط متغيرهـايي كه به صورت صريح اعلان مي شوند اجازه فعاليت در برنامه را خواهند داشت.با يك مثال اين گزينه را براي شما باز مي كنم. شما در يك رول عبارات زير را وارد كنيد:
Firstname = "Obalit Behboo"
First Name = "Obalit Behboo"
اگر به متغيرهــا توجه كرده باشيد يك فرق كوچك وجود دارد و آن در متغير دومي است كه يك Space در نام آن وجود دارد و همان طور كه مي دانيد قوانين نــامگذاري متغيرهــا اجـازه استفاده از Space را به ما نمي دهد پس حتمـاً پيغام خطا صادر مي شود. همچنين استفاده از دو متغير همنام نيز را مجاز نمي كند. چه خوب هستش كه اين پيغام خطا همين الان به ما داده شود تا زمــــاني كه برنامه را دست مشتري داده ايم. اينجاست كه "Option Explicit" به كمك ما مي رسد. با اضافه كردن اين كد به بالاي هر مدول هر متغيري بايد به صورت صريح اعلان شود. يعني:
Option Explicit
Dim Firstname As String * 10
گزينه Auto List Member گزينه اي است كه به مــا برنامه نويسي ساده و آسـان را هديه مي دهد. حالا چــرا هديه؟؟ وقتي شما يك عبارت را در پنجره Code تايپ مي كنيد اگر يكي دو حرف از عبـارت را بنويسيد و بعد كليد هاي Ctrl + Space را با هم وارد كنيد يك پنجره كوچك كنار كد شمــا باز مي شود كه به شما ليست متدها و مشخصه هاي موجود را مي دهد و كافيست شما با انتخاب گزينه مربوطه و با زدن يك Space از تايپ زياد كد خودداري كنيد و در زمان عزيز تر از جان خود صرفه جويي كنيد. گزينه Auto Quick Info اطلاعاتي درباره تابع و پـارامترهاي مربوط به ان مي دهد. مثلاً تابع InputBox را اگر شما استفاده كنيد، در هنگام نوشتن كد برنامه يك ToolTip باز مي كد كه در قسمت اول بايد Promp يا متني كه قرار است به نمـايش دربيايد نوشته شود و در قسمت دوم بايد Title تابع مشخص گردد كه حتي به نوع پـــارامتر مربوطه نيز اشاره مي شود كه از چه نوعي است. (String ,Long,…)
گزينه Auto Data Tips مقدار موجو يك متغير را مشخص مي كند. شما اگر با كليد F8 برنامه را آغاز كنيد برنامه به صورت گام به گام در مقابل چشم شما اجرا مي شود. در اين زمان اگر كرسر ماوس خود را چند ثانيه جلوي نــام متغير نگه داريد مقدار كنوني متغير را مشخص مي كند. مثلاً مي خواهيم بدانيم متغير حلقه For ما هم اكنون در چندمين زمان تكرار خود است يا متغير بولي ما False است يا True.
گزينه Auto Indent گزينه بسيار جالبي است. هنگامي كه شما به تايپي كد مي پردازيد، كد خود را بلوك بندي (Block) مي كنيد يعني يك آرايش و نظمي به آن مي دهيد و اين كــار را با فشردن كليد TAB انجام مي دهيد. به شكل زير توجه كنيد:
http://i37.tinypic.com/zx1z5j.jpg
همـان طور كه ميبينيد بعد از دستور IF…Then دستور Print با كمي فاصله نوشته شده. اين كار را گزينه Auto Indent انجام مي دهد و قسمت Tab Width مقدار فاصله ايجاد شده بعد از فشردن كليد TAB را ايجاد مي كند.
در Frame يا قسمت Window Setting سه گزينه وجود دارد:
گزينه Drag-and-Drop Text Editor اين امكـــان را مي دهد تا كد پنجره Codeرا به درون پنجره هاي Immediate و Watch درگ كنيد. همــان طور كه مي دانيد پنجره هــــــــاي Immediate و Watch براي Debug كردن برنامه هــــاست.
اگر گزينه Default to Full Module View را فعــال كنيد مي توانيد تمامي روال هاي موجود در مدول يـا فرم جاري خود را ببينيد. اگر غير فعال باشد چه اتفاقي مي افتد؟؟ هيچي! فقط روال مربوط به شي خود يــا تــابع خود را مي تــوانيد تمــاشــا كنيد. مثلاً اگر شمــا برروي يك Command Button كليك كنيد فقط روال مربوط به اين كنترل نمــايش داده مي شود و براي مشاهده روال هاي ديگر بايد بر روي آن شي دوبار كليك كنيد يا روي آن شي راست كليك كنيد و بعد View Code رو انتخاب كنيد.
گزينه Procedure Sparator باعث ميشه كه روال ها بــا يك خط از هم جدا بشن. اگر غير فعال باشد اين خطوط به نمايش در نخواهند آمد.
زبانه Editor Format :
اين زبانه به شما امكان پيكربندي كد برنامه در پنجره Code را فراهم ميكند.
http://i34.tinypic.com/2s1lpnq.jpg
Frame يا قسمت Code Color رنگ كد شما در زمان هاي مختلف را نشان مي دهد. مثلاً در زمـان Syntax Error text يــا وجود خطــــاي نحوي رنگ كد قرمز مي شود يــا عبــارات Comment text به رنگ سبز رنگ در مي آيند. گزينه Foreground رنگ پيش ضمينه، گزينه background رنگ پس زمينه و Indicator حــــــاشيه از سمت راست و چپ كد را مشخص مي كند. بخش Font نيز نوع فونت به همـراه انـدازه را مشخص مي كند. اين قسمت تـاثيري در برنامه شما نخواهد داشت و صرفاً بر اساس علايق شخصي برنامه نويس تنظيم مي شود.
زبانه General:
در اين بخش شما مي توانيد به خطاهايي كه در زمان كامپايل رخ مي دهد رسيدگي نماييد.
http://i36.tinypic.com/29lmclt.jpg
بخش Form Grid Setting باعث شبكه بندي فرم و اجــزاي آن در زمان طراحي مي شود. منظورم از شبكه بندي همون نقطه هاي ريز و سيـاهي است كه در اطراف يك كنترل در زمان طراحي به نمايش در مياد كه واحد آن بر حسب Twips است.
بخش Error Trapping تعيين مي كند تــا ويـژوال بيسيك چگونه به خطاها رسيدگي كند. گزينه Break on All Errors باعث مي شود كه به هنگــام بروز خطا پروژه يا برنامه وارد قسمت Break شود. گـزينه Break in Class Module كه به طور پيش فرض انتخاب شده پروژه را زمـاني به قسمت Break مي برد كه يك خطاي رسيدگي نشده در مدول يك كلاس رخ دهد. يعني در انتهاي كدي كه خطا در آن ايجاد شده وارد بخش Break شود. گزينه Break on Unhandled Error اگر يك خطاي رسيدگي نشده در يك مدول وجود داشته باشد عمل Break در آن خطي از كد كه باعث بوجود آمدن خطا شده صورت مي گيرد. بخش Compile نحوه كامپــايل شدن پروژه را تعيين مي كند. اگر گزينه Compile on Demand انتخاب شده باشد، وقتي شمـا كليد F5 را فشــار مي دهيد برنــامه يك بـار از ابتدا تا انتهـا كامپـايل مي شود و بعد اجرا مي شود دقياقاً مثل Pascal. اگر Background Compile انتخــاب شده بــاشد دو گزينه اي كه در پـــايين پنجره به نام هاي ToolTips و Collapse Proj.Hide Windows وجود دارند فعــال مي شوند كه بــا انتخــاب ToolTip توضيحاتي در مورد شي كه در زير فلش ماوس قرار دارد نمايش مي دهد. و گزينه دوم بــاعث Hide شدن يك پنجره به هنگــام از بين رفتن پروژه در قسمت project Explorer را مشخص مي كند. پس گزينه Background Compile زماني كاربرد دارد كه ما در حــال طراحي فرم و يا چيدن اشيا بر روي آن هستيم.
زبانه Docking:
اين زبـانه باعث مي شود تا يك پنجره بتواند خودش را به پنجرا هاي ديگر متصل نمايد. يعني پنجره هاي موجود در محيط IDE ويژوال بيسيك رو شما مي توانيد هر جا كه دوست داشته باشد انتقال بدهيد.
http://i36.tinypic.com/e0fmrp.jpg
ليست پنجره هايي كه شما مي توانيد جابه جا كنيد در قسمت Dockable آمده است كه اسامي همه آنها براي شما آشناست.
زبانه Environment:
يك قسمت جالب و فوق العاده براي محيط IDE ويژوال بيسيك است كه به شما امكان توسعه محيط كار خود را فراهم مي نمايد.
http://i37.tinypic.com/rh4m11.jpg
بخشWhen Visual Basic Starts را مي توان از نـام آن حدس زد كه چه كــــار مي كند "زماني كه ويژوال بيسيك آغاز به كار مي كند" .در اين بخش شما مي توانيد انتخـــاب كنيد كه وقتي ويژوال بيسيك اجرا شد از شمـا سوال كند كه بــا چه نوع پروژه اي سروكار داريد يا خير. يعني نوع پــروژه را از شمــا سوال مي كند. مثلاً Standard EXE. (امتحان كنيد خيلي جالبه) مي توانيد تعيين كنيد نوع پروژه فعلي، پروژه اي باشد كه آخرين بار استفاده كرده ايد.
بخش When a Program تعيين مي كند كه در زمـــان اجراي پروژه (وقتي F5 را ميزنيم) آخــرين تغييرات انجـام شده برروي پروژه اعمال شود يا در تمام حالات ذخيره اي انجام نشود. بخش Templateقالبهاي از پيش آماده را در هنگـام پيكربندي را مشخص مي كند كه مي توان در قسمت Directory مسير آن را مشخص كنيد.
زبانه Advanced:
تنظيمات پيشرفته برروي پروژه ويژوال بيسيك را انجام مي دهد.
http://i37.tinypic.com/1z49x8w.jpg
گزينه Background Project Load سرعت برگشت كنترل به هنگــــام بار شدن يا Load شدن يك پروژه است كه به صورت پيش فرض انتخاب شده.
گزينه دوم به شمــا اين امكان را مي دهد تا به هنگام تغيير در ذخيره گزينه ها يا Item هاي يك پروژه كه به صورت Shared يا مشترك هستند متوجه موضوع شويد چون اين موضوع باعث مي شود تا شما در هر پروژه كپي Item ها را ذخيره كنيد.
گزينه سوم يا SDI Development Environmet باعث ميشه تــا محيط IDE ويژوال بيسيك شما از حالت MDI خارج بشه يعني اون قسمت قهوه اي تيره رنگي كه در محيط ويژوال بيسيك وجود داره از بين بره. (تقريباً شبيه محيط Delphi ميشه. اينم امتحان كنيد جالبه).
گزينه External HTML Editor تعيين ويرايشگر HTML ويــژوال بيسيك است كه از برنــامه NotePad ويندوز براي ويرايشگر HTML خودش استفاده مي كند.
دانلود از طريق:
http://www.2shared.com/fadmin/3843640/4360eeb6/Learn_Option_Window_in_Visual_Basic.rar
http://www.2shared.com/file/3843640/7187174f/Learn_Option_Window_in_Visual_Basic.html
r0ot$harp
یک شنبه 24 شهریور 1387, 16:12 عصر
سلام نکته ای به نظرم رسید که بعضی از دوستان مشکل دارند اونم در استفاده از متد ShowFont در CommonDialog .
خوب دوستان در استفاده از CommonDialog و استفاده از متد ShowFont حتما قبل از استفاده باید متد Flags رو باید مقدار دهی کنید .
من در زیر سه مقدار که مقدارهای این متد هست رو با توضیح فارسی قرار دادم .
CommonDialog1.Flags = 1 : برای نمایش فونت های صفحه نمایش به کار می رود یعنی فونت های مربوط به پرینتر نمایش داده نمی شود .
CommonDialog1.Flags = 2 : برای نمایش فونت های پرینتر به کار می رود .
CommonDialog1.Flags = 3 : و آخرین مقدار که 3 هست برای نمایش جفت گروه ها استفاده می شود ، یعنی هم نمایش فونت های صفحه نمایش و فونت های چاپگر .
امید وارم این نکته به درد دوستان خورده باشه .
باتشکر احسان
aminkk
دوشنبه 01 مهر 1387, 23:20 عصر
اين تابع تعيين مي كند كه فلان روز چندمين روز هفته است.
اين تابع يك تاريخ را به عنوان ورودي از كاربر دريافت مي كند و سپس با مشخص كردن اولين روز هفته به ما مي گويد كه آن روز چندمين روز هفته در آن تاريخ بوده است.
مثلاً دستور زير تعيين مي كند كه روز Monday در تاريخ 12/5/2008 برابر پنجمين روز است:
MsgBox Weekday("12/5/2008", vbMonday)
حال اگر ما بخواهيم ببينيم كه بر اساس تاريخ حال،شنبه چندمين روز است از كد زير استفاده مي كنيم:
Print Weekday(Now, vbSaturday)
MFiRE
سه شنبه 02 مهر 1387, 00:08 صبح
یه نکته برایه کاربرایه حرفه ای !
هر جا که نگاه می کنم می بینم در تعریف چند متغییر در یک خط همه دارن اشتباه می کنن !!
حتی یه بار به یه استاد ویژوال بیسیک گفتم که داره اشتباه می کنه ! و درستش اینجوره ، ولی گفت چی می گی ... میازار موری که دانه کش است ... که جان داردو ... :لبخند:
خب بگذریم ! معمولا همه اینجور متغییر ها رو تعریف می کنن :
Dim A, B, C As Integer
ولی تعریفه متغییر به طوره صحیح به این صورته :
Dim A As Integer, B As Integer, C As Integer
برای مشاهده ی صحت این موضوع از کد زیر استفاده کنید :
Dim A , B , C As Integer
MsgBox TypeName(A)
MsgBox TypeName(C)
البته وقتی به یه متغییر مقداری داده بشه ، ویژوال بیسیک به صورته خودکار نوع اون رو بسته به اون مقدار تعیین می کنه ! اما ...
داشتم رویه یه پروژه کار می کردم که با فایلها سرو کار داشت . بایت به بایت رو می گرفتم و ... . دقیقا یادم نیست ولی (فکر می کنم) تویه قرار دادنه بایت ها درونه متغییرها ، پیغام خطا می داد.
اگه اشتباه نکنم خطایه زیر بود :
Variable uses an Automation type not supported in Visual Basic
... !
Dr.Bronx
پنج شنبه 07 آذر 1387, 22:10 عصر
به نام خدا
توي اين تاپيك قصد دارم نكاتي از بهترين و كاربردي ترين نكات برنامه نويسي رو براي شما بنويسم - اگر غلط املايي يا اشتباهي در كدها ديديد اون رو پاي اشتباه تايپي بنده بزاريد چون تمام نوشته هارو بايد تايپ كنم.
ممكنه توي يك پست فقط يك جمله ببينيد اون همون نكته است مطمئن باشيد يك روزي به دردتون مي خوره
سعي مي كنم هر روز حد اقل يك يا دو نكته رو بگم
موفق باشيد
Dr.Bronx
پنج شنبه 07 آذر 1387, 22:11 عصر
تبديل يك عدد به ساعت ، دقيقه و ثانيه
فرض كنيد در حال نوشتن برنامه اي هستيد كه داراي يكسري رويداد ها و اتفاقات در خصوص زمان بوده و مقدار عددي زمان را متناسب با مجموع ثانيه هايي كه آن رويداد طول مي كشد تا كارش را انجام دهد ، بدست آورده و بازيابي كنيد . همچنين قصد آنرا داريد كه مقدار ثانيه ها را به معادلش بر حسب دقيقه و ثانيه تبديل و عبارت به دست آمده را به كاربر نمايش دهشد . عملگر Mod در ويژوال بيسيك اين پردازش تبديلي را برايتان انجام مي دهد.
بكارگيري عملگر Mod براي محاسبه دوره هاي زماني سپري شده
عملگر Mod در ويژوال بيسيك ، دو عدد را به هم تقسيم مي كند اما فقط باقيمانده عمل تقسيم را بر مي گرداند . اگر بخواهيد معين كنيد كه عدد 121 ( كل ثانيه هايي كه براي يك رويداد ثبت شده است ) چند دقيقه و ثانيه مي شود ، اين عدد را بر 60 تقسيم مي كنيد (ثانيه به ازاي هر دقيقه )نتيجه تقسيم عدد 2 و باقيمانده آن نيز 1 خواهد بود . اينك اگر از عملگر Mod ، مجددا بر روي عدد اصلي استفاده كنيد ، عدد 1 را دريافت خواهيد كرد كه همان باقيمانده تقسيم فوق است . اين تبديل ،در نهايت عدد 121 را به دو دقيقه و يك ثانيه تبديل مي كند.
برنامه نمونه
اين برنامه چگونگي بكارگيري عملگر mod براي تبديل عدد متناسب با زمان به يك رشته را نشان مي دهد .
1- پروژه جديدي در ويژوال بيسيك ايجاد نماييد به طور پيش فرض Form1 ايجاد مي شود.
2- كنترلي از نوع Label به Form1 اضافه كنيد . بطور پيش فرض Lable1 ايجاد مي شود. خصوصيت Caption آن را با عبارت "Enter A Value" تنظيم نماييد.
3- سپس كنترلي از نوع Text Box در كنار Label1 اضافه كنيد . بطور پيش فرض Text1 ايجاد مي شود. خصوصيت Text آنرا نيز با Null (خالي) تنظيم نماييد.
4- كد زير را به رويداد LostFocus مربوط به Text1 اضافه نماييد
Sub Text1_Lostfocus()
Dim Isec as integer
Isec = val(text1.text)
Breaksex = Str$(Int(Isec /60 )) & "Minute" & Str$(Isec Mod 60) & " Second "
text2.text = Breaksec
end sub
5- كنترلي از نوع Label در زير Label1 به Form1 اضافه كنيد . به طور پيش فرض Label2 ايجاد مي شود خصوصيت Caption آن را با عبارت "Time Passed " تنظيم نماييد.
6- در كنار Label2 و در زير Text1 , كنترل ديگري از نوع Text box اضافه كنيد به طور پيش فرض Text2 ايجاد مي شود . خاصيت text آن را به مقدار خالي تنظيم نماييد.
8- هنگام اجراي برنامه كاربردي يك مقداد عددي در Textbox اول وارد كنيد . سپس كليد Tab را براي ريختن آن به دومين textbox فشار دهيد . برنامه عدد وارد شده را به رشته اي تبديل مي كند كه اين رشته متناسب با مقدار دقيقه و ثانيه مي باشد.
فايل PDF اين آموزش در ضميمه
Dr.Bronx
پنج شنبه 07 آذر 1387, 22:26 عصر
انتخاب اتوماتيك متن داخل يك Text Box هنگامي كه نقطه تمركز برنامه با زدن كليد TAB به اين كنترل منتقل مي شود.
اين كار با استفاده از تابغ GetKeyState امكان پذير است .
برنامه نمونه
جمله Declare زير را به قسمت معرفيهاي عمومي فرم اضافه نماييد
Public Declare Function GetKeyState Lib "user32" alias "GetKeyState" (Byval NVirtkey As Long ) As Integer
ثابت زير را نيز در قسمت معرفي هاي عمومي مربوط به Form1 وارد كنيد
Const VK_TAB = &H9
دو كنترل از نوع textbox بر روي فرم قرار دهيد . Text1 و text2 ايجاد مي شود.
كد زير را در رويداد Load مربوط به Form1 وارد نماييد.
Sun Form_load()
Text1.text = "Press Tab To Select The Text"
Text2.text = ""
Text2.Text = "This is a Paragraph that should be selected. "
end sub
كد زير را در رويداد GetFocus مربوط به text2 وارد نماييد.
Sub Text2_Getfocus()
Dim X as integer
X = GetKeyState(Vk_Tab)
If Getkeystate(VK_Tab) and -256 then
text2.setfocus
Text2.selstart = 0
Text2.SelLenght = Len(Text2.text)
end if
End sub
پس از اجراي برنامه نقطه تمركز بر روي Textbox اول است كليد TAB را فشار دهيد تا نقطه تمركز به سمت دومين TEXTBOX حر كت كند . در اين حالت متن درون TEXTBOX دوم به صورت اتوماتيك انتخاب مي شود.
فايل PDF اين آموزش در ضميمه
Dr.Bronx
پنج شنبه 07 آذر 1387, 22:31 عصر
موس و كليد هاي فوري نيازي به فوكوس ندارند
. . . هر جايي را كه كاربر كليك كند ماوس بدون توجه به اينكه كدام پنجره و كنترل قبل از كليك داراي فوكوس بوده است كليك ماوس را انجام مي دهد . . .
Dr.Bronx
پنج شنبه 07 آذر 1387, 22:45 عصر
استخراح فونتهاي صفحه نمايش و چاپگر
برنامه زير سه كنترل List Box را بر روي يك فرم نمايش مي دهد كه فونتهاي چاپگر در اولي فونتهاي صفحه نمايش در دومي و فونتهاي مشترك دو ويسله در سومي ليست شده اند.
پروژه جديد را آغاز كنيد . بطور پيش فرض Form1 ايجاد مي شود.
سه كنترل از نوع List Bpx و در كنار يكديگر به Form 1 ايجاد مي شود .
براي هر سه ليست باكس خصوصيت Sorted را با True تنظيم كنيد.
كد زير را در رويداد load مربوط به Form1 وارد كنيد.
Sub Form_Load()
Dim X as integer
Dim Y As integer
For x = 0 To Screen.Fontcount -1
For Y = 0 To Printer.Fontcount - 1
if screen.fonts(x) = printer.fonts(y) then
list3.additem Printer.Fonts(y)
end if
Next Y
Next X
For X = 0 to Printer.fontcount - 1
List1.additem Printer.Fonts(X)
next x
For X = 0 To Screen.FontCount - 1
List2.additem Screen.fonts (X)
next X
end sub
فايل PDF اين آموزش در ضميمه
mpmsoft
پنج شنبه 07 آذر 1387, 22:52 عصر
دوست عزیز بهتر نبود این مسائل رو در بخش نكات برنامه نويسي مطرح کنید
http://barnamenevis.org/forum/showthread.php?t=104724
Dr.Bronx
پنج شنبه 07 آذر 1387, 22:59 عصر
تبديل يك سند Word به فرمت RTF
پروژها جديدي را ايجاد نماييد . به طور پيش فرض Form1 ايجاد مي شود.
كنترلي از نوع Command Button به فرم اضافه كنيد . Command1 به طور پيش فرض ايجاد مي شود.
كد زير را در رويداد Click كنترل مزبور وارد نماييد.
Private Sub Command1_Click()
dim obj as object
Set obt = CreateObject("Word.Basic")
obg.Fileopen "C:\demo.doc"
Obg.FileSaveass "c:\Demo.rtf", 6
Set Obg= Nothing
msgbox "Document Convertedto Rtf Format"
End Sub
توجه : فرض اين برنامه اين است كه شما يك سند ورد با نام demo.doc را در شاخه اصلي درايو C خود ذخيره كرده ايد .
فايل PDF اين آموزش در ضميمه
Dr.Bronx
پنج شنبه 07 آذر 1387, 23:02 عصر
دوست عزیز بهتر نبود این مسائل رو در بخش نكات برنامه نويسي مطرح کنید
http://barnamenevis.org/forum/showthread.php?t=104724
دقت كنيد اين دو تاپيك كلا نوع كاركردش جدا است
اونجا فقط آدرس چنين تاپيك هايي قرار داده شده.
با تشكر از شما
Dr.Bronx
شنبه 09 آذر 1387, 13:27 عصر
مشخصي كردن اينكه فايلي از قبل موجود است يا نه ؟
تابع OpenFile كه از توابع API ويندوز مي باشد روش توانمند و مناسبي را براي مشخص كردن اينكه آيا نام يك فايل يا مسير موجود است يا نه ارائه مي كند.
آرگومانهاي تابع OpenFile
Ipfilename
رشته اي شامل نام ، شامل نام مسيري براي آزمايش باشد يا نباشد.
IpReOpenBuff
يك ساختار OFSTRUCT كه بعد از فراخواني شدن تابع OpenFile حاوي اطلاعاتي در مورد فايل است.
WStyle
اين آرگومان ، تركيبي از يك يا چند پرچم (Flag) بوده و نوع عملياتي كه روي فايل اجرا مي شود را مشخص مي كند.
برنامه نمونه
پروژه جديدي را ايجاد نماييد.
كد زير را به يك ماژول عمومي (Global module) در پروژه اضافه كنيد :
Public Type OFSTRUCT
cBytes as byte
fFixeddisk as byte
nErrCode as integer
Reserved1 as integer
Reserved2 as integer
szpathname (OFS_MAXPATHNAME) as byte
end type
const of_exist = &H4000
جمله Declare زير را در قسمت معرفيهاي عمومي مربوط به FORM1 اضافه نماييد :
Declare Function OpenFile Lip "Kernel32" alias "Openfile" (Byval IpFilename as string, Ip Reopenbuff as OFSTRUCT , Byval Wstyle as long ) as long
جمله DIM زير را نيز به قسمت معرفيهاي عمومي FORM1 وارد كنيد :
Dim wStyle as integer
Dim Buffer as OFSTRUCT
Dim Isthere as long
Dim TestFile As String
كد زير را در رويداد LOAD مربوط به FORM1 وارد كنيد:
Sub Form_Load()
TestFile = "C:\TestFile.dat"
Isthere = OpenFile(TestFile, Buffer , Of_EXIST)
if isthere < 0 then
GoTo Checkforerror
else
Debug.print " This File Already Exist"
End if
CheckForError:
isthere = buffer.nerrcode
if isthere = 3 then
debug.print "pathname not foung"
end if
end sub
فايل PDF اين آموزش در ضميمه
Dr.Bronx
شنبه 09 آذر 1387, 14:49 عصر
پخش فايلهاي Wav در ويژوال بيسيك
اين بخش توضيح مي دهد چگونه يك فايل صوتي شكل موجي (.wav) را در ويژوال بيسيك پخش كنيد.
استفاده از تابع SndPlaySound
اين تابع API امكان پخش فايلهاي صوتي را در برنامه كاربردي فراهم مي سازد.
پارامتر هاي تابع
SND_ASYNC
تابع بعد از پخش فايل فورا باز مي گردد و فايل به صورت آسنكرون پخش مي شود.
SND_LOOP
با پارامتر SND_ASYNC استفاده مي شود . پخش فايل بصورت دوره اي تا زمان فراخواني تابع SndPlaysound با پارامتر اول برار Null پخش مي شود.
SND_MEMORY
فايل پخش شده در حافظه ذخيره شده است.
SND_NODEFAULT
اگر فايل مشخص شده پيدا نشد تابع بر مي گردد و صوت پيش فرض پخش مي شود.
SND_NOSTOP
اگر فايل شروع به پخش كرده باشد تابع بدون پخش صورت مشخص شده بر مي گردد.
SND_SYNC
تابع تا هنگامي كه پخش فايل صوتي تمام نشده بر نمي گردد.
برنامه نمونه
پروژه جديدي را ايجاد نماييد.
جملات Declare و Constant زير را به بخش معرفيهاي عمومي FORM1 اضافه كنيد:
Private Declare Function SndPlaysound Lib "Winmm.dll" alias "sndplaysoundA" (Byval Ipszsoundnamd as string , Byval uFlags as long )as long
Const SND_SYNC = &H0
Const SND_NODEFAUT = &H2
يك CommandButton به فرم خود اضافه كنيد به طور پيش فرض Command1 ايجاد ميشود .
كد زير را در رويداد Click كنترل Command1 وارد كنيد:
Private Sub Command1_Click ()
Dim X as Long
X = SndPlaySound(C:\Windows\Media\tada.wave", SND_SYNC Or SND_NODEFAULT )
END SUB
برنامه نمونه را با فشار دادن كليد F5 اجرا كنيد . با كليك روي دكمه فرمان ، فايل TADA.WAV پخش ميشود.
فايل PDF اين آموزش در ضميمه
Pr0grammer
یک شنبه 10 آذر 1387, 00:44 صبح
عالیه؛ لطفاً ادامه بدید...
اگه همینطور تاپیک غنی تر بشه، احتمالاً جزء اعلان ها میشه!
Dr.Bronx
یک شنبه 10 آذر 1387, 00:51 صبح
با تشكر از جناب فاتحي و نظر عاليشون - چشم حتما اعمال مي كنم.
عالیه؛ لطفاً ادامه بدید...
اگه همینطور تاپیک غنی تر بشه، احتمالاً جزء اعلان ها میشه!
متشكرم . ولي هنوز خيلي كار داره تا به اونجا برسه .
--------
فايلهاي PDF به پست ها ضميمه شد .
از اين پس فايل PDF هر آموزش همراه با آن ارائه ميشود.
Dr.Bronx
یک شنبه 10 آذر 1387, 23:38 عصر
ايجاد فرم شفاف
يك فرم شفاف فرمي است كه هنگام نمايش داده شدن پنجره هاي زيري خود را نمي پوشاند . يكي از بوابع API ويندوز به نام SetWindowLog مي تواند براي تغيير دادن تنظيمات قالبي يك فرم يا پنجره مورد استفاده واقع شود.
آرگومانهاي تابع
hWnd
يك مقدار صحيح و در بردارنده دستگيره پنجره مي باشد.
nIndex
مقدار صحيحي است كه نوع اطلاعات مورد تنظيم شما را مشخص مي كند . اين مقدار به يكي از حالتهاي زير مي تواند باشد:
GWL_EXSTYLE قالب پينجره افزوده را تنظيم مي كند
GWL_STYLE قالب پنجره حاظر را تنظيم مي كند
GWL_WNDPROC آدرس كار پنجره را مشخص مي كند
dwNewLong
يك مقدار Long و حاوي بيتهاي قالبي است كه به پنجره داده مي شود
برنامه نمونه
پروژه جديدي را ايجاد نماييد . خصوصيت Picture آن را به فايل نقش بيتي ARCHES.BMP تنظيم نماييد ( اين فايل معمولا در شاخه ويندوز يافته مي شود .)
يك كنترل CommandButton بر روي فروم ايجاد نماييد . خصوصيت Caption آن را با Show Form تنظيم نماييد
كد زير را در رويداد Click دكمه وارد نماييد
Private Sub Command1_Click()
Form2.show
Emd Sub
فرم ديگري ايجاد كنيد . به طور پيش فرض FORM2 ايجاد مي شود.
جملات Declare و Constant زير را به قسمت معرفيهاي عمومي فرم اضافه نماييد:
Declare Function SetWindowLong Lin "User32" alias "SetWindowLongA" ( Byval hwnd as long, Byval nIndex as long, Byval dwNewLong as long) as long
Const WS_EX_TRANSPARENT = &H20&
Const GWL_EXSTYLE = (-20)
كد زير را در رويداد Load مربوط به FORM1 وارد كنيد:
Private Sub Form_Load()
Dim Ret As Long
Ret = SetWindowLong (Form2.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT)
End Sub
برنامه را فشردن كليد F5 اجرا و روي دكمه SHOW FORM كليك كنيد .
فايل PDF اين آموزش در ضميمه
Dr.Bronx
دوشنبه 25 آبان 1388, 22:47 عصر
تعیین این که آیا فرمی بارگذاری شده است یا نه
این برنامه نشان می دهد که چگونه از باز شدن فرمی در یک برنامه کاربردی ویژوال بیسیک مطلع شویم .
1- پروژه جدیدی را در ویژوال بیسیک آغاز کنید . بطور پیش فرض Form1 ایجاد می شود.
2- از منوی Insert گزینه Form را انتخاب کنید . Form2 بطور پیش فرض ایجاد می شود.
3- فرمی را نیز به همین طریق باز نمایید . نام پیش فرض آن Form3 خواهد بود.
4- کد زیر را در رویداد load مربوط به Form1 اضافه کنید
Private sub Form_Load()
Form2.show
End Sub
5- کنترلی از نوع Command Button به فرم اول اضافه کنید . نام پیش فرض آن Command1 خواهد شد .
6- کد زیر را در رویداد کلیک دکمه مذبور وارد نمایید:
Private Sub Command1_Click()
dim X as integer
X = IsFormLoaded(Form1)
if X Then
msgbox "Form 2 is loader
End If
X = IsFormLoaded(Form3)
if X = false then
msgbox "Form3 is not loaded"
End If
End Sub
7- تابع جدیدی به نام IsFormLoaded و به شرح زیر ایجاد نمایید:
Function IsFormLoaded(FormToCheck as form) as integer
Dim Y as integer
For Y = 0 To Forms.Count -1
If Forms(y) is FormToCheck Then
IsFormLoaded = true
Exit Function
End if
next
IsFormLoaded = False
End Function
اگر هنگام اجرا شدن برنامه روی دکمه فرمان کلیک کنید . یک پیغام به صورت بازشو روی صفحه نمایش ظاهر شده و پیغام "Form 2 is Loaded " را نشان خواهد داد. روی دکمه Ok کلیک کنید . بلافاصله پیغام دومی ظاهر و پیغام "Form3 Is not Loaded" را نشان خواهد داد.
موفق و موید باشید ./
shahmahi
سه شنبه 26 آبان 1388, 12:12 عصر
برنامه را فشردن كليد F5 اجرا و روي دكمه SHOW FORM كليك كنيد .
دوست من امتحان کردم هیچ اتفاقی نیوفتاد :متفکر:
پروژه جديدي را ايجاد نماييد . خصوصيت Picture آن را به فايل نقش بيتي ARCHES.BMP تنظيم نماييد
این کار لازمه یا نه ؟
DLL_DLL
سه شنبه 26 آبان 1388, 13:13 عصر
انتخاب اتوماتيك متن داخل يك Text Box هنگامي كه نقطه تمركز برنامه با زدن كليد TAB به
فايل PDF اين آموزش در ضميمه
این را خیلی ساده تر از این هم میشه پیاده سازی کرد.
دار داخل رویداد Gotfocus تکست باکس بنویسم
sendkeys "{HOME}+{END}"
Dr.Bronx
سه شنبه 26 آبان 1388, 14:17 عصر
دوست من امتحان کردم هیچ اتفاقی نیوفتاد :متفکر:
این کار لازمه یا نه ؟
شما با اون هم امتحان کنید .
اگر ایرادی داشت دوستان دیگه هم اعلام می کردند
موفق باشید ./
این را خیلی ساده تر از این هم میشه پیاده سازی کرد.
دار داخل رویداد Gotfocus تکست باکس بنویسم
sendkeys "{HOME}+{END}"
درسته . ولی اون برنامه فقط کلید Tab رو در نظر گرفته . یعنی اگر با موس وارد تکست باکس بشید هیچ اتفاقی نمی افته . اون برنامه از یک لحاظ دیگه ای نکته آموزشی داره.
با دقت کدهاش رو مطالعه بفرمایید.
موفق باشید./
Dr.Bronx
سه شنبه 26 آبان 1388, 14:34 عصر
تغییر کلید میانبر یک منو در زمان اجرا
هنگامی که از ویرایگر منو در ویژوال بیسیک استفاده می کنید می توانید یک کلید میانبر یا سریع کننده به هر کدام از آنها اختصاص دهید . این بخش نحوه تغییر دادن این کلید ها را در زمان اجرا را در یک برنامه کاربردی مورد بررسی قرار می دهد.
1- پروژه جدیدی را در ویژوال بیسیک آغاز کنید . بطور پیش فرض Form1 ایجاد می شود.
2- کد زیر را به قسمت معرفیهای عمومی فرم اضافه کنید :
Option Explicit
Dim ShortCut as String * 1
3- از منوی Tools روی گزینه Menu Editor کلیک کنید تا یک منوی ساده ایجاد شود . در محل Caoption کلمه : File& و در محل مربوط به نام mnuFile را وارد و روی Ok کلیک کنید تا یک ساختار منویی ایجاد شود . سپس به حالت طراحی ویژوال بیسیک برگردید.
4- کد زیر را در رویداد Load مربوط به Form1 وارد کنید.
Private Sub Form_Load()
Command1.Caption = "Change ShortCut"
KeyPreview = True
End Sub
5- کد زیر را هم در رویداد KeyDown فرم اضافه نمایید :
Private Sub Form_KeyDown (KeyCode As Integer , Shift As Integer)
If Shift And 2 <> 2 Then Exit Sub
If Keycode = Asc(ShortCut) Then
mnuFile_Click
End If
End Sub
6- کد زیر را در رویداد Click منوی mnuFile وارد کنید :
Private Sub mnuFile_Click()
MsgBox "Menu Was Selected"
End Sub
7- کنترلی از نوع Command Button به فرم اضافه کنید . Command1 بطور پیش فرض ایجاد می شود . خصوصیت Caption آنرا به Change Item تنظیم نمایید.
8- کد زیر را به رویداد Click این دکمه اضافه کنید :
Private Sub Command1_Click()
ShortCut = "E"
mnuFile.Caption = "Fill" & "&" & LCase$(ShortCut)
End Sub
با فشاردادن کلید F5 برنامه را اجرا کنید . به منوی بالای فرم توجه کنید . گزینه منو File"" می باشد که زیر حرف F آن خط کشیده شده است . حرف F ، کلید دستیابی به منوی مزبور می باشد . روی دکمه کلیک کنید . گزینه منوی به File تغییر داده می شود منتهی این بار زیر حرف e آن خط کشیده شده است . کلید ترکیبی Ctrl + E را روی ضفحه فشار دهید . یک کادر پیغام باز می شود که مضمون آن به این صورت است : Menu Was Selected
موفق و موید باشید ./
DLL_DLL
سه شنبه 26 آبان 1388, 22:29 عصر
شما با اون هم امتحان کنید .
اگر ایرادی داشت دوستان دیگه هم اعلام می کردند
موفق باشید ./
درسته . ولی اون برنامه فقط کلید Tab رو در نظر گرفته . یعنی اگر با موس وارد تکست باکس بشید هیچ اتفاقی نمی افته . اون برنامه از یک لحاظ دیگه ای نکته آموزشی داره.
با دقت کدهاش رو مطالعه بفرمایید.
موفق باشید./
با کلید Tap کار میده اینی که من گفتم! واسه Mouse هم توی رویداد Click که بنویسی هم درست میشه.
من همینطور واسه اینکه توی این تاپیک شرکت کرده باشم چیزی که بلد بودمو گفتم.
به قول معروف راهکارهای مختلف و مدل های مختلف.:چشمک:
earse+erse
سه شنبه 17 آذر 1388, 12:36 عصر
تلفن زدن داخل برنامه
مواد لازم
یک عدد:command
خصوصیات-----------------
اجراCaption=
یک عدد:text
خصوصیات-----------------
خالیtext=
این کد ها را در قسمت General وارد کنید.
Private Declare Function tapiRequestMakeCall Lib "TAPI32.DLL" (ByVal Dest As String, ByVal AppName As String, ByVal CalledParty As String,ByVal Comment As String) As Long
()Private Sub Command1_Click
tapiRequestMakeCall Text1.Text, "", "", ""
End Sub
earse+erse
سه شنبه 17 آذر 1388, 12:41 عصر
ساخت لينك
اگه تكراري بود ببخشيد
مواد لازم:
يك عدد lablel
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As
String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
()Private Sub Form_Load
"Label1.Caption = "www.barnamenevis.org (http://www.barnamenevis.org)
End Sub
()Private Sub Label1_Click
Link Label1.Caption
End Sub
Public Function Link(ByVal URL As String) As Long
Link = ShellExecute(0&, vbNullString, URL, vbNullString, vbNullString, vbNormalFocus)
End Function
earse+erse
سه شنبه 17 آذر 1388, 12:50 عصر
دادن تم Xp به برنامه
واسه اين كار Notepad رو باز كنين و كد زير رو توش كپي كنيد
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Name"
type="win32"
/>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
و بجاي Name در كد بالا نام برنامه تون رو بزارين
فايل را با نام x.exe.MANIFEST ذخيره كنين x همون نام برنامه است
حالا توي VB برين و توي فرم يه ProgressBar بزارين
از برنامه يه نسخه اجرايي بگيرين
حالا كيفش رو ببرين.
HjSoft
جمعه 20 آذر 1388, 06:48 صبح
واقعا تاپیکه خوبیه ! منم تصمیم گرفتم کمکتون کنم . موفق باشید
انتقال فایل (MOVE )
Private Sub Command1_Click()
Name "c:\a.bat" As "D:\h.bat"
End Sub
HjSoft
جمعه 20 آذر 1388, 06:51 صبح
کادر باز کردن پوشه (Folder Browse )
در ماوژول :
Public Const BIF_RETURNONLYFSDIRS = 1
Public Const BIF_DONTGOBELOWDOMAIN = 2
Public Const MAX_PATH = 260
Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
'***
Public Type BrowseInfo
hWndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type
در فرم :
Private Sub Command1_Click()
Dim lpIDList As Long
Dim sBuffer As String
Dim szTitle As String
Dim BrowseInf As BrowseInfo
szTitle = "ÌÓÊÌæí Ú˜Ó"
With BrowseInf
.hWndOwner = Me.hWnd
.lpszTitle = lstrcat(szTitle, "")
.ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
End With
lpIDList = SHBrowseForFolder(BrowseInf)
If (lpIDList) Then
sBuffer = Space(MAX_PATH)
SHGetPathFromIDList lpIDList, sBuffer
'sBuffer value is the directory that the user choose from the dialog.
sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
Text1.Text = sBuffer
End If
End Sub
HjSoft
سه شنبه 24 آذر 1388, 15:53 عصر
بازیابی سطر معینی از یک فایل
Public Function readLine(ByRef strFilePath As String, ByRef nLine _
As Integer) As String
Dim NextLine As String
Dim n As Integer
FileNum = FreeFile
Open strFilePath For Input As FileNum
Do Until EOF(FileNum)
Line Input #FileNum, NextLine
n = n + 1
If n = nLine Then readLine = NextLine
Loop
Close
End Function
Private Sub Command1_Click()
Text1.Text = readLine("d:\a.bat", 3)
End Sub
HjSoft
سه شنبه 24 آذر 1388, 15:54 عصر
پنجره ی غیر قابل حرکت
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, _
ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, _
ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const SC_MOVE = &HF010&
Private Const MF_BYCOMMAND = &H0&
Private Sub Command1_Click()
lhSysMenu = GetSystemMenu(Me.hwnd, False)
lRetVal = RemoveMenu(lhSysMenu, SC_MOVE, MF_BYCOMMAND)
End Sub
HjSoft
سه شنبه 24 آذر 1388, 15:55 عصر
جستجو با کمک توابع API
'Add a module to your project (In the menu choose Project -> Add Module, Then click Open)
'Add 1 Command Button, 4 Text Boxes and 1 List Box to your Form.
'At Run-Time, Enter the path that you want to start to search from it to Text1,
'Enter the file pattern to Text2 (like *.* or *.exe), and press the button.
'List1 will be filled with all the matching files, Text3 will display the number of files found,
'And Text4 will display the total size of the files found.
'Insert this code to the module :
Private Declare Function FindFirstFile Lib "kernel32" Alias _
"FindFirstFileA" (ByVal lpFileName As String, lpFindFileData _
As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _
(ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function GetFileAttributes Lib "kernel32" Alias _
"GetFileAttributesA" (ByVal lpFileName As String) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) _
As Long
Private Const MAX_PATH = 260
Private Const MAXDWORD = &HFFFF
Private Const INVALID_HANDLE_VALUE = -1
Private Const FILE_ATTRIBUTE_ARCHIVE = &H20
Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
Private Const FILE_ATTRIBUTE_HIDDEN = &H2
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Const FILE_ATTRIBUTE_READONLY = &H1
Private Const FILE_ATTRIBUTE_SYSTEM = &H4
Private Const FILE_ATTRIBUTE_TEMPORARY = &H100
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Private Function StripNulls(OriginalStr As String) As String
If (InStr(OriginalStr, Chr(0)) > 0) Then
OriginalStr = Left(OriginalStr, _
InStr(OriginalStr, Chr(0)) - 1)
End If
StripNulls = OriginalStr
End Function
'Insert the following code to your form:
Private Function FindFilesAPI(path As String, SearchStr As String, _
FileCount As Integer, DirCount As Integer)
Dim FileName As String
Dim DirName As String
Dim dirNames() As String
Dim nDir As Integer
Dim i As Integer
Dim hSearch As Long
Dim WFD As WIN32_FIND_DATA
Dim Cont As Integer
If Right(path, 1) <> "\" Then path = path & "\"
nDir = 0
ReDim dirNames(nDir)
Cont = True
hSearch = FindFirstFile(path & "*", WFD)
If hSearch <> INVALID_HANDLE_VALUE Then
Do While Cont
DirName = StripNulls(WFD.cFileName)
If (DirName <> ".") And (DirName <> "..") Then
If GetFileAttributes(path & DirName) And _
FILE_ATTRIBUTE_DIRECTORY Then
dirNames(nDir) = DirName
DirCount = DirCount + 1
nDir = nDir + 1
ReDim Preserve dirNames(nDir)
End If
End If
Cont = FindNextFile(hSearch, WFD)
Loop
Cont = FindClose(hSearch)
End If
hSearch = FindFirstFile(path & SearchStr, WFD)
Cont = True
If hSearch <> INVALID_HANDLE_VALUE Then
While Cont
FileName = StripNulls(WFD.cFileName)
If (FileName <> ".") And (FileName <> "..") Then
FindFilesAPI = FindFilesAPI + (WFD.nFileSizeHigh * _
MAXDWORD) + WFD.nFileSizeLow
FileCount = FileCount + 1
List1.AddItem path & FileName
End If
Cont = FindNextFile(hSearch, WFD)
Wend
Cont = FindClose(hSearch)
End If
If nDir > 0 Then
For i = 0 To nDir - 1
FindFilesAPI = FindFilesAPI + FindFilesAPI(path & dirNames(i) _
& "\", SearchStr, FileCount, DirCount)
Next i
End If
End Function
Private Sub Command1_Click()
Dim SearchPath As String, FindStr As String
Dim FileSize As Long
Dim NumFiles As Integer, NumDirs As Integer
Screen.MousePointer = vbHourglass
List1.Clear
SearchPath = Text1.Text
FindStr = Text2.Text
FileSize = FindFilesAPI(SearchPath, FindStr, NumFiles, NumDirs)
Text3.Text = NumFiles & " Files found in " & NumDirs + 1 & _
" Directories"
Text4.Text = "Size of files found under " & SearchPath & " = " & _
Format(FileSize, "#,###,###,##0") & " Bytes"
Screen.MousePointer = vbDefault
End Sub
HjSoft
سه شنبه 24 آذر 1388, 15:56 عصر
ایجاد شاخه
Private Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" (ByVal hwnd As Long, ByVal pszPath As String, ByVal psa As Any) As Long
Private Sub Form_Load()
'KPD-Team 2000
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@allapi.net
'create the directory 'c:\test\dir\hello\something\apiguide\'
SHCreateDirectoryEx Me.hwnd, "c:\test\dir\hello\something\apiguide\", ByVal 0&
End Sub
earse+erse
پنج شنبه 26 آذر 1388, 13:39 عصر
پخش فايل صوتي
راحت ترين روش
كافيه يه Textbox بزارين و دو command Button به صورتي كه دومي كپي اولي باشه و آرايه درست بشه
اين كد ها رو تو جنرال فرمتون كپي كنين
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Dim isPlaying As Boolean
Dim Mp3File As String
Private Sub Command1_Click(Index As Integer)
Mp3File = Chr$(34) + Trim(Text1.Text) + Chr$(34)
Select Case Index
Case 0
mciSendString "open " + Mp3File, 0&, 0&, 0&
mciSendString "play " + Mp3File, "", 0&, 0&
isPlaying = True
Case 1
mciSendString "close " + Mp3File, 0&, 0&, 0&
isPlaying = False
End Select
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
Command1(0).Caption = "Start"
Command1(1).Caption = "Stop"
Command2.Caption = "Exit"
End Sub
Private Sub Form_Unload(Cancel As Integer)
If isPlaying = True Then
mciSendString "close " + Mp3File, 0&, 0&, 0&
End If
End Sub
حالا آدرس فايل صوتي رو بنويسين تو Textbox تا واستون اجرا كنه
earse+erse
شنبه 28 آذر 1388, 17:00 عصر
با استفاده از كد زير در هر كجاي كد برنامه تون مي تونيد چك كنيد كه آيا كليد خاصي فشرده شده يا نه؟
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer 'Key press API
Private Sub t_Timer()
If GetAsyncKeyState(vbKeyUp) <> 0 Then
END
End If
END SUB
JaguarXF
جمعه 27 فروردین 1389, 08:26 صبح
و مهم ترین و آخرین نکته درباره ویبی 6 :
http://msdn.microsoft.com/en-us/vbrun/ms788708.aspx
bye bye black bird
shahabbasic
چهارشنبه 12 بهمن 1390, 21:15 عصر
برای اجرا نشدن 2 بار از برنامه خود (برنامه در حال اجرا باشه و کاربر برای بار دوم بخواد برنامه رو اجرا کنه) از کد زیر استفاده کنید :
Private Sub Form_Initialize()
If App.PrevInstance = True Then
lomo = MsgBox("program now underway", vbInformation, "Warnnig")
close
Unload Me
End
End If
End Sub
IamOverlord
پنج شنبه 13 بهمن 1390, 09:50 صبح
مهم ترین و آخرین نکته در مورد VB6 کار نمی کنه...
فکر می کنم اینو باید چک کنید : msdn.microsoft.com/en-us/vstudio/ms788708 (http://msdn.microsoft.com/en-us/vstudio/ms788708)
محسن واژدی
پنج شنبه 13 بهمن 1390, 14:47 عصر
مهم ترین و آخرین نکته در مورد VB6 کار نمی کنه...
فکر می کنم اینو باید چک کنید : msdn.microsoft.com/en-us/vstudio/ms788708 (http://msdn.microsoft.com/en-us/vstudio/ms788708)
سلام
صفحه بازنمیشه، یعنی خطای NotFound میدهد
M.T.P
پنج شنبه 13 بهمن 1390, 15:42 عصر
سلام
صفحه بازنمیشه، یعنی خطای NotFound میدهد
سلام لینک سالمه ، شاید بصورت مقطعی باز نشده ، دوباره امتحان کنید.
MohammadGh2011
شنبه 10 تیر 1391, 11:02 صبح
سلام
صفحه بازنمیشه، یعنی خطای NotFound میدهد
سلام عليکم
لينک سالمه و باز ميشه
محسن واژدی
شنبه 10 تیر 1391, 12:06 عصر
سلام عليکم
لينک سالمه و باز ميشه
سلام علیکم
بله حق با شماست، احتمالا سال قبل مشکل از IP بنده بود چرا که در کل امکان دسترسی به سایت مایکروسافت نداشتم و خطای Not found میداد البته پس از جواب آقای ترکاشوند وقتی با f.s تست کردم صفحه مشکلی نداشت،
در حال حاضر در سال جدید خوشبختانه مشکلی از این بابت وجود ندارد
موفق باشید
l4dl4d
دوشنبه 12 تیر 1391, 09:28 صبح
بله...
سايت هاي ديگري هم وجود دارند:www.vocation-soft.blogfa.com
farnoosh1
سه شنبه 23 آبان 1391, 11:34 صبح
سلام
من میخوام فایلی که ایجاد می کنم که یک فایل متن هست اسم فایل برابر گزینه ای باشد که در combo انتخاب شده
چی کار باید کنم؟
majidbahrami
شنبه 18 آذر 1391, 10:55 صبح
اینم یه سورسی که فایل متنی رو باز میکنه .. سیو میکنه و میتونید توش تغییر بدید ..مثل یه ورد پد سادس
یک فرم به نام Form1
سه دکمه به نامهای cmdOpen , cmdSave , cmdClear
یک دیالوگ باکس به نام cd1
یک RitchTextBox به نام RTB1
[CODE]
Private Sub cmdClear_Click() RTB1.Text = "" End Sub Private Sub cmdOpen_Click() Dim strOpen As String With cd1 .Flags = &H2000 .DialogTitle = "Open" .Filter = "Ritch Text Box(.rtf)|*.rtf" .ShowOpen strOpen = .FileName End With Form1.RTB1.LoadFile strOpen End Sub Private Sub cmdSave_Click() Dim strSave As String With cd1 .Flags = &H2000 .DialogTitle = "Save" .Filter = "Ritch Text File (*.rtf)|*.rtf" .ShowSave strSave = .FileName End With Form1.RTB1.SaveFile strSave End Sub
[CODE]
armin294
شنبه 18 آذر 1391, 13:11 عصر
دوستان عزیز و اساتید محترم
باتشکر از زحماتی که میکشید من در vb6 تازه کار هستم و برنامه حرفه ای نمیخوام بنویسم فقط برای فروشگاه بنک داری که داریم میخوام یه برنامه بنویسم که بتونم مقدار و مبلغ وارده و صادره را کنترل و گزارش گیری کنم بخاطر همین به سورس برنامه کتابخانه نیاز دارم همچنین اگر سورس کوچکی از طراحی یک فرم که به دیتا بیس اکسس لینکه و دکمه های از قبیل اولین رکورد رکورد قبلی و رکورد حدید و حذف رکورد و ویراش رکورد و .... و همچنین لیست ویو که بتونم از آن رکورد هایی که در دیتا بیسم هست را ببینم و برای ویرایش فراخوانی کنم (که معمولا در فرمها استفاده میشه) نیاز دارم اگر سورس دیگه ای هم دارید ممنون میشم برام ارسال کنید
armin294
چهارشنبه 22 آذر 1391, 12:16 عصر
یعنی هیچکس نیست که بتونه به من کمک کنه
abbaszz
جمعه 24 آذر 1391, 18:49 عصر
وارد کردن اطلاعات خارج از دیتابیس به datagrid
سلام.کمک لطفا
من یه دیتا گرید دارم شامل 4 تا فیلد. که 3تا فیلد رو به دیتا بیس وصل کردم و اوکی
اما فیلد چهارم رو میخوام ابتدا یه سری محاسباتی روی فیلدهای دیگه انجام بدم و بعد نشون داده بشه
یعنی باید روبروی این کد چی بنویسم؟
=DataGrid1.Columns(4).DataField
abbaszz
جمعه 24 آذر 1391, 19:39 عصر
وارد کردن اطلاعات خارج از دیتابیس به datagrid
سلام.کمک لطفا
من یه دیتا گرید دارم شامل 4 تا فیلد. که 3تا فیلد رو به دیتا بیس وصل کردم و اوکی
اما فیلد چهارم رو میخوام ابتدا یه سری محاسباتی روی فیلدهای دیگه انجام بدم و بعد نشون داده بشه
یعنی باید روبروی این کد چی بنویسم؟
=DataGrid1.Columns(4).DataField
خودم تونستم D:
جهت استفاده بقیه دوستان:یک فیلد به بانک اطلاعاتی اضافه کردم اما خالی
هر کدوم از محاسبات مورد نظر رو روی لیبل ریختم.و لیبل رو به فیلد اضافه شده بانک اطلاعاتی وصل کردم از پنل پراپرتیس. به همین راحتی :)
hamed_basic
چهارشنبه 25 بهمن 1391, 17:08 عصر
سلام به همه
من یه مدت پیش یه برنامه با KD نوشتم (ورژن 4)
یه چند جایی مشکل داشتم که به بدبختی حلش کردم
حالا می خوام یه چند تا از تجربیات اون رو بزارم که اگه کسی مشکل مشابهی داشت مشکلش حل شه
اول یه سری اطلاعات:
من تو محیط vb6 برنامه رو نوشتم
واسه 16 خط
از کارت های دیالوجیک که میشه گفت بهترین انتخاب واسه سیستم تلفن گویاست استفاده کردم (البته کارتها الان خیلی گرون شدن)
مدل کارتهای من D/4PCI & D/4PCIU هست البته میشه از هرجور کارتی حتی مودم استفاده کرد اما فکر نکنم هیچ ...ی بخواد 8 یا 16 تا مودم روی کامپیوترش نصب کنه
اگه از کارت های دیالوجیک استفاده می کنید :
به ترتیب کارای زیر رو انجام بدید
1 - نصب کارت ها روی مادربرد
2 - نصب برنامه Dialogic System Release 5.1.1 (الان ورژن 6 هم هست اما از TAPI پشتیبانی نمی کنه و باید فقط همین ورژن نصب شه)
3 - نصب برنامه Dialogic System Release 5.1.1 Feature Pack 149
4 - نصب Dialogic Point Release For D/4PCIUF
5 - نصب Dialogic System Release 5.1.1 Service Pack 1
6 - تنظیم برنامه DCM برای لود شدن در استارت آپ ویندوز و نصب Dialogic Wav Driver For TAPI
7 - .... یه سری تنظیمات دیگه هم داره که اگه نتونستید پیداشون کنید بگید اونا رو هم بزارم
8 - نصب KDTELE Tools V4.0.33 و کرک آن
نکته ها :
تحت هیچ شرایطی از ریموت واسه نوشتن این برنامه استفاده نکنید ، من برد ها رو روی دسکتاپ نصب کرده بودم و سعی میکردم با لپ تاپ و Remote Desktop Connection این برنامه رو بنویسم ولی پیغام Invalid Sound Device ID was passed as argumentرو می گرفتم که مشخص شد با اینکه ریموته ولی واسه پخش صدا می خواد از روی لپتاپ درایور Dialogic wav Driver رو بیاره که خطا می داد . البته کلی بدبختی دیگه توی ریموت داره و از این سیستم استفاده نکنید .
سعی کنید اگه امکانش رو دارید غیر از این برد ها یک مودم معمولی هم نصب کنید چون واسه تنظیمات صدا راحت تر باهاش کار می کنید
فرمت فایل های wav باید این ها باشه و نه چیز دیگه :
"PCM 8,000 Hz - 16 bit - Mono" format or the "KDPCM 8,000 Hz - 16 bit - Mono"
wave format compatible with most of Dialogic cards is the "PCM 11,025 Hz - 8 bit - Mono" فقط مخصوص دیالوجیک
"KDPCM 11,025 Hz - 8 bit - Mono", and "KDPCM 8,000 Hz - 8 bit - Mono"
سعی کنید یه WAVE EDITOR داخل برنامه داشته باشید که اگه خواستید از چند نوع فرمت استفاده کنه خود برنامه تون انجامش بده
باز هم اگه پیغام خطای WAV_BAD_FORMAT رو دیدید یه صدا از طریق تلفن ضبط کنید و مشخصات اون رو از برنامه wav editor در بیارید و بقیه صداهاتون رو طبق اون مشخصات ضبط کنید
حتما توی CALL LOG برنامه تون (البته اگه داشته باشید) از CALLHANDLE استفاده کنید .
اگه تعداد خطوط برنامه تون ثابت نیست و میخواید واسه هر مشتری تعداد خط به خصوصی استفاده کنید از Dynamic Creation استفاده کنید (مثال این رو توی EXCELETELمیتونید پیدا کنید )
اگه می خواید خطوط تون توی دیتابیس ذخیره بشه و واسه هر بار اجرای برنامه قرار نباشه Line Selection انجام بدید حتما دو گزینه LineDeviceName و LineID رو ذخیره کنید .
واسه تست برنامه می تونید از شبیه ساز های نرم افزاری استفاده کنید (قرار نیست من من خنگ با موبایلتون تست کنید که بعدش کلی قبض واستون بیاد ):بامزه:
شبیه ساز ها رو توی یه تاپیک مجزا توضیح دادم
من نکته دیگه ای به ذهنم نمی رسه اما اگه سوالی بود در خدمتم
ولی خودمونیم تا این سیستم تموم شد پدرم دراومد حتی رفتم VC++ یاد گرفتم و باهاش DLL درست کردم که بعدش فهمیدم اصلا نیاز نبود .
یه مجموعه کامل از صداهای ضبط شده به صورت wav هم دارم که حجمش خیلی زیاده اگه خواستید یه جوری بهتون می رسونم
امیدوارم این پست مفید باشه ، اگه مشکلتون حل شد لایک فراموش نشه !!! همون تشکر
----------------------------------------------------------------------------------------------------------------------
Hamed Mirzaei
MCSE 2003
MCSD/MCAD 2000
MCDBA 2000
CIW Webmaster
msws{DOT}biz{AT}gmail{DOT}com
mina.6869
پنج شنبه 29 فروردین 1392, 23:07 عصر
سلام
میشه توضیحی درباره این متد بدید
Adodc1.Recordset.RecordCount
مرسی
setroyd
جمعه 30 فروردین 1392, 13:36 عصر
تعداد رکوردهات رو میشموره از اسمش هم پیداس !
mina.6869
شنبه 31 فروردین 1392, 21:33 عصر
تعداد رکوردهات رو میشموره از اسمش هم پیداس !
ممنون از جوابت دوست عزیز
من یه برنامه نوشتم وبا adodc به اکسس متصل کردم واین کد رو استفاده کردم متاسفانه خطا میده
ولی همین برنامه رو با dataمینویسم از این کد خطا نمیگیره
به هرحال تشکر:متفکر:
setroyd
شنبه 31 فروردین 1392, 22:35 عصر
این کد جواب میده بی مشکل !
MsgBox Adodc1.Recordset.RecordCount
vbhamed
چهارشنبه 01 خرداد 1392, 04:24 صبح
ممنون از جوابت دوست عزیز
من یه برنامه نوشتم وبا adodc به اکسس متصل کردم واین کد رو استفاده کردم متاسفانه خطا میده
ولی همین برنامه رو با dataمینویسم از این کد خطا نمیگیره
به هرحال تشکر:متفکر:
سلام
قبل از اين كد ADODC رو Refresh كردين ؟
m.4.r.m
دوشنبه 24 تیر 1392, 12:37 عصر
گفتیم تاپیک پر باره ما هم بی نصیب نباشیم چند تا پست یادگاری هم ما بدیم :
با این برنامه می تونید رنگ های تصادفی تولید کنید شاید یه جا به درد همه بخوره
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Randomize
Shape1.BackColor = QBColor(Rnd() * 10)
End Sub
m.4.r.m
دوشنبه 24 تیر 1392, 12:42 عصر
شاید خیلی از دوستان خواستن اطلاعاتی که از اکسل دارن رو بیارن توی Datagrid و در داخل دیتابیس خودشون ذخیره کنند این برنامه این کارو برای شما انجام میده
Private Sub displayExcelInDataGrid()
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Dim sconn As String
Dim sFile As String
CmdOpen.ShowOpen
sFile = CmdOpen.FileName
rs.CursorLocation = adUseClient
rs.CursorType = adOpenKeyset
rs.LockType = adLockBatchOptimistic
sconn = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & sFile
rs.Open "SELECT * FROM [sheet1$]", sconn
Set DataGrid1.DataSource = rs
End Sub
m.4.r.m
دوشنبه 24 تیر 1392, 12:55 عصر
تابع fileDatetime :
تاریخ و زمان آخرین تغییرات یک فایل را نشان می دهد :
Private Sub Form_Load()
MsgBox FileDateTime("C:\foo.txt")
End Sub
m.4.r.m
دوشنبه 24 تیر 1392, 13:09 عصر
در این قسمت هم قصد دارم آموزش هایی راجع به دستورات SQL برای کسانی که علاقه مند به دیتابیس هستند قرار بدم
دستور Select :
توسط این دستور ما اطلاعات مربوط به یک جدول را فراخوانی می کنیم
SELECT column_name,column_name
FROM table_name;
مثال :
SELECT * FROM Table1
------------------------------------------------------------------------------
دستور SQL SELECT DISTINCT :
گاهی اوقات ما در جداولمان فیلد های تکرای زیادی داریم و این فیلد ها در خروجی همگی نمایش داده خواهند شد مثلا در یک جدول ممکن است ستون شهر داشته باشیم در ان شهر های تکراری زیادی استفاده شده است برای جلوگیری از این فرایند از این دستور استفاده خواهیم کرد
SELECT DISTINCT City FROM Customers
m.4.r.m
دوشنبه 24 تیر 1392, 13:17 عصر
ادامه آموزش دستورات SQL :
استفاده از کلمه کلیدی Where در دستور Select :
با این دستور شما اطلاعات جدول رو با یک شرط فراخوانی می کنید مثال : اطلاعات جدول مشتریان را می خواهیم نشان دهیم به شرطی مشتریان مربوط به شهر تهران باشند :
SELECT * FROM Customers WHERE City="Tehran"
استفاده از کلمات کلیدی AND و OR در دستور Select :
با این دستورات شما می توانید اطلاعات یک جدول رو نمایش دهید به شرطی عمگر AND یا OR در آن صدق کند . مثال : می خواهیم اطلاعات جدول مشتری را نشان دهیم به شرطی که مشتری در شهر تهران و در کشور ایران باشد :
SELECT * FROM Customers
WHERE Country='Iran'
AND City='Tehran'
چون از عملگر AND استفاده کرده ایم پس باید هر دو عبارت برابر TRUE باشد تا نمایش داده شود یعنی مشتری هم در کشور ایران باشد و هم در تهران بر عکس این قضیه در عبارت OR صدق می کند .
SELECT * FROM Customers
WHERE Country='Iran'
OR City='Tehran'
m.4.r.m
دوشنبه 24 تیر 1392, 13:29 عصر
ادامه آموزش دستورات SQL :
استفاده از دستور Order By که شکل کلی این دستور به صورت زیر است :
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC
کلمات کلیدی ASC و DESC به ترتیب به معنی : نزولی و صعودی است
اکثرا در برنامه ها استفاده می شود مثلا می خواهیم اطلاعات مربوط به جدول مشتری را نمایش دهیم و اطلاعات ما با نام کشور ها مرتب سازی شده باشد
SELECT * FROM Customers
ORDER BY Country
با این دستور اطلاعات از A-Z مرتب سازی مشوند که در صورت مشخص نکردن ASC | DESC به صورت پیشرفض عبارت ASC استفاده می شود
----------------------------------------------------------------------
نگاهی جامع به دستورات Insert , Delete , Update
با این دستورات می توانیم اطلاعات را به دتابیس ارسال ، ذخیره و یا حذف نمائیم
شکل کلی دستور Insert Into :
INSERT INTO table_name
VALUES (value1,value2,value3,...)
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...)
در ساختار اولی می توانید اطلاعات تمام ستون های دیتابیس رو پر نمائید
در ساختار دوم می توانید فقط با ذکر نام ستون های دیتابیس اطلاعات را پر نمائید ( مثلا می خواهید فقط در جدول مشتری نام و نام خانوادگی فرد را ارسال کنید ) .
INSERT INTO Customers (CustomerName, CustomerFamily)
VALUES ('Ali','Ershadi')
شکل کلی دستور Update :
UPDATE Customers
SET ContactName='Ali', City='Tehran'
حالا بعضی مواقع می خوایم اطلاعات فرد رو به اصطلااح Edit کنیم که اون هم با این دستور به این شکل انجام میشه :
UPDATE Customers
SET ContactName='Alireza', City='Tehran'
WHERE CustomerName='Ali'
شکل کلی دستور Delete :
DELETE FROM table_name
WHERE some_column=some_value
DELETE FROM Customers
WHERE CustomerName='Alireza' AND City='Tehran'
m.4.r.m
دوشنبه 24 تیر 1392, 13:57 عصر
در ضمن شاید دوستان در فراخوانی Query ها دستورات SQL در ویزوال بیسیک به این سوال برسند که حالا ما این هارو فهمیدیم چطوری در ویژوال بیسیک از اینها استفاده کنیم ( قابل توجه دوستان حرفه ای ، این آموزش مخصوص دوستان و برنامه نویسان اماتور است ) که با این کد می توانید از دستورات استفاده نمائید .
Dim rs as new Adodb.recordset
Dim con as new adodb.connection
dim sql as string
sql = "SELECT * FROM Customers WHERE City='Tehran'"
rs.cursurlocation = aduseclient
con.execute (sql)
m.4.r.m
دوشنبه 24 تیر 1392, 14:23 عصر
ادامه آموزش دستورات SQL :
یک دستور بهتون معرفی می کنم با عنوان Select Top
با این دستور شما می توانید تعداد سطر های محدودی از جدول را انتخاب کنید که Query های مختلفی هم وجود دارد مثلا می خواهیم 2 ردیف از جدول مشتری را نشان دهیم .
SELECT TOP 2 * FROM Customers
SELECT * FROM Customers WHERE CustomerID <=2
که هر دو ستور یک کار را انجام خواهند داد .
دستور Like :
یک دستوری که تقریبا خیلی استفاده داره مثلا می خواهیم اسامی جدول مشتری رو نشون بدیم به طوری وقتی حرف اول نام مشتری را وارد می کنیم اسامی مشابه را هم نشان خواهد داد . مثال :
شکل کلی دستور :
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
شکل استفاده از دستور : ( تمامی شهر های مربوط به جدول مشتری را نشان بده به شرطی که اول اسم شهر ها با s شروع شده باشد )
SELECT * FROM Customers
WHERE City LIKE 's%'
البته این دستور یک دستور ساده برای اموزش بود که استفاده های زیادی می توان از این دستور کرد
این هم یک دستور دیگه از Like : ( شهر هایی رو نشون بده که بین شهر ها کلمه land نباشه )
SELECT * FROM Customers
WHERE Country NOT LIKE '%land%';
حرف % یعنی هر چیزی
حرف _ به جای % هم میتوان در Like استفاده کرد : مثال :
SELECT * FROM Customers
WHERE City LIKE 'L_n_on';
تمامی شهر هایی رو نشون میده که حروف L n on ثابت بوده و حروفی که نداره رو بزاره مثلا شهر London
دستور دیگر از Like
SELECT * FROM Customers
WHERE City LIKE '[bsp]%';
این دستور میگه شهر هایی رو نشون بده که اولش حتما با حروف b s p باشه
m.4.r.m
دوشنبه 24 تیر 1392, 14:50 عصر
ادامه آموزش دستورات SQL :
دستور IN :
این دستور تقریبا شبیه به دستور Like هست اما ثابت عمل می کند . به مثال نگاه کنید
SELECT * FROM Customers
WHERE City IN ('Tabriz','Shiraz');
میگه لیست مشتری هایی رو نشون بده که حتما در شهر تبریز و شیراز باشن
دستور BETWEEN :
این دستور هم از جدول محصولات اجناسی رو نشون میده که قیمت آنها بین 10 و 20 باشه
SELECT * FROM Products
WHERE Price NOT BETWEEN 10 AND 20;
البته کاربرد های این دستورات خیلی زیاد و وسیع هست که من فقط در اینجا مختصر جهت آشنایی اشاره می کنم .
یه مثال دیگه
SELECT * FROM Products
WHERE ProductName BETWEEN 'C' AND 'M';
-------------------------------------------------------------------------------------------------
دستور Alias :
کاربرد این دستور زمانی است که ما می خواهیم اطلاعات یک ستون را نمایش دهیم با یک نام مستعار . به مثال دقت کنید :
SELECT CustomerName AS Moshtari
FROM Customers
اطلاعات CustomerName را با نام سر ستون Moshtari به شما نشان خواهد داد .
m.4.r.m
دوشنبه 24 تیر 1392, 15:06 عصر
ادامه آموزش دستورات SQL :
دستور Join :
این دستور حالت های مختلفی داره که در زیر اسامی آنها را ذکر خواهم کرد :
1- Inner Join : ردیف هایی را بر می گرداند که حداقل یک همخوانی بین دو جدول وجود داشته باشد. ( کاربرد بیشتری هم دارد ) .
2- Left Jin : این دستور ردیف های خوانده شده را از جدول شماره 1 یعنی جدول سمت چپ برمیگرداند حتی اگر هیچ همخوانی با جدول شماره 2 یعنی جدول سمت راست نداشته باشد.
3- Right Join : این دستور ردیف های خوانده شده را از جدول شماره 2 یعنی جدول سمت راست برمیگرداند حتی اگر هیچ همخوانی با جدول شماره 1 یعنی جدول سمت چپ نداشته باشد.
4- Full Join : عبارت کلیدی FULL JOIN تمام ردیف های موجود در جداول را با وجود حتی یک همخوانی میان جداول بر میگرداند .
معمولا به جز حالت اول حالت های دیگری کاربرد زیادی ندارند .
مثال برای حالت اول :
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
-----------------------------------------------------------------------------------------------------------------------------
دستور Union :
از دستور Union برای ترکيب و ادغام دو يا چند ستون مختلف از 2 يا چند جدول و نشان دادن آنها در يک ستون مشترک استفاده می شود .
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
m.4.r.m
دوشنبه 24 تیر 1392, 15:16 عصر
ادامه آموزش دستورات SQL :
دستور Select Into :
از دستور Select Into در موارد زير استفاده می شود :
ايجاد يک Back Up ( نسخه پشتيبان ) از يک جدول .
ايجاد يک آرشيو از رکوردهای يک جدول .
قرار دادن برخی از رکوردها يا فيلدهای مورد نظر از يک جدول در يک جدول جديد .
ايجاد يک نسخه پشتيبان از کل يک پايگاه داده در يک پايگاه داده جديد .
به مثال ها دقت فرمائید :
مثال : ايجاد يک Back Up از جدول Customers در يک جدول جديد :
Select * Into Customers_Backup
From Customers ;
مثال : ايجاد يک Back Up از جدول Customers در يک جدول ديگر در يک پايگاه داده جديد به نام Backup.mdb :
Select * Into Customers_backup In "Backup.mdb"
From Customers
مثال : مشخصات نام ، نام خانوادگی جدول مشتری را که در شهر آلمان هستند در يک جدول جديد به نام Inormation وارد میکند :
Select Name , Family,City Into Information
From Customers , City
Where Customers.CustomerID = City.CustomerId
vahides
شنبه 25 آبان 1392, 23:03 عصر
سلام داداش خیلی جالب بود
ولی یه خواهشی از شما داشتم اونم اینه که اگه می تونین نحوه ی اتصال ویژوال به پایگاه داده رو به صورت عکس واسمون بذارین ممنون میشم
elham_27
یک شنبه 04 مرداد 1394, 16:00 عصر
سلام
واقعیت مشکلی دارم که نمیتونم حل کنم...
من access رو به vb اتصال دادم و موفق بوده...
حالا برنامه سرچی نوشتم که محتویات textbox رو سرچ کنه ولی فقط اون متنهایی که انگلیسی هست رو پیدا میکنه...فارسی نه :گریه:
خیلی مهمه برام میشه زود جواب بدین لطفـــا
mehranfarvardin
پنج شنبه 12 آذر 1394, 02:33 صبح
خواستم عرض کنم که اصطلاح اشارگر فایل هیچ ربطی به موس و اشاره گر موس ندارد، اینکه گفته می شود در ابتدای باز کردن یک فایل اشاره گر در ابتدای فایل قرار دارد، منظور اینست که اگر با استفاده از دستور input اقدام به خواندن دیتا از فایل کنیم، اولین رکورد از فایل خوانده می شود، و اگر با دستور input دیگری مجددا اقدام به خواندن همان فایل کنیم، رکورد دوم خوانده خواهد شد، به عبارت دیگر با هر بار دستور input اشاره گر یک رکورد به جلو می رود و باعث می شود که رکورد مورد اشاره خوانده شود. ضمنا مفهوم اشاره گر فقط برای فایل های ترتیبی بکار می رود و برای فایل های تصادفی، یا همان random access file بی معنی است، چون برنامه نویس در زمان کد نویسی ، در متن سطری از برنامه که محتویات فایل را می خواند، حتما باید شماره رکورد مورد نظر را وارد کنید، به عبارت دیگر باید به سیستم بگوید که کدام رکورد را بخوان، پس اشاره گر اصلا برای فایل با دسترسی تصادفی، بی معنی است.
با تشکر: مهران فروردین
vbhamed
پنج شنبه 12 آذر 1394, 07:24 صبح
سلام
اتفاقا اشاره گر دقیقا در فایلهای Random و البته همه فایلها معنی داره، شما میتونید بدون دادن شماره رکورد هم از فایل Random بخونید و یا اگر خواستید محل اشاره گر رو تغییر بدید و دوباره بخونید و بنویسید
فایل ss.txt
1111
2222
3333
4444
نمونه کد
Dim x As String * 6
Open "c:\ss.txt" For Random As #1 Len = 6
Get #1, , x: MsgBox x
Get #1, 3, x: MsgBox x
Seek #1, 1
Get #1, , x: MsgBox x
Close
mehranfarvardin
پنج شنبه 12 آذر 1394, 23:53 عصر
این بحث ثمره عملی ندارد، در طول سال ها برنامه نویسی، هر زمان که خواستیم از فایل random چیزی بخوانیم، بدون توجه به محل فعلی pointer و در مقابل دستور get شماره رکورد را داده ایم، برای من تابحال پیش نیامده که بخواهم با استفاده از دستور seek محل اشاره گر را عوض کنم و در سطر بعدی، بدون دادن شماره رکورد، از فایلی چیزی بخوانم، بهتر است بجای هر دو سطر:
Seek #1
Get #1, ,x
فقط یک سطر:
Get#1,1,x
را بنویسیم، البته اگر من بجای عبارت(بی معنی) عبارت (کاربرد ندارد) را در متن فوق استفاده می کردم بهتر بود، البته ممکن است کاربردهایی هم برای آن پیدا شود، اما در واقع برنامه نویس در طول انجام یک پروژه معمولا در اینگونه موارد به مشکل نمی خورد، اما خدمت همکاران دانشمند، می خواستم چند مشکل اساسی را مطرح نمایم، لطفا اگر اطلاعات و تجربیاتی دارید، دریغ نفرمایید،
با تشکر و امتنان: مهران فروردین
مشکل اول) هنگامیکه یک برنامه بزبان ویژوال بیسیک ۶ را کامپایل نموده و بصورت یک فایل اجرایی (exe.) در می آورید و آنرا بر روی کامپیوتر دیگری که به تازگی ویندوز جدیدی بر روی آن نصب شده اجرا می کنید، فایل مذکور اجرا نشده و با خطای class not registers you... مواجه می شویم، البته اگر نرم افزار ویژوال استادیو ۶ و یا آفیس ۲۰۰۷ یا یک آفیس ورژن پایین تر را بر روی آن نصب کنید مشکل برطرف خواهد شد، در واقع فایل اجرایی شما جهت اجرا نیاز به یک فایل DLL. دارد که بصورت اورجینال در ویندوز موجود نیست یا احتمالا رجیستر نشده است که با نصب ویژوال یا آفیس های قدیمی مشکل برطرف می شود، سوال اینجاست که چگونه می توان برنامه را بگونه ایی کامپایل نمود که فایل اجرایی که ایجاد می شود بدون مشکل اجرا شود و ما مجبور نباشیم از کاربران نرم افزارهای خود بخواهیم که باید visual studio 6 و یا یک آفیس قدیمی را بروی سیستم خود نصب کنند تا برنامه ما اجرا شود؟
vbhamed
جمعه 13 آذر 1394, 06:41 صبح
سلام
بحث وجود نداشتن یک چیز است و کم کاربرد بودن چیزی دیگر
شما گفتید اشاره گر در فایلهای Random معنی ندارد اما معنی دارد، ضمنا مسئله استفاده از دستور Seek نیست، شما داخل خود دستور Get هم که شماره رکورد رو میدین یعنی دارین اشاره گر فایل رو تنظیم میکنید، البته نه اینکه دقیقا شماره بایت مورد نظر رو بدین، شماره رکورد رو میدین خودش با توجه به طول رکورد به بایت مورد نظر میره و این یعنی اشاره گر فایل
Seek یک دستور کلی است که برای کار با فایلهای مختلف متنی و باینری و رندوم کاربرد دارد
فرض کنید به هر دلیلی قراره از قسمتی از فایل تا آخرش خونده بشه، اینجا میتونید یک تابع بنویسید که بدون توجه به موقعیت اشارهگر تا آخر فایل رو بخونه (تو دستور Get شماره رکورد ندین) و قبل از استفاده از تابع با دستور Seek موقعیت اشاره گر رو هر جای فایل خواستید تنظیم میکنید، در هر حال بودن چنین چیزی بهتر از نبودنشه و یه جاهایی کاربرد داره که ممکنه الان به ذهن نرسه
در مورد سؤال دوم هم بارها در سایت بحث شده، شما باید برای برنامتون ستاپ درست کنید
به لینک زیر مراجعه فرمایید
http://barnamenevis.org/forumdisplay.php?211-%D8%B3%D8%A7%D8%AE%D8%AA%D9%86-Setup-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%87%D8%A7%DB%8C-VB6
mehranfarvardin
شنبه 14 آذر 1394, 01:40 صبح
مشکل اول با مراجعه به لینک معرفی شده از طرف شما و مطالعه محتویات آن و در نهایت استفاده از ویزارت InstallShield موجود در پکیج ویژوال استادیو بطور کامل برطرف گردید، از راهنمایی حضرتعالی سپاسگزارم،
مشکل دوم) جهت اجرای نرم افزارهای فارسی نیاز به تنظیماتی در قسمت Regional and Language Option کنترل پنل ویندوز است، به عبارت دیگر باید در قسمت کنترل پنل، پنجره ی یاد شده را باز کرد و در تمامی کادرها و کومبوها و ۰۰۰ کشور را ایران و زبان را فارسی انتخاب نمود، مخصوصا باید بر روی کلید Change system Locale کلیک بزنید و کشور Iran را انتخاب نمایید، حال چگونه می توان با استفاده از یک سطر فرمان در متن یک برنامه بزبان ویژوال بیسیک ۶ ، این تنظیمات را اعمال کرد، آیا می توان یک بچ فایل یا چیزی شبیه به آن یا کدی به زبان vb6 نوشت تا این تنظیمات بدون دخالت کاربر و موس ، اعمال گردد؟
ایلیا آخوندزاده
شنبه 14 آذر 1394, 14:49 عصر
باسلام
اینو مد نظر بگیرین که اصولا تغییر در تنظیمات ویندوز بدون اجازه کاربر توسط UAC یا Firewall بلاک می شه مگر اینکه اونا خاموش باشن و فکر هم نکنم با یه کد بشه اینارو اعمال کرد.
موفق باشین
mehranfarvardin
پنج شنبه 01 بهمن 1394, 01:54 صبح
سلام،
می دانید که با استفاده از تابع ()Dir می توان فهمید که در یک فولدر یا درایو، فایلی با نام مورد نظر شما وجود دارد یا خیر، بعنوان نمونه دستور
(Print Dir(C:\Temp\Mehran.exe
چنانچه فایلی با نام Mehran.exe در مسیر پانچ شده وجود داشته باشد عبارت Mehran.exe را چاپ می کند و در غیر اینصورت هیچ چیزی چاپ نمی شود. حال می توان با استفاده از دستور if و الگوریتم مناسب، تکه برنامه ای نوشت که بتوان با استفاده از آن تشخیص داد که یک فایل در درایو یا فولدر بخصوصی وجود دارد یا نه؟
سوال من از همکاران عزیز متخصص و دانشمند اینست که آیا تابع مشابه ای در زبان برنامه نویسی ویژوال بیسیک ۶ وجود دارد که بتوان با استفاده از آن و به روشی مشابه، وجود یا عدم وجود یک فولدر را کشف کرد. آیا تابعی وجود دارد که در صورت وجود یک فولدر نام یا یک مقدار منطقی را برگرداند تا با استفاده آن بتوانیم بفهمیم که فولدر مورد نظر ما موجود است یا خیر؟
vbhamed
پنج شنبه 01 بهمن 1394, 12:05 عصر
سلام
برای فهمیدن اینکه فایلی در درایو یا پوشه ای وجود داره باید یک تابع بنویسید که کلیه پوشه ها و زیر پوشه ها رو لیست کنه و تو هر کدوم با دستور Dir دنبال فایل مورد نظر بگرده و تابع مستقیمی وجود نداره، البته تو اینترنت نمونه زیاده
دوم اینکه با همون دستور Dir میشه دنبال فهرست هم گشت و وجود یا عدم وجود اون رو مشخص کرد، به پارامتر دوم دستور Dir مراجعه کنید
سوم هم اینکه کلا کار دستور Dir رو با File System Object انجام بدین خیلی بهتره و امکانات بیشتری هم داره
از منوی Project گزینه References آیتم Microsoft Scripting Runtime رو علامت بزنید و دستور زیر رو بنویسید
Dim fs as New FileSystemObject
fs.
با زدن . بعد از fs لیست توابعش ظاهر میشه
arashmeysami
چهارشنبه 07 تیر 1396, 14:09 عصر
سلام دوست عزیز
کانکشن استیرینگی که لطف کردی گذاشتی برای اتصال به بانک اکسس هست که من ازش چند سالیه استفاده میکنم. میشه همین استیرینگ رو برای بانک sql هم بزارید.
چطور نام بانک و آدرس بانک تو sql و table رو وارد کنیم
ممنون از زحمتت
Shabnam00
چهارشنبه 19 تیر 1398, 14:05 عصر
دوستان من تازه میگم شروع کنم و میخاستم سی شارپ یاد بگیرم الان رفتم آموزشگاه ثبت نام کردم اما استادش بهم گفت باید اول دوره ی ویژوال بیسیک رو بگذرونم الان خیلیا دیدم گفتن بدرد نمیخوره اخه من قصدم اینه حرفه ای یاد بگیرم ک درآمد زایی کنم باهاش لطفا بگین چیکار کنم الان چی مناسبه تره برام ک بصورت پایه یادبگیرم و بالا برم
vbhamed
چهارشنبه 19 تیر 1398, 17:07 عصر
دوستان من تازه میگم شروع کنم و میخاستم سی شارپ یاد بگیرم الان رفتم آموزشگاه ثبت نام کردم اما استادش بهم گفت باید اول دوره ی ویژوال بیسیک رو بگذرونم الان خیلیا دیدم گفتن بدرد نمیخوره اخه من قصدم اینه حرفه ای یاد بگیرم ک درآمد زایی کنم باهاش لطفا بگین چیکار کنم الان چی مناسبه تره برام ک بصورت پایه یادبگیرم و بالا برم
خب اگر قراره سی شارپ یاد بگیری پس دیگه ویژوال بیسیک چیه گفته
ضمنا برای برنامه نویسی اول باید الگوریتم فلوچارت یاد بگیری بعد زبان برنامه نویسی
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.