برگزیده های پرشین تولز

مشكل در ساخت دفترچه كد شهرها

parsbin

Registered User
تاریخ عضویت
21 جولای 2005
نوشته‌ها
1,160
لایک‌ها
3
سن
34
محل سکونت
كرج- پلاك 10
من تازه برنامه نويسي با وي بي رو آغاز كردم.
ميخوام يك فرم درست كنم تا در text box1 نام هر شهري كه وارد شد در textbox2 كد اون شهر و در مراحل بعد در textbox 3 استان اون شهر هم نمايش داده بشه.
همين اول كار به مشكل برخوردم.من كدها رو اينجا قرار ميدم ممنون ميشم راهنمايي كنيد.

Private Sub Command1_Click()
If Val(Text1.Text) = "tehran" Then Text2.Text = 21 And Text3.Text = "tehran"


End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
End Sub

در ضمن فرم با سه تكست باكس و دو دكمه exit و run تشكيل شده
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
41
محل سکونت
یه خورده اونورتر
تابع Val برای برگرداندن عدد از یک رشته هست. شما یک رشته رو تبدیل میکنید به عدد که اینجا میشه 0 و هیچوقت شرطتون جواب نمیده.
 

parsbin

Registered User
تاریخ عضویت
21 جولای 2005
نوشته‌ها
1,160
لایک‌ها
3
سن
34
محل سکونت
كرج- پلاك 10
ميشه بيشتر راهنمايي كنيد.
بايد چيكار كنم
اگر خط اول تصحيح بشه و با يك شهر جواب بگيرم بقيه رو هم فكر كنم بتونم برم
با select case يا if
نميدونم
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
41
محل سکونت
یه خورده اونورتر
به نقل از parsbin :
ميشه بيشتر راهنمايي كنيد.
بايد چيكار كنم
اگر خط اول تصحيح بشه و با يك شهر جواب بگيرم بقيه رو هم فكر كنم بتونم برم
با select case يا if
نميدونم
خب بهترینش استفاده از case هستش و اگرم دیتابیس بلدید که استفاده از دیتابیس بهتره.

کد شما یه خطای دیگه هم داره، از And استفاده کردید. در وی بی اگر میخواید چند دستور رو روی یک خط بیارید باید از : استفاده کنید. و همونطور که گفتم استفاده از Val لازم نیست چون این تابع مقدار عددی یک string رو برمیگردونه. کد شما اینطوری میشه:

کد:
Private Sub Command1_Click() 
If LCase(Text1.Text) = "tehran" Then Text2.Text = 21 : Text3.Text = "tehran" 
If LCase(Text1.Text) = "abcd" Then Text2.Text = 21 : Text3.Text = "abcd" 
 
End Sub
یا
کد:
Private Sub Command1_Click() 
If LCase(Text1.Text) = "tehran" Then
 Text2.Text = 21
 Text3.Text = "tehran"
ElseIf LCase(Text1.Text) = "abcd" Then
 Text2.Text = 21
 Text3.Text = "abcd"
ElseIf LCase(Text1.Text) = "efg" Then
 Text2.Text = 21
 Text3.Text = "efg"
End if
End Sub
یا
کد:
Private Sub Command1_Click() 
Select Case LCase(Text1.Text)
 Case "tehran"
  Text2.Text = 21
  Text3.Text = "tehran"
 Case "abcd"
  Text2.Text = 21
  Text3.Text = "abcd"
 Case "efg"
  Text2.Text = 21
  Text3.Text = "efg"
End Select
End Sub
حالا خودتون شهرهای دیگه رو اضافه کنید من یادم نمیاد! :happy:

من از تابع LCase هم استفاده کردم تا string رو کلا حروف کوچک کنیم. چون ممکنه کسی تایپ کنه Tehran یا TeHrAn و اینها اونوقت برابر با tehran نمیشن.

در ضمن خالی کردن تکست باکسها در هنگاه لود برنامه لازم نیست اگر در دیزاین مود، مقدار Text رو از پنجره Properties پاک کنید.
 

parsbin

Registered User
تاریخ عضویت
21 جولای 2005
نوشته‌ها
1,160
لایک‌ها
3
سن
34
محل سکونت
كرج- پلاك 10
راهنمايي ميخواستم شما همش رو انجام داديد!:blush:
واقعا متشكرم
پروژه عقب افتادم بود
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
41
محل سکونت
یه خورده اونورتر
موفق باشید
109.gif
 
بالا