Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Cần giúp đỡ chuyển số có thập phân ra chữ
#1
Mình đã tìm trên nhóm các cách đổi số ra chữ, tuy nhiên các bài viết chỉ với các số nguyên (123456), mình muốn các bạn giúp đỡ hàm để chuyển số có chữ số thập phân ra chữ (123456,88).

Xin trân trọng cảm ơn.
Chữ ký của ledangvan Xin chào, mình là ledangvan, Tham gia http://thuthuataccess.com/forum từ ngày 22-08 -11.
ღღღღღTài sản của ledangvan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#2
Thông thường trong thực tế người ta chỉ lấy phần thập phân khoảng 2-3 số là cùng nên theo yêu cầu của bạn ta chỉ cần làm như sau:
VD ta có số i=1254,185 cần đọc số này thành chữ
Ta có 1 hàm đọc số là Docso (cái này bạn tự tìm)
ta khai báo 2 biến kiểu Double là songuyen và thapphan
songuyen=ind(i)      'chia lấy phần nguyên
thapphan=mod(i)    'chia lấy phần thập phân
Đọc số thành chữ=Docso(songuyen) & " phẩy " & Docso(thapphan)
Chữ ký của lmthu Xin chào, mình là lmthu, Tham gia http://thuthuataccess.com/forum từ ngày 04-07 -14.
Reply
Những người đã cảm ơn
#3
Thích cái cách giải quyết này của bạn lmthu. Đúng là think out the box.  007
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#4
Bạn thử code này xem sao nhé.

Function TIENLE(TienSo)

Dim Ketqua, SoTien, NHOM, Chu, Dich, S1, S2, S3 As String
Dim i, j, Vitri As Byte, S As Double
Dim Hang, Doc, Dem
If TienSo = 0 Then
    Ketqua = "Kh" & ChrW$(244) & "ng m" & ChrW$(233) & "t vu" & ChrW$(244) & "ng./."
