ارتباط ويژوال بيسيك و ديتابيس

hayran2010

New Member
با سلام و خسته نباشید خدمت اساتید
در مورد ارتباط دیتا بیس با لیست راهنمایی کنید
می خواهم یک لیست را به دیتا بیس ارتباط دهم ارتباط را انجام میدهم و برنامه اد نیو میکنه ولی هیچی سیو نمی کنه
ممنون اگه سورس یا رهنمایی در این مورد کنید
با تشکر
 
سلام
توي بعضي نرم افزار ها مخصوصا Applicationهاي ويندوزي فارسي يه قسمتي هست كه توش يه متني وجود داره
اين متن قابل كپي شدنه ولي چند تا سوال توشون برام وجود داره جواب ها شو دست و پا شكسته مي دونم :31:

ولي مي خوام مطمئن شم پيشاپيش ببخشيد

1) نوع داده اي كه براي ذخيره سازي اين نوع متن ها توي ديتا بيس به كار مي ره چي هستش كه مثلا 10 صفحهA4 رو مي تونه توي يه فيلد از يك ركورد خودش ذخيره كنه؟؟ هم توي Access هم توي SQL Server

2) نوع ابزاري كه ما توي فرممون استفاده مي كنيم همون Textbox يا edit هستش كه multi line شده اند؟؟؟
آخرين و مهم ترين سوالم
3) Alignment موجود در متن در ديتابيس چطوري ذخيره مي شوند؟؟؟ data type خاصي وجود داره؟؟ بايد ترفند خاصي زد؟؟؟

من مي خوام اين روش رو توي دلفي يا سي شارپ به كار ببرم.

[FONT=&quot]اين هم يه نمونه عكس اميدوارم كمك كنه....[/FONT]


[FONT=&quot][/FONT]
8x69f9.jpg

[FONT=&quot]ممنون[/FONT]
 

the_king

مدیرکل انجمن
سلام
توي بعضي نرم افزار ها مخصوصا Applicationهاي ويندوزي فارسي يه قسمتي هست كه توش يه متني وجود داره
اين متن قابل كپي شدنه ولي چند تا سوال توشون برام وجود داره جواب ها شو دست و پا شكسته مي دونم :31:

ولي مي خوام مطمئن شم پيشاپيش ببخشيد

1) نوع داده اي كه براي ذخيره سازي اين نوع متن ها توي ديتا بيس به كار مي ره چي هستش كه مثلا 10 صفحهA4 رو مي تونه توي يه فيلد از يك ركورد خودش ذخيره كنه؟؟ هم توي Access هم توي SQL Server

در مورد Access نوع داده متن های عادی Text است که حداکثر 255 کاراکتر را ذخیره می کند. برای ذخیره سازی متن های
طولانی در Access از Memo استفاده کنید که حداکثر 63999 کاراکتر را هم در خود جای می دهد و که اصولا برای ذخیره سازی
متن های 10 صفحه A4 کافیست.

در SQL نوع داده Text حداکثر 2147483647 کاراکتر را در خود جای می دهد که قطعا با 10 صفحه A4 قابل قیاس نیست.
تنها عیب نوع داده Text این است که Unicode نیست و ممکن است در بعضی از سیستم ها حروف فارسی درست
خوانده نشوند و یا نمایش درستی نداشته باشند.
نوع داده ntext در SQL حداکثر 1073741823 کاراکتر را در خود جای می دهد که برخلاف Text از نوع Unicode است.

2) نوع ابزاري كه ما توي فرممون استفاده مي كنيم همون Textbox يا edit هستش كه multi line شده اند؟؟؟
در اکثر فرم ها بله، ولی اگر در بعضی فروم ها می توان در کنار متن تصویر قرار داد و یا یک قسمت متن را با فونت یا رنگ
متفاوتی نوشت (مانند Yahoo Messenger یا WordPad) از RichTextBox بجای TextBox عادی استفاده شده است که
توانایی هایش به مراتب بیشتر از TextBox است.

