PDA

View Full Version : Hỏi về dấu chấm, phẩy trong SQL Server 2000 ?



longhovn
19-03-2011, 16:35
Mình diễn tả như sau:

1. Máy tính cài hệ điều hành Windows XP, Service pack 2
1.1 Regional options: English (United Kingdom)
1.2 Decimal symbol: Dấu chấm
1.3 Digit group symbol: Dấu phẩy
2. Cơ sở dữ liệu SQL Server 2000
3. Hàm tính giá bán dbo.fGiaBan([Mã hàng], [Tỷ lệ])
Ghi chú: [Tỷ lệ] kiểu numeric(15, 2)
4. Dùng Query Analyzer để thực hiện câu lệnh
select * from dbo.fGiaBan([AL0001], 10/3)
==> Câu lệnh cho kết quả đúng

Bây giờ thay đổi như sau (Sửa 1.2 và 1.3)
1.2 Decimal symbol: Dấu phẩy
1.3 Digit group symbol: Dấu chấm
Run lại câu lệnh select * from dbo.fGiaBan([AL0001], 10/3)
nó báo quá nhiều đối số.

Xin hỏi các bạn và mong sự giúp đỡ
Làm cách nào để khi thay đổi qua lại Regional options như trên hàm fGiaBan( , ) vẫn chạy.

(Điều kiện là không thay đổi số lượng tham số của hàm fGiaBan)

chip07
22-03-2011, 11:04
- bạn hỏi về lỗi thì ít nhất cũng nên đưa code cùa hàm fGiaBan() của bạn ra.

- vì sao phải thay đổi Regional, vấn đề bạn gặp phải là gì? Không còn cách nào khác ngoài việc thay đổi hệ thống ah?

longhovn
22-03-2011, 11:21
- Hàm fGiaBan() lỗi sau khi sửa Regional là lỗi tham số truyền vào chứ không phải lỗi nội dung hàm bạn ah.

- Còn vì sao phải thay đổi Regional, vấn đề bạn gặp phải là gì? Không còn cách nào khác ngoài việc thay đổi hệ thống ah?
Theo thông tư 153 quy định thì:
=> 123.456,78 Đọc là:
Một trăm hai mươi ba nghìn bốn trăm năm mươi sáu lẻ bảy mươi tám đồng.

=> Còn 123,456.78 là trái với quy định.

chip07
22-03-2011, 11:56
Mình thường hạn chế thay đổi vào hệ thống như vậy.
Mình vẫn làm bình thường trên SQL vậy thôi.
Còn trên client, dấu '.', dấu ',' có thể được quy định lại theo yêu cầu người dùng.
Cả khi bạn làm report để in, các ch.tr làm report cũng hỗ trợ định dạng dữ liệu để in ra mà.