Else
    If Abs(TienSo) >= 1E+15 Then
        Ketqua = "S" & ChrW$(7889) & " qu" & ChrW$(225) & " l" & ChrW$(7899) & "n - H" & ChrW$(224) & "m " & ChrW$(273) & ChrW$(7893) & "i s" & ChrW$(7889) & " ra ch" & ChrW$(7919) & " Vi" & ChrW$(7879) & "t Nam"
    Else
        If TienSo < 0 Then
            Ketqua = ChrW$(194) & "m" & Space(1)
        Else
            Ketqua = Space(0)
        End If
            SoTien = Format(Abs(TienSo), "##############0.00")
        SoTien = Right(Space(15) & SoTien, 18)
        Hang = Array("Kh" & ChrW$(244) & "ng", "tr" & ChrW$(259) & "m", "m" & ChrW$(432) & ChrW$(417) & "i", "g" & ChrW$(236) & " " & ChrW$(273) & "ã")
        Doc = Array("Kh" & ChrW$(244) & "ng", "ng" & ChrW$(224) & "n t" & ChrW$(272), "t" & ChrW$(7927), "tri" & ChrW$(7879) & "u", "ng" & ChrW$(224) & "n", "ph" & ChrW$(7849) & "y", ChrW$(273) & ChrW$(7891) & "ng")   'ChrW$(273) & ChrW$(7891) & "ng"
        Dem = Array("Kh" & ChrW$(244) & "ng", "m" & ChrW$(7897) & "t", "hai", "ba", "b" & ChrW$(7889) & "n", "n" & ChrW$(259) & "m", "s" & ChrW$(225) & "u", "b" & ChrW$(7843) & "y", "t" & ChrW$(225) & "m", "ch" & ChrW$(237) & "n")
        For i = 1 To 6
            NHOM = Mid(SoTien, i * 3 - 2, 3)
            If NHOM <> Space(3) Then
                Select Case NHOM
                    Case "000"
                        If i = 5 Then
                             Chu = "ph" & ChrW$(7849) & "y" & Space(1)    ''ChrW$(273) & ChrW$(7891) & "ng" & Space(1)
                        Else
                            Chu = Space(0)
                        End If
                    Case ".00"
                          Chu = "kh" & ChrW$(244) & "ng kh" & ChrW$(244) & "ng" & ChrW$(273) & ChrW$(7891) & "ng" ''ChrW$(233) & "t vu" & ChrW$(244) & "ng./."
                    Case ",00"
                          Chu = "kh" & ChrW$(244) & "ng kh" & ChrW$(244) & "ng" & ChrW$(273) & ChrW$(7891) & "ng" ''ChrW$(233) & "t vu" & ChrW$(244) & "ng./."
                    Case Else
                             Chu = ""
                        S1 = Left(NHOM, 1)
                        S2 = Mid(NHOM, 2, 1)
                        S3 = Right(NHOM, 1)
                        Chu = Space(0)
                        Hang(3) = Doc(i)
                        For j = 1 To 3
                            Dich = Space(0)
                            S = Val(Mid(NHOM, j, 1))
                                If S > 0 Then
                                    Dich = Dem(S) & Space(1) & Hang(j) & Space(1)
                                End If
                                Select Case j
                                    Case 1 And S = 0 And S2 = 0 And S3 <> 0
                                    If (S1 = 0 And S2 = 0 And i = 2 Or S1 = 0 And S2 = 0 And i = 3 Or S1 = 0 And S2 = 0 And i = 4 Or S1 = 0 And S2 = 0 And i = 5) Then
                                        Dich = "kh" & ChrW$(244) & "ng tr" & ChrW$(259) & "m l" & ChrW$(7867) & Space(1)
                                    End If
                                    
                                    Case 1 And S = 0 And S2 <> 0 And S3 <> 0
                                    If S1 = 0 And (i = 2 Or i = 3 Or i = 4 Or i = 5 Or i = 6) Then
                                        Dich = "kh" & ChrW$(244) & "ng tr" & ChrW$(259) & "m "
                                    End If
                                    Case 1 And S = 0 And S2 <> 0 And S3 = 0
                                    If S1 = 0 And (i = 2 Or i = 3 Or i = 4 Or i = 5 Or i = 6) Then
                                        Dich = "kh" & ChrW$(244) & "ng tr" & ChrW$(259) & "m "
                                    End If
                                   Case 1 And S1 = 0 And S2 = 0 And S3 = 0
                                    If (i = 4 And S1 = 0 And S2 = 0 And S3 = 0) Then
                                       Dich = "kh" & ChrW$(244) & "ng tr" & ChrW$(259) & "m ph" & ChrW$(7849) & "y"
                                    End If
                                    Case 2 And S = 1
                                        Dich = "m" & ChrW$(432) & ChrW$(7901) & "i" & Space(1)
                                    Case 3 And S = 0 And NHOM <> Space(2) & "0"
                                        Dich = Hang(j) & Space(1)
                                    Case 3 And S = 5 And S2 <> Space(1) And S2 <> "0"
                                        Dich = "l" & Mid(Dich, 2)
                                    Case 2 And S = 0 And S3 <> "0"
                                    If S1 = 0 And S2 = 0 And S3 = 0 Or (S1 <> 0 And S2 = 0 And S3 <> 0) Then
                                       Dich = "l" & ChrW$(7867) & Space(1)
                                    Else
                                       If (S1 = 0 And S2 = 0 And S3 <> 0 And i = 4) Then
                                            Dich = Space(0)
                                        Else
                                            If (S1 >= 1 And S1 <= 9) Or S2 = 0 Then
                                                Dich = "kh" & ChrW$(244) & "ng "
                                            End If
                                        End If
                                    End If
                                End Select
                                Chu = Chu & Dich
                            Next j
                        End Select
                    Vitri = InStr(1, Chu, "m" & ChrW$(432) & ChrW$(417) & "i m" & ChrW$(7897) & "t", 1)
                    If Vitri > 0 Then Mid(Chu, Vitri, 9) = "m" & ChrW$(432) & ChrW$(417) & "i m" & ChrW$(7889) & "t"
                    Ketqua = Ketqua & Chu
                    End If
                Next i
            End If
        End If
        TIENLE = UCase(Left(Ketqua, 1)) & Mid(Ketqua, 2)