آخرين و مهم ترين سوالم
3) Alignment موجود در متن در ديتابيس چطوري ذخيره مي شوند؟؟؟ data type خاصي وجود داره؟؟ بايد ترفند خاصي زد؟؟؟
من مي خوام اين روش رو توي دلفي يا سي شارپ به كار ببرم.
اين هم يه نمونه عكس اميدوارم كمك كنه....
اگر از TextBox های عادی استفاده می کنید، بایستی در کنار فیلد متنی، یک فیلد دیگری برای ذخیره سازی Alignment
پیشبینی کنید وگرنه یک متن عادی اطلاعاتی از Alignment اش ارائه نمی کند. ترفندی که استفاده می کنید، عبارتست از
ذخیره دو فیلد بجای یک فیلد. هر بار که متنی را ذخیره می کنید هم متن و هم Alignment اش را ثبت نمایید و موقع فراخوانی
هر دو را روی TextBox پیاده کنید.

اگر از RichTextBox استفاده می کنید، نیازی به ذخیره سازی اطلاعات اضافی ای نیست، چون کنترل های RichTextBox
علاوه بر Text یک متن کد گذاری شده (TextRTF یا Rtf) هم دارند که علاوه بر متن، تمامی خصوصیات آن مثل رنگ و سایز
و فونت و غیره را هم در خود جای می دهد. اگر این مشخصه را ذخیره کنید، تمامی خصوصیات متن را حفظ خواهید کرد.
 

hamed_rezaei77

New Member
کمک فوری

:cry:با سلام خدمت همگی
من توی یه برنامه میخواهم یه لیستی از بانک داشته باشم با استفاده از db grid کد های زیر را نوشتم ولی کار نمیکنه
Form_Activate()

Data1.Refresh
Data1.Enabled = True
End If


Form_Unload

Form4.Hide
If Data1.Enabled = True Then
Data1.Refresh
Data1.Enabled = False
End If
 

the_king

مدیرکل انجمن
:cry:با سلام خدمت همگی
من توی یه برنامه میخواهم یه لیستی از بانک داشته باشم با استفاده از db grid کد های زیر را نوشتم ولی کار نمیکنه
در اولین مرحله که بایستی مشخصات Data1 را تکمیل کنید تا به Recordset مورد نظر اشاره کند. یعنی مشخصه های
DatabaseName و RecordSource.

در مرحله بعدی شما مشخصه DataSource را در DBGrid روی Data1 تنظیم کرده اید؟ پیش از اجرای کد این عمل را انجام دهید
و روی DBGrid راست کلیک کرده و گزینه Retrieve Fields را انتخاب کنید.
 

Danial-Secret

New Member
با سلام دوستان يكي لطف كنه طريقه كانكت شدن برنامه به ديتابيس اسكيو ال از طريق اينترنت را كامل آموزش بده ممنونم.
 

hbohrani

New Member
اگه ممكنه توضيح بديد كه من چطوري ميتونم در vb برنامه اي بنويسم كه مقادير چند متغير را با يك id در يك فايل ذخيره كنه سپس اگه يك id خاص رو خواستيم مقادير مربوطه را به متغيرهاي خودش لود كنه.ممنون ميشم راهنمايي كنيد
 

hbohrani

New Member
سلام وممنون ازتوجه تون
در تاپيك فوق چيزي راجع به كار با فايل پيدا نكردم.
 

MDLOVE

New Member
با سلام و خسته نباشید خدمت اساتید
در مورد ارتباط دیتا بیس با لیست راهنمایی کنید
می خواهم یک لیست را به دیتا بیس ارتباط دهم ارتباط را انجام میدهم و برنامه اد نیو میکنه ولی هیچی سیو نمی کنه
ممنون اگه سورس یا رهنمایی در این مورد کنید
با تشکر


