พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com | บล็อกอาหาร
ASP programming / การทำ Combo Box
siriluk_th
Sat 11 Jun 2005 13:23:01

จากที่ถามไปแล้วว่า จะทำให้มี Combo box 2 ตัว ที่มีความสัมพันธ์กันอย่างไร โดยใช้ข้อมูลที่มีอยู่ใน Database  มีเรื่องจะถามต่อว่า แล้วจะใช้คำสั่งอย่างไรวนลูป ในการ add ข้อมูลจาก Datatbase ลง ไปในอาร์เรย์

theform.b.Options[0] = new Option('key1','value1');

.

.

theform.b.Options[n] = new Option('keyn','valuen');

ถ้ามีตัวอย่างจะขอบคุณมากค่ะ เพราะงมมาหลายวันแล้ว งานไม่เสร็จซักที ขอบคุณอีกครั้งค่ะ

Administrator
Sat 11 Jun 2005 14:00:45

การวน loop เอาค่าออกจาก database resourse ก็ทำเหมือนการแสดงผลข้อมูลใน database ธรรมดาครับ เช่น ตัวอย่างง่ายๆใน asp(vb)


 <script language="javascript">

function showSub(obj){
  var theForm = obj.form;
  switch(obj.value){
     case "1":
     {
<%
connect_string = "Driver={Mysql}; Server=localhost;
                  Database=domainname_com; UID=username; PWD=password"
set dbConn = server.createObject("ADODB.connection")
dbConn.open connect_string

mySQL="select * from asptest"
set rstemp=dbConn.execute(mySQL)

If  rstemp.eof then
   response.write "No records matched"
   response.write mySQL & "So cannot make table..."
   connection.close
   set connection=nothing
   response.end

end if

DO  UNTIL rstemp.eof

   key = rstemp("key")
   value = rstemp("value")
   response.write "theForm.b.options["& i &"] = new Option('" & key & "','" & value & "');"
   rstemp.movenext
LOOP

set rstemp=nothing
dbConn.close
set dbConn=nothing
%>
    }
    break;

</script>

Code เหล่านี้ใช้การวน loop อ่านข้อมูลจาก database ที่ query ออกมาจาก database ธรรมดาครับ สามารถหา code ได้จากเว็บไซท์ทั่วไปครับ

การวน loop ก็จะต้อง query ข้อมูลออกมาในทุกกรณีที่เกิดขึ้นกับ combo a ครับ จากตัวอย่างเป็นเหตุการณ์ที่ combo a ในกรณีมีค่า 1 เท่านั้นครับ

ต้องขออภัยจริงๆครับถ้ามี code ใดผิดพลาด เนื่องจากไม่ค่อยได้เขียน asp(vb) ครับ

dong
dong
Sat 1 Apr 2006 13:52:53

จะทำ sinwave  ในโปรแกรม  vb mevpjk'wi8iy[

kakiya
kakiya
Tue 12 Sep 2006 12:22:45

บอกวิธีทำ โปรแกรมแปลงค่าเงินบาทหน่อยคับผมต้องส่งอาจารย์นะคับช่วยทีคับ

อธิบายด้วยนะคับเดียวผมงง เอา แปลงแบบใช้ combobox นะคับ

Administrator
Tue 12 Sep 2006 13:06:47
ก็ทำได้ทั้ง client-side และ server-side ครับ เอาง่ายๆก็
<select name="currency">
    <option value="37.89">US Dollar</option>
    <option value="68.52">Euro</option>
    <option value="70.21">GBP</option>
    <option value="29.53">Singapore Dollar</option>
</select>

จากนั้นก็เอาไปคูณกับจำนวนเงินที่ต้องการคำนวณครับ เช่น
150 * 37.89 = 5683.50
150 US Dollar จะได้ 5,683.50 บาท
ถ้าต้องการแปลงกลับก็เอาไปหารรวมทั้งหาเศษเท่านั้นครับ
kakiya
kakiya
Sat 16 Sep 2006 06:19:00

จับ erroให้หน่อยคับคือถ้าไม่เลือกที่สกุลเงินมันจะ erro คับ โปรแกรมผมไม่สวยงามเลยช่วยแก้ไขให้ด้วยนะคับท่าน

Dim mvalue(21) As Single

Private Sub Command1_Click()
Dim m As Single
Dim b As Single
m = Val(Text1.Text)
If Text1.Text = "" Then
 MsgBox "¡ÃسҡÃÍ¡¨Ó¹Ç¹à§Ô¹"
End If

If Option1.Value Then
    b = getmoneyValue(Combo1.ListIndex) / m
    Label1.Caption = b & " Baht"
    label2.Caption = getmoneyValue(Combo1.ListIndex) & "/" & m & " = " & getmoneyValue(Combo1.ListIndex / m)
  
  Else
    b = getmoneyValue(Combo1.ListIndex) * m
    Label1.Caption = b & " Baht"
    label2.Caption = getmoneyValue(Combo1.ListIndex) & "*" & m & " = " & getmoneyValue(Combo1.ListIndex) * m
   End If

End Sub

Private Sub Command2_Click()
End
End Sub
Function getmoneyValue(ByVal x As Integer) As Single
Dim tmp As Single
Dim i As Integer
    For i = 0 To 20
        If x = i Then
            tmp = mvalue(x)
        End If
    Next i
    getmoneyValue = tmp
End Function

Private Sub Command3_Click()
Text1.Text = ""
Label1.Caption = ""
label2.Caption = ""
End Sub

Private Sub Form_Load()
    mvalue(0) = 0
    mvalue(1) = 41.5055
    mvalue(2) = 51.0613
    mvalue(3) = 2.6544
    mvalue(4) = 5.3332
    mvalue(5) = 11.1904
    mvalue(6) = 24.6159
    mvalue(7) = 24.6723
    mvalue(Cool = 0.7463
    mvalue(9) = 4.7978
    mvalue(10) = 0.9729
    mvalue(11) = 33.0326
    mvalue(12) = 29.7413
    mvalue(13) = 27.8307
    mvalue(14) = 0.7268
    mvalue(15) = 32.5319
    mvalue(16) = 0.6219
    mvalue(17) = 6.8712
    mvalue(1Cool = 5.0294
    mvalue(19) = 250
    mvalue(20) = 4.7978
   
  
    Combo1.AddItem "Ê¡ØÅà§Ô¹"
    Combo1.AddItem "´ÍÅÅÒÃìÊËÃѰ"
    Combo1.AddItem "ÂÙâÃ"
    Combo1.AddItem "à¹"
    Combo1.AddItem "´ÍÅÃìÅÒÎèͧ¡§"
    Combo1.AddItem "Ãѧ¡Ôµ ÁÒàÅà«ÕÂ"
    Combo1.AddItem "´ÍÅÃìÅÒÊÔ§¤â»Ãì"
    Combo1.AddItem "´ÍÅÃìÅÒºÃÙä¹"
    Combo1.AddItem "໹⫿ÔÅÔ¹»Ô¹"
    Combo1.AddItem "ÃÙ»ÕÍÔ¹à´ÕÂ"
    Combo1.AddItem "¿ÃѧÊÇÔÊ¡ì"
    Combo1.AddItem "´ÍÅÃìÅÒÍÍÊàµÕÂàÅÕÂ"
    Combo1.AddItem "´ÍÅÃìÅÒ¹ÔÇ«ÕᏤì"
    Combo1.AddItem "ÃÙ»Õ»Ò¡Õʶҹ"
    Combo1.AddItem "´ÍÅÃìÅÒ᤹¹Ò"
    Combo1.AddItem "â¤Ã¹Ò"
    Combo1.AddItem "â¤Ã¹Òà´¹ÁÒÃì¡"
    Combo1.AddItem "â¤Ã¹Ò¹ÍÃìàÇÂì"
    Combo1.AddItem "àùÁѹºÔ"
    Combo1.AddItem "¡Õº"
    Combo1.AddItem "ÃÙà»ÕÂ"
   
End Sub

kakiya
kakiya
Sat 16 Sep 2006 06:21:23
ลืมบอกไปผมให้ Microsoft Visual Basic 6.0 เขียนโปรแกรมคับท่าน
Administrator
Sat 16 Sep 2006 10:21:54
b = getmoneyValue(Combo1.ListIndex) / m
น่าจะมีปัญหาตรงนี้ล่ะครับ เพราะจะสามารถเกิด n/0 ซึ่งไม่สามารถคำนวณหาค่าได้ครับ อย่างไรแล้วลองทำการตรวจสอบค่าของ m ว่าไม่เป็น 0 เสียก่อนครับ นัยคือมีการเลือกค่าครับ
kakiya
kakiya
Sat 16 Sep 2006 10:59:13

แก้แล้วคับท่านยังไม่หายเลยคับบอกหน่อยคับท่าน จุดที่ว่า ถ้าไม่เลือกสกุลเงินแล้วโปรแกรมจะ ERROคับช่วยทีหาวิธีหน่อยคับ

Administrator
Sat 16 Sep 2006 11:32:41
ไม่ทราบว่าแจ้ง Error ใดครับ
kakiya
kakiya
Sat 16 Sep 2006 12:26:07
If Option1.Value = True Then
    b = m / getmoneyValue(Combo1.ListIndex)
    Label1.Caption = b & " Baht"
    label2.Caption = getmoneyValue(Combo1.ListIndex) & "/" & m & " = " & m / getmoneyValue(Combo1.ListIndex)
   ตรงสีเขียวนี้ละคับที่ มันจะมีเหลืองๆๆแจ้งERROคับ
Administrator
Sat 16 Sep 2006 12:58:50
ผมจำไม่ได้แล้วว่า VB6 จะมีการ watch หรือไม่ครับ ลองทำการ debug เป็น step ดูครับ
แล้วที่บรรทัดที่เป็นปัญหา ตัวแปร m นั้นมีค่าเป็นเท่าไร และ getmoneyValue(Combo1.ListIndex) มีค่าเป็นเท่าไร
อาจจะเอาตัวแปรมารับค่าจาก getmoneyValue(Combo1.ListIndex) เพื่อทำการ debug ก็ได้ครับ ดูครับว่าทั้ง ตัวมีค่าเป็นเท่าไรครับ
kakiya
kakiya
Sat 16 Sep 2006 16:21:22

ขอบคุณคับแต่ผมยังทำไม่ได้เหมือนเดิมคับ

Administrator
Sun 17 Sep 2006 23:45:53
ไม่ทราบว่ามีแจ้ง error ใดบ้างครับ และลองทำการ watch แล้วได้ค่าอย่างไรครับ
kakiya
kakiya
Mon 18 Sep 2006 08:56:41

บอกวิธีเอารูปขึ้นหน่อยคับผมจะรูปที่มันERROให้ดูคับ

kakiya
kakiya
Mon 18 Sep 2006 08:56:41

บอกวิธีเอารูปขึ้นหน่อยคับผมจะรูปที่มันERROให้ดูคับ

Administrator
Mon 18 Sep 2006 09:50:06
รบกวนไปฝากรูปที่นี่ก่อนครับ http://img.icez.net/ หรือ image hosting ที่ใดก็ได้ครับจากนั้นก็เขาจะแจ้ง url เพื่อใช้ในการแสดงผลครับ นำมาใส่ในนี้ได้เลยครับ
kakiya
kakiya
Tue 19 Sep 2006 15:59:45

มันไม่ได้นะคับ ผมมันเป็นเว็ปดำไปหมดเลยคับ

kakiya
kakiya
Tue 19 Sep 2006 16:05:28

http://img.icez.net/ib/bgfk1.jpg

http://img.icez.net/it/tdau2.jpg

นี้ละคับท่านดูให้หน่อยคับ จะส่งวัน พฤหัสบดี นี้คับ

Administrator
Tue 19 Sep 2006 17:10:12
ตาม Error นี้แจ้งว่า Divide by zero นั้นหมายถึงว่า เลขใดๆหาร 0 ไม่สามารถคำนวณได้ครับ
getmoneyValue(Combo1.ListIndex) นั้นคืนค่ามาเป็น 0 ครับ ต้องเช็คดูครับว่า function นี้ทำไมจึงคืนค่ามาเป็น 0 ครับ การคืนค่าของ function นั้นต้องตรวจสอบดูครับ ซึ่งทั้ง m และ getmoneyValue(Combo1.ListIndex) ต้องไม่เป็น 0 ครับ
kakiya
kakiya
Tue 19 Sep 2006 19:38:54

ขอไรได้ไหมคับเขียนให้ผมหน่อย มันออกจะน่าเกลียดแต่ผมต้องส่งจิงๆๆนะคับ ผมปวดหัวจะแย่แล้วคับ จะเอาเรื่องอื่นก็ไม่ทันแล้ว คับได้โปรดคับ ผมส่งวันที่ 21 คับ

Administrator
Tue 19 Sep 2006 20:10:45

Function getmoneyValue(ByVal x As Integer) As Single
Dim tmp As Single
    tmp = CSng(Combo1.Text)
    getmoneyValue = tmp
End Function

kakiya
kakiya
Tue 19 Sep 2006 21:22:59

ไม่ได้ครับยังเหมือนเดิม แต่มันไม่รับค่าเป็น 0 แล้ว แต่มันยัง Erro อยู่ครับช่วยหน่อย

kakiya
kakiya
Tue 19 Sep 2006 21:42:18

ท่านมีโปรแกรมเปิด VBไมครับ ดูให้หน่อยผมอัพให้แล้วคับ

http://www.savefile.com/upload.php

kakiya
kakiya
Tue 19 Sep 2006 21:45:38

http://www.uploading.com/files/M0XMT2DN/VB.rar.html

ตัวแรกใช้ไม่ได้คับ เอาตัวนี้นะคับ

kakiya
kakiya
Tue 19 Sep 2006 21:49:59

ผมลืมบอกวิธีโหลดคับท่าน พอเข้าเว็ปแล้วท่าน เลื่อนลงมาข้างล่างนะคับจะเห็นคำว่า Free คับ กดเลยคับ แล้วท่านก็รอกรอก โค๊ดที่มันจะขึ้นมานะคับ แล้วรอประมาณ 30 วินาทีคับแล้วท่านก็โหลดเลยคับ ขอบคุณมากๆๆนะคับที่ กรุณาช่วยผม

Administrator
Wed 20 Sep 2006 15:30:25
จน ณ เวลานี้ผมยังไม่สามารถทำการดาวน์โหลดได้เลยครับ เว็บแจ้งว่า slot เต็มครับ แจ้ง Error ใดครับ ถ้ายังเป็น divide by zero ก็คงต้องดูครับว่าตัวหารมีค่าเป็น 0 เพราะเหตุใด
kakiya
kakiya
Wed 20 Sep 2006 19:22:40

ท่านคับผมทำได้แล้วคับท่าน แค่เพิ่มตัวนี้คับ

Dim list As Integer
list = Combo1.ListIndex
If list < 0 Then
    MsgBox "¡ÃسÒàÅ×͡ʡØÅà§Ô¹", vbOKOnly, "Error"
End If
ขอบคุณท่านที่ช่วยผมมาตลอดคับ ขอบคุณคับ

Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login