End Function
Chữ ký của Nguyen Hoang Diep Nguyen Hoang Diep,gia nhập Thủ Thuật Access từ 08-03 -16.
Reply
Những người đã cảm ơn jeck09nt , ledangvan , maidinhdan , Noname
#5
(15-09-16, 03:59 PM)Nguyen Hoang Diep Đã viết: Bạn thử code này xem sao nhé.

Function TIENLE(TienSo)

Dim Ketqua, SoTien, NHOM, Chu, Dich, S1, S2, S3 As String
Dim i, j, Vitri As Byte, S As Double
Dim Hang, Doc, Dem
If TienSo = 0 Then
    Ketqua = "Kh" & ChrW$(244) & "ng m" & ChrW$(233) & "t vu" & ChrW$(244) & "ng./."
Else
    If Abs(TienSo) >= 1E+15 Then
        Ketqua = "S" & ChrW$(7889) & " qu" & ChrW$(225) & " l" & ChrW$(7899) & "n - H" & ChrW$(224) & "m " & ChrW$(273) & ChrW$(7893) & "i s" & ChrW$(7889) & " ra ch" & ChrW$(7919) & " Vi" & ChrW$(7879) & "t Nam"
    Else
        If TienSo < 0 Then
            Ketqua = ChrW$(194) & "m" & Space(1)
        Else
            Ketqua = Space(0)
        End If
            SoTien = Format(Abs(TienSo), "##############0.00")
        SoTien = Right(Space(15) & SoTien, 18)
        Hang = Array("Kh" & ChrW$(244) & "ng", "tr" & ChrW$(259) & "m", "m" & ChrW$(432) & ChrW$(417) & "i", "g" & ChrW$(236) & " " & ChrW$(273) & "ã")
        Doc = Array("Kh" & ChrW$(244) & "ng", "ng" & ChrW$(224) & "n t" & ChrW$(272), "t" & ChrW$(7927), "tri" & ChrW$(7879) & "u", "ng" & ChrW$(224) & "n", "ph" & ChrW$(7849) & "y", ChrW$(273) & ChrW$(7891) & "ng")   'ChrW$(273) & ChrW$(7891) & "ng"
        Dem = Array("Kh" & ChrW$(244) & "ng", "m" & ChrW$(7897) & "t", "hai", "ba", "b" & ChrW$(7889) & "n", "n" & ChrW$(259) & "m", "s" & ChrW$(225) & "u", "b" & ChrW$(7843) & "y", "t" & ChrW$(225) & "m", "ch" & ChrW$(237) & "n")
        For i = 1 To 6
            NHOM = Mid(SoTien, i * 3 - 2, 3)
            If NHOM <> Space(3) Then
                Select Case NHOM
                    Case "000"
                        If i = 5 Then
                             Chu = "ph" & ChrW$(7849) & "y" & Space(1)    ''ChrW$(273) & ChrW$(7891) & "ng" & Space(1)
                        Else
                            Chu = Space(0)
                        End If
                    Case ".00"
                          Chu = "kh" & ChrW$(244) & "ng kh" & ChrW$(244) & "ng" & ChrW$(273) & ChrW$(7891) & "ng" ''ChrW$(233) & "t vu" & ChrW$(244) & "ng./."
                    Case ",00"
                          Chu = "kh" & ChrW$(244) & "ng kh" & ChrW$(244) & "ng" & ChrW$(273) & ChrW$(7891) & "ng" ''ChrW$(233) & "t vu" & ChrW$(244) & "ng./."
                    Case Else
                             Chu = ""
                        S1 = Left(NHOM, 1)
                        S2 = Mid(NHOM, 2, 1)
                        S3 = Right(NHOM, 1)
                        Chu = Space(0)
                        Hang(3) = Doc(i)
                        For j = 1 To 3
                            Dich = Space(0)
                            S = Val(Mid(NHOM, j, 1))
                                If S > 0 Then
                                    Dich = Dem(S) & Space(1) & Hang(j) & Space(1)
                                End If
                                Select Case j
                                    Case 1 And S = 0 And S2 = 0 And S3 <> 0
                                    If (S1 = 0 And S2 = 0 And i = 2 Or S1 = 0 And S2 = 0 And i = 3 Or S1 = 0 And S2 = 0 And i = 4 Or S1 = 0 And S2 = 0 And i = 5) Then
                                        Dich = "kh" & ChrW$(244) & "ng tr" & ChrW$(259) & "m l" & ChrW$(7867) & Space(1)
                                    End If
                                    
                                    Case 1 And S = 0 And S2 <> 0 And S3 <> 0
                                    If S1 = 0 And (i = 2 Or i = 3 Or i = 4 Or i = 5 Or i = 6) Then
                                        Dich = "kh" & ChrW$(244) & "ng tr" & ChrW$(259) & "m "
                                    End If
                                    Case 1 And S = 0 And S2 <> 0 And S3 = 0
                                    If S1 = 0 And (i = 2 Or i = 3 Or i = 4 Or i = 5 Or i = 6) Then
                                        Dich = "kh" & ChrW$(244) & "ng tr" & ChrW$(259) & "m "
                                    End If
                                   Case 1 And S1 = 0 And S2 = 0 And S3 = 0
                                    If (i = 4 And S1 = 0 And S2 = 0 And S3 = 0) Then
                                       Dich = "kh" & ChrW$(244) & "ng tr" & ChrW$(259) & "m ph" & ChrW$(7849) & "y"
                                    End If
                                    Case 2 And S = 1
                                        Dich = "m" & ChrW$(432) & ChrW$(7901) & "i" & Space(1)
                                    Case 3 And S = 0 And NHOM <> Space(2) & "0"
                                        Dich = Hang(j) & Space(1)
                                    Case 3 And S = 5 And S2 <> Space(1) And S2 <> "0"
                                        Dich = "l" & Mid(Dich, 2)
                                    Case 2 And S = 0 And S3 <> "0"
                                    If S1 = 0 And S2 = 0 And S3 = 0 Or (S1 <> 0 And S2 = 0 And S3 <> 0) Then
                                       Dich = "l" & ChrW$(7867) & Space(1)
                                    Else
                                       If (S1 = 0 And S2 = 0 And S3 <> 0 And i = 4) Then
                                            Dich = Space(0)
                                        Else
                                            If (S1 >= 1 And S1 <= 9) Or S2 = 0 Then
                                                Dich = "kh" & ChrW$(244) & "ng "
                                            End If
                                        End If
                                    End If
                                End Select
                                Chu = Chu & Dich
                            Next j
                        End Select
                    Vitri = InStr(1, Chu, "m" & ChrW$(432) & ChrW$(417) & "i m" & ChrW$(7897) & "t", 1)
                    If Vitri > 0 Then Mid(Chu, Vitri, 9) = "m" & ChrW$(432) & ChrW$(417) & "i m" & ChrW$(7889) & "t"
                    Ketqua = Ketqua & Chu
                    End If
                Next i
            End If
        End If
        TIENLE = UCase(Left(Ketqua, 1)) & Mid(Ketqua, 2)