سلام دوستان عزیز
سال نو رو به همه تبریک میگم :rose:

و اما در ویژوال بیسیک برای اینکه ویرایش . اضافه و یا .... هر کار دیگری که بر روی دیتابیس انجام میدهید
ثبت شود . باید رکورد ست خودتون رو آپدیت کنید . تا تغیرات ثبت شود

و اما مشکل لیست باکس یا Combo Box شما به راحتی میتونید با یه حلقه For همه رکورد ها رو داخل
Listbox با Combo Box بریزید و از آنها استفاده کنید . به این شکل که مقدار حلقه رو به اندازه کل رکوردها
منهای یک میکنید و بعد در داخل حلقه هر رکورد رو به لیست اضافه میکنید .
 

raha1815

New Member
سلام
ممنون از مطالب خوبتون من یه سوال دارم .
چگونه میشه با استفادا از ّفیلتر مثلا رکوردهای بین 2 تاریخ رو استخراج کرد .
میدونم که دستور زیر یک تاریخ و استخراج میکنه ولی بین 2 تاریخ و نمیدونم .

'" +Adodcsats.Recordset.Filter = "Date=' " + Text1.Text
 

saalek110

Well-Known Member

pesaranbad_most

New Member
دوستان سلام ، خسته نباشید.
ببخشید میشه بگید مشکل این تابع چیه؟
مخ ما رو ترکوند همش پیغام میده
Cb_0.Text حاوی نام شخصی می باشد.
توجه : اگه تعداد رکوردها یکی دوتا باشد پیغام نمیده ولی اگر تعداد رکورد ها زیاد شود و یا چندین نام مختلف ذخیره شده باشد این بار پیغام میده .







If Ad2.Recordset.BOF = True Then
Exit Sub
End If

If Ad2.Recordset.EOF = False Then
For i = 0 To Ad2.Recordset.RecordCount
If Ad2.Recordset.BOF = True Then
Exit Sub
End If
If Cb_0.Text = Ad2.Recordset.Fields("name_n") Then
Ad2.Recordset.Delete
End If

Ad2.Recordset.MoveNext

If Ad2.Recordset.EOF = True Then
If Ad2.Recordset.RecordCount = 0 Then
Ad2.Refresh
Exit Sub
Else
If Ad2.Recordset.RecordCount > 0 Then
Ad2.Recordset.Update
Ad2.Refresh
Ad2.Recordset.MoveFirst
Exit Sub
End If
End If
End If
Next
End If
End Sub


این پیغامشه :

row cannot be located for updating.some values may have been changed since it was last read

بعضی وقتها هم اینو میده :

key column information is insufficient or incorrect. too many rows were affected update Private Sub Delete_nasia() run-time error '-2147217864(80040e38)':
run-time error '-2147467259(80004005
 

raha1815

New Member
سلام دوست عزیز
من 2 تا سوال دارم
1- من میخوام از طریق textbox به لیستم اضافه کنم با این کامند List1.additem text1.text همون لحظه انجام میشه ولی وقتی از vb خارج میشم و دوباره برمیگردم save انجام نشده .یعنی textbox به لیست اضافه نشده چیکار کنم ؟

2- من یه ADODC و Datagrid دارم میخوام وقتی یه command button رو اجرا میکنم عملیات متفاوتی روی رکوردها انجام بشه
مثلا اونهایی که اسمشون علی یه سری عملیات روشون انجام بشه و اونهایی که اسمشون محمد یه سری کار دیگه و الی آخر .....
و در نهایت تمام رکوردها با کارهایی که روشون انجام شده رو ببینم .
این تفکیک رو چطوری انجام بدم
3-
 

adib202

New Member
مشکل در DataGrid (یاری رسانید مرا)--> VB6

آقا من یه مشکل دارم راجع به یه موضوع که فکر کنم بروبکس برنامه نویسمون بتونن کمکم کنن:wink:
مشکل من راجع به DataGrid هستش،در ضمن من از ADODC استفاده کردم.:cool:

چطور میشه مقداری که توی یه textbox هست رو با یک کلیک که روی Datagrid میزنیم وارد یک رکوردست کنیم؟
این کد رو یکی از دوستان داده ولی هر باری که کلیک می کنم یک رکوردست جدید میده:
-------------------------------------------------------------------
Private Sub DataGrid2_Click()
If Add_or_Edit = True Then
Adodc2.RecordSource = "SELECT * FROM SAMPLE WHERE ID=" & SAMPLE_ID
Adodc2.Refresh
Adodc2.Recordset.Fields("ID") = Trim(FilterTxt)
Else
Adodc2.RecordSource = "SELECT * FROM SAMPLE "
Adodc2.Recordset.AddNew
Adodc2.Recordset.Fields("ID") = Trim(FilterTxt)
End If
End Sub​
-------------------------------------------------------------------

تورو خدا کمکم کنید...:rose:
 

the_king

مدیرکل انجمن
متغیر Add_or_Edit رو کجا مقدار دهی کرده اید؟
اگر مقدار Add_or_Edit برابر با False باشه، همواره بخش Else آن If اجرا خواهد شد که در داخلش از
متد AddNew استفاده شده، کد زیر را برای ویرایش رکورد

کد:
    Adodc2.RecordSource = "SELECT * FROM SAMPLE WHERE ID=" & SAMPLE_ID
    Adodc2.Refresh
    Adodc2.Recordset.Fields("ID") = Trim(FilterTxt)
    Adodc2.Recordset.Update

و کد زیر را برای اضافه کردن رکورد پیشنهاد می کنم :

کد:
    Adodc2.RecordSource = "SELECT * FROM SAMPLE"
    Adodc2.Refresh
    Adodc2.Recordset.AddNew
    Adodc2.Recordset.Fields("ID") = Trim(FilterTxt)
    Adodc2.Recordset.Update
 

adib202

New Member
مشکل در DataGrid

ممنونم از راهنماییت the_king
کارم راه افتاد:oops:
حالا یه سوال دیگه:
چطوری میتونم روی یک فیلد خاص از DataGrid که کلیک می کنم یه فرم دیگه رو باز کنم.

با مثال بگم بهتره.:cool:
مثلا اگه دو تا ستون به نام ID و Person باشه و وقتی روی یکی از فیلدهای ID در هر ردیفی کلیک میکنم Form1 باز بشه.

بازم ممنون>|<
 

the_king

مدیرکل انجمن
ممنونم از راهنماییت the_king
کارم راه افتاد:oops:
حالا یه سوال دیگه:
چطوری میتونم روی یک فیلد خاص از DataGrid که کلیک می کنم یه فرم دیگه رو باز کنم.

با مثال بگم بهتره.:cool:
مثلا اگه دو تا ستون به نام ID و Person باشه و وقتی روی یکی از فیلدهای ID در هر ردیفی کلیک میکنم Form1 باز بشه.

بازم ممنون>|<

از رخداد RowColChange استفاده کنید، که اگر Col برابر مقدار خاصی بود فلان فرم را باز کند.
کد:
Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
    If DataGrid1.Col = 0 Then
        Form2.Show vbModal
    End If
End Sub
 

mohsendarya

New Member
مشکل خیلی شدید لطفاً کمک کنید

من دارم یه برنامه تاکسی تلفنی می نویسم. این برنامه یه قسمتی داره به نامه کارکرد راننده ها به این صورت که تاریخ رو می گیره مثلاً از تاریخ 05/03/1388 تا 09/03/1388 و بعد کل کار کردشو نشون بده اگه می شه کمکم کنید خیلی مهمه سورسشو اگه واسم بزارید ممنون میشم. خیلی متشکرم.:sad:
 

جدیدترین ارسال ها

بالا