End Function

Cảm ơn Nguyen Hoang Diep
[url=http://thuthuataccess.com/forum/user-17579.html][/url]Tuy nhiên kết quả dịch ra chưa được theo ý muốn, ví dụ : 12800,4 kết quả dịch ra là : Mười hai nghìn tám trăm phẩy bốn mươi đồng.

Mình muốn kết quả dịch là : Mười hai nghìn, tám trăm phẩy bốn đồng. (Tách dấu phẩy và phần sau dấu phẩy thể hiện là phẩy bốn chứ không phải phẩy bốn mươi)

Rất mong bạn trợ giúp
Chữ ký của ledangvan Xin chào, mình là ledangvan, Tham gia http://thuthuataccess.com/forum từ ngày 22-08 -11.
ღღღღღTài sản của ledangvan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#6
(16-09-16, 10:05 AM)ledangvan Đã viết: Cảm ơn Nguyen Hoang Diep
Tuy nhiên kết quả dịch ra chưa được theo ý muốn, ví dụ : 12800,4 kết quả dịch ra là : Mười hai nghìn tám trăm phẩy bốn mươi đồng.

Mình muốn kết quả dịch là : Mười hai nghìn, tám trăm phẩy bốn đồng. (Tách dấu phẩy và phần sau dấu phẩy thể hiện là phẩy bốn chứ không phải phẩy bốn mươi)

Rất mong bạn trợ giúp

Xin tham gia 1 bài:

Gửi anh Code này:


Mã PHP:
Public Function Docso2(Number As Double)
    Dim MyArray
    Dim Str 
As String
    
If Number >= 1E+18 Then Docso2 "#NUM!": Exit Function
    Str Format(Fix(Abs(Number)), "000000000000000000")
    MyArray = Array("không ""m" ChrW(7897) & "t ""hai ""ba ""b" ChrW(7889) & "n ""n" ChrW(259) & "m ""sáu ""b" ChrW(7843) & "y ""tám ""chín ""tri" ChrW(7879) & "u, ""ngàn, ""t" ChrW(7927) & ", ""tri" ChrW(7879) & "u, ""ngàn, """"tr" ChrW(259) & "m ""m" ChrW(432) & ChrW(417) & "i ""không " "m" ChrW(432) & ChrW(417) & "i" " không ""không " "m" ChrW(432) & ChrW(417) & "i""l" ChrW(7867), "m" ChrW(432) & ChrW(417) & "i" " không""m" ChrW(432) & ChrW(417) & "i""m" ChrW(432) & ChrW(417) & "i" " n" ChrW(259) & "m""m" ChrW(432) & ChrW(417) & "i" " l" ChrW(259) & "m""m" ChrW(7897) & "t " "m" ChrW(432) & ChrW(417) & "i""m" ChrW(432) & ChrW(7901) & "i""m" ChrW(432) & ChrW(417) & "i" " m" ChrW(7897) & "t""m" ChrW(432) & ChrW(417) & "i" " m" ChrW(7889) & "t""Âm "ChrW(273) & ChrW(7891) & "ng "" ph" ChrW(7849) & "y ""xu ")
    For 1 To Len(Str)
        If Left(Stri) <> And Mid(Str, (Int((2) / 3) - 1) * 13) <> 0 Then
            Docso2 
Docso2 MyArray(Mid(Stri1)) & MyArray(-(3) * (i Mod 3 0) - (15 i Mod 3) * (i Mod 3 <> 0))
        ElseIf And Mid(Str73) = And Left(Str6) <> 0 Then
            Docso2 
Docso2 MyArray(12)
        End If
    Next
    Docso2 
IIf(Number 0MyArray(0) & MyArray(30), "") & IIf(Fix(Number) <> 0Docso2 MyArray(30), "") & IIf(Fix(Number) <> And Fix(Number) <> NumberMyArray(31), "") & IIf(Fix(Number) <> NumberIIf(Abs(Number Fix(Number)) < 0.1""MyArray(Left(Right(Format(Abs(Number), "#.00"), 2), 1)) & MyArray(17)) & MyArray(Right(Format(Number"#.00"), 1)) & MyArray(32), "")
    Docso2 Replace(Trim(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Docso2MyArray(18), MyArray(15)), MyArray(19), MyArray(20)), MyArray(21), MyArray(22)), MyArray(23), MyArray(24)), MyArray(25), MyArray(26)), MyArray(27), MyArray(28)), ", " MyArray(30), " " MyArray(30))), MyArray(30) & MyArray(31), Split(MyArray(30), " ")(0) & " " MyArray(31))
    If Number 0 Then Docso2 MyArray(29) & Docso2
    Docso2 
UCase(Left(Docso21)) & Mid(Docso22) & "."
End Function 

Ví dụ:
+ 100,000,500.25  :  Một trăm triệu, năm trăm đồng  phẩy hai mươi lăm xu.
+   10,250,000.51  :   Mười triệu, hai trăm năm mươi ngàn đồng  phẩy năm mươi mốt xu.
+          10,500.20  :   Mười ngàn, năm trăm đồng  phẩy hai mươi xu. ( Trường hợp .20 Xu không muốn hiện chữ " hai mươi xu" thì thay đoạn cuối cùng Mid(Docso2, 2) = > Mid(Docso2, 1) nhưng phải chèn thêm hàm if cho tương xứng khi bắt điều kiện

Chú ý dòng: MyArray = Array...  ( Mãng MyArray có tất cả 31 phần tử. thứ tự thì anh tự tùy biến dựa vào 31 phần tử này), Theo mình với đoạn code này nên thay phần tử thứ 30 (" ph" & ChrW(7849) & "y ") thành chữ "và " là hay nhất. Và nó sẽ cho kết quả như sau:

+ 1,005,000.13 : Một triệu, không trăm lẻ năm ngàn đồng mười ba xu.
+      12,800.40  : Mười hai ngàn, tám trăm đồng  bốn mươi xu.


Thân mến!
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn ledangvan , Noname , jeck09nt , vuthaiha90 , Minh Tiên
#7
Các bác có thể demo cho em bản ứng dụng đọc mét vuông thập phân được không ạ. VD: 12,5 Mười hai phẩy năm mét vuông 13: Mười ba mét vuông
Chữ ký của vuthaiha90 vuthaiha90,gia nhập Thủ Thuật Access từ 26-02 -16.
Reply
Những người đã cảm ơn
#8
Bạn thử xem nhé.
http://www.mediafire.com/download/7q2s8b...enDT.accdb
Chữ ký của Nguyen Hoang Diep Nguyen Hoang Diep,gia nhập Thủ Thuật Access từ 08-03 -16.
Reply
Những người đã cảm ơn Noname , maidinhdan , vuthaiha90 , jeck09nt
#9
(19-09-16, 02:44 PM)Nguyen Hoang Diep Đã viết: Bạn thử xem nhé.
http://www.mediafire.com/download/7q2s8b...enDT.accdb

Em cảm ơn bác, để em kéo về ứng dụng vào chương trình của em
Chữ ký của vuthaiha90 vuthaiha90,gia nhập Thủ Thuật Access từ 26-02 -16.
Reply
Những người đã cảm ơn
#10
(19-09-16, 06:01 PM)vuthaiha90 Đã viết:
(19-09-16, 02:44 PM)Nguyen Hoang Diep Đã viết: Bạn thử xem nhé.
http://www.mediafire.com/download/7q2s8b...enDT.accdb

Em cảm ơn bác, để em kéo về ứng dụng vào chương trình của em

Chào Hoàng Diệp
Sao minh mở report không được, báo lỗi Parameter Value
Bạn xem lại giúp nhé ! hoặc cho đọc số trên Form luôn ah.
Chữ ký của jeck09nt Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Viết phần quyền sử dụng tt1212 9 491 01-10-16, 12:26 AM
Bài mới nhất: maidinhdan
  Xin giúp đỡ về VBA Access ! vocan 12 662 11-07-16, 10:45 PM
Bài mới nhất: ongke0711
Photo [Thủ Thuật] Phần mềm Kiểm phiếu bầu cử đại biểu Quốc hội và HĐND các cấp trav2t 16 2,727 21-06-16, 03:37 PM
Bài mới nhất: tienpq
  Phân tích code thanhquyt 3 326 22-01-16, 12:05 AM
Bài mới nhất: thanhquyt
  [Thủ Thuật] Giúp em tính tồn cuối khi có thêm dữ liệu trả lại dao cụ thaoxinh 2 260 07-01-16, 05:16 PM
Bài mới nhất: ongke0711

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