1. Trang chủ
  2. » Công Nghệ Thông Tin

Cách đọc số tiền trên CrystalReport với lập trình C# ppt

13 2,1K 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 238 KB

Nội dung

Cách đọc số tiền trên CrystalReport với lập trình C#Chào các bác!. E có 1 cái hóa đơn thu học phí sinh viên trong đó hiển thị 1 trường là số tiền.. Việc load dữ liệu lên crystal e dùng d

Trang 1

Cách đọc số tiền trên CrystalReport với lập trình C#

Chào các bác!

E có 1 cái hóa đơn thu học phí sinh viên trong đó hiển thị 1 trường là số tiền Việc load dữ liệu lên crystal e dùng dataset, vậy làm thế nào để báo cáo có thể hiển thị số tiền bằng chữ đc ạ? Ví dụ: 1.200.000 VND thì nó sẽ hiển thị là Một triệu hai trăm ngàn đồng Em đang mò mẫm chỗ này mãi mà ko đc.Mong các bác chỉ bảo tận tình

ạ E cảm ơn nhiều

KHÔNG CÓ CHỮ KÝ

#2

19-01-2011, 11:13 PM

timkiemviet.vn

Thành viên mới

Ngày gia nhập: 05 2010 Bài viết: 21

đây là cái bạn cần

Code:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace Ham_doi_so_thanh_chu

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

public static string str = " ";

public static string ToString(decimal number)

{

string s = number.ToString("#");

string[] so = new string[] { "không", "một", "hai", "ba",

"bốn", "năm", "sáu", "bảy", "tám", "chín" };

string[] hang = new string[] { "", "nghìn", "triệu",

"tỷ" };

int i, j, donvi, chuc, tram;

Trang 2

bool booAm = false;

decimal decS = 0;

//Tung addnew

try

{

decS = Convert.ToDecimal(s.ToString());

}

catch

{

}

if (decS < 0)

{

decS = -decS;

s = decS.ToString();

booAm = true;

}

i = s.Length;

if (i == 0)

str = so[0] + str;

else

{

j = 0;

while (i > 0)

{

donvi = Convert.ToInt32(s.Substring(i - 1, 1)); i ;

if (i > 0)

chuc = Convert.ToInt32(s.Substring(i - 1, 1)); else

chuc = -1;

i ;

if (i > 0)

tram = Convert.ToInt32(s.Substring(i - 1, 1)); else

tram = -1;

i ;

if ((donvi > 0) || (chuc > 0) || (tram > 0) || (j

== 3))

str = hang[j] + str;

j++;

if (j > 3) j = 1;

if ((donvi == 1) && (chuc > 1))

str = "một " + str;

else

{

if ((donvi == 5) && (chuc > 0))

str = "lăm " + str;

else if (donvi > 0)

str = so[donvi] + " " + str;

}

if (chuc < 0)

break;

else

{

Trang 3

if ((chuc == 0) && (donvi > 0)) str = "lẻ " + str;

if (chuc == 1) str = "mười " + str;

if (chuc > 1) str = so[chuc] + " mươi " + str; }

if (tram < 0) break;

else

{

if ((tram > 0) || (chuc > 0) || (donvi > 0)) str = so[tram] + " trăm " + str;

}

str = " " + str;

}

}

if (booAm) str = "Âm " + str;

return str;// = str+ "đồng chẵn";

}

private void button1_Click(object sender, EventArgs e)

{

//textBox2.Text = ToString(decimal.Parse(textBox1.Text)); textBox2.Text = DocTienBangChu(long.Parse(textBox1.Text)," Đồng");

}

private string[] ChuSo = new string[10] { " không", " một", " hai", " ba", " bốn", " năm", " sáu", " bẩy", " tám", " chín" };

private string[] Tien = new string[6] { "", " nghìn", " triệu",

" tỷ", " nghìn tỷ", " triệu tỷ" };

// Hàm đọc số thành chữ

public string DocTienBangChu(long SoTien, string strTail)

{

int lan, i;

long so;

string KetQua = "", tmp = "";

int[] ViTri = new int[6];

if (SoTien < 0) return "Số tiền âm !";

if (SoTien == 0) return "Không đồng !";

if (SoTien > 0)

{

so = SoTien;

}

else

{

so = -SoTien;

}

//Kiểm tra số quá lớn

if (SoTien > 8999999999999999)

{

SoTien = 0;

return "";

}

Trang 4

ViTri[5] = (int)(so / 1000000000000000);

so = so - long.Parse(ViTri[5].ToString()) *

1000000000000000;

ViTri[4] = (int)(so / 1000000000000);

so = so - long.Parse(ViTri[4].ToString()) * +1000000000000; ViTri[3] = (int)(so / 1000000000);

so = so - long.Parse(ViTri[3].ToString()) * 1000000000; ViTri[2] = (int)(so / 1000000);

ViTri[1] = (int)((so % 1000000) / 1000);

ViTri[0] = (int)(so % 1000);

if (ViTri[5] > 0)

{

lan = 5;

}

else if (ViTri[4] > 0)

{

lan = 4;

}

else if (ViTri[3] > 0)

{

lan = 3;

}

else if (ViTri[2] > 0)

{

lan = 2;

}

else if (ViTri[1] > 0)

{

lan = 1;

}

else

{

lan = 0;

}

for (i = lan; i >= 0; i )

{

tmp = DocSo3ChuSo(ViTri[i]);

KetQua += tmp;

if (ViTri[i] != 0) KetQua += Tien[i];

if ((i > 0) && (!string.IsNullOrEmpty(tmp))) KetQua +=

",";//&& (!string.IsNullOrEmpty(tmp))

}

if (KetQua.Substring(KetQua.Length - 1, 1) == ",") KetQua = KetQua.Substring(0, KetQua.Length - 1);

KetQua = KetQua.Trim() + strTail;

return KetQua.Substring(0, 1).ToUpper() +

KetQua.Substring(1);

}

// Hàm đọc số có 3 chữ số

private string DocSo3ChuSo(int baso)

{

int tram, chuc, donvi;

string KetQua = "";

tram = (int)(baso / 100);

Trang 5

chuc = (int)((baso % 100) / 10);

donvi = baso % 10;

if ((tram == 0) && (chuc == 0) && (donvi == 0)) return "";

if (tram != 0)

{

KetQua += ChuSo[tram] + " trăm";

if ((chuc == 0) && (donvi != 0)) KetQua += " linh"; }

if ((chuc != 0) && (chuc != 1))

{

KetQua += ChuSo[chuc] + " mươi";

if ((chuc == 0) && (donvi != 0)) KetQua = KetQua + " linh";

}

if (chuc == 1) KetQua += " mười";

switch (donvi)

{

case 1:

if ((chuc != 0) && (chuc != 1))

{

KetQua += " mốt";

}

else

{

KetQua += ChuSo[donvi];

}

break;

case 5:

if (chuc == 0)

{

KetQua += ChuSo[donvi];

}

else

{

KetQua += " lăm";

}

break;

default:

if (donvi != 0)

{

KetQua += ChuSo[donvi];

}

break;

}

return KetQua;

}

}

}

#3

19-01-2011, 11:19 PM

Trang 6

Thành viên chính thức

Ngày gia nhập: 11 2010 Bài viết: 57

Cho mình hỏi câu này hơi gà mờ chút là đây là viết cho form, vậy để dùng đc cho CrystalReport sử dụng dataset thì m phải làm thế nào?Rất cám ơn bạn đã quan tâm đến câu hỏi của m

KHÔNG CÓ CHỮ KÝ

#4

19-01-2011, 11:23 PM

timkiemviet.vn

Thành viên mới

Ngày gia nhập: 05 2010 Bài viết: 21

uh trên form đó bạn , bạn chuyền được giá trị quá crystalreport thì bạn chuyền chữ qua i vậy

#5

19-01-2011, 11:37 PM

vgc0001

Thành viên chính thức

Ngày gia nhập: 11 2010 Bài viết: 57

M đã xem lại cái form load lên report của m M nhầm với form khác.form này ko sử dụng dataset mà sử dụng theo kiểu click vào 1 dòng dữ liệu, các dữ liệu trên

datagridview sẽ load lên các combo và textbox sau đó truyền qua CrystalReport như thế này

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

Trang 7

using System.Windows.Forms;

using System.Collections;

namespace WindowsFormsApplication3

{

public partial class frmHoaDonHP : Form

{

public frmQLHocPhi fParent;

public ArrayList data = new ArrayList();

public frmHoaDonHP()

{

InitializeComponent();

}

private void LoadReport()//object sender, EventArgs e

{

CrystalDecisions.CrystalReports.Engine.TextObject

T = (CrystalDecisions.CrystalReports.Engine.TextObject )

this.PhieuThu.ReportDefinition.Sections[0].ReportObjects["MaHoaDon"]; T.Text = data.ToArray()[0].ToString() ;

T = (CrystalDecisions.CrystalReports.Engine.TextObject )

this.PhieuThu.ReportDefinition.Sections[0].ReportObjects["MaKhoaHoc"]; T.Text = data.ToArray()[1].ToString();

T = (CrystalDecisions.CrystalReports.Engine.TextObject )

this.PhieuThu.ReportDefinition.Sections[0].ReportObjects["MaLop"]; T.Text = data.ToArray()[2].ToString();

T = (CrystalDecisions.CrystalReports.Engine.TextObject )

this.PhieuThu.ReportDefinition.Sections[0].ReportObjects["MaSv"]; T.Text = data.ToArray()[3].ToString();

T = (CrystalDecisions.CrystalReports.Engine.TextObject )

this.PhieuThu.ReportDefinition.Sections[0].ReportObjects["HoTenSv"]; T.Text = data.ToArray()[4].ToString();

T = (CrystalDecisions.CrystalReports.Engine.TextObject )

this.PhieuThu.ReportDefinition.Sections[0].ReportObjects["MaHP"]; T.Text = data.ToArray()[5].ToString();

T = (CrystalDecisions.CrystalReports.Engine.TextObject )

this.PhieuThu.ReportDefinition.Sections[0].ReportObjects["TongHocPhi"]; T.Text = data.ToArray()[6].ToString();

}

private void frmHoaDonHP_Load(object sender, EventArgs e)

{

LoadReport();

}

}

Trang 8

đây là sự kiện dataGridview_CellClick

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) {

if (dataGridView1.SelectedRows.Count > 0)

{

list.Clear();

txtMaHoaDon.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString(); list.Add(txtMaHoaDon.Text);

cbbMaKhoa.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();

list.Add(cbbMaKhoa.Text);

cbbMaLop.Text = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();

list.Add(cbbMaLop.Text);

cbbMaSv.Text = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();

list.Add(cbbMaSv.Text);

txtTenSv.Text = dataGridView1.SelectedRows[0].Cells[4].Value.ToString();

list.Add(txtTenSv.Text);

cbbMaHocPhan.Text = dataGridView1.SelectedRows[0].Cells[5].Value.ToString(); list.Add(cbbMaHocPhan.Text);

txtTongtien.Text = dataGridView1.SelectedRows[0].Cells[6].Value.ToString(); list.Add(txtTongtien.Text);

}

}

KHÔNG CÓ CHỮ KÝ

#6

20-01-2011, 07:41 AM

hoanghuynh2409

Thành viên nhiệt tình

Ngày gia nhập: 06 2010 Bài viết: 256

Trích dẫn:

Nguyên bản được gửi bởi timkiemviet.vn

đây là cái bạn cần

Code:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

Trang 9

using System.Text;

using System.Windows.Forms;

namespace Ham_doi_so_thanh_chu

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

public static string str = " ";

public static string ToString(decimal number)

{

string s = number.ToString("#");

string[] so = new string[] { "không", "một", "hai", "ba",

"bốn", "năm", "sáu", "bảy", "tám", "chín" };

string[] hang = new string[] { "", "nghìn", "triệu", "tỷ" };

int i, j, donvi, chuc, tram;

bool booAm = false;

decimal decS = 0;

//Tung addnew

try

{

decS = Convert.ToDecimal(s.ToString());

}

catch

{

}

if (decS < 0)

{

decS = -decS;

s = decS.ToString();

booAm = true;

}

i = s.Length;

if (i == 0)

str = so[0] + str;

else

{

j = 0;

while (i > 0)

{

donvi = Convert.ToInt32(s.Substring(i - 1, 1)); i ;

if (i > 0)

chuc = Convert.ToInt32(s.Substring(i - 1, 1));

else

chuc = -1;

i ;

Trang 10

if (i > 0)

tram = Convert.ToInt32(s.Substring(i - 1, 1));

else

tram = -1;

i ;

if ((donvi > 0) || (chuc > 0) || (tram > 0) || (j

== 3))

str = hang[j] + str;

j++;

if (j > 3) j = 1;

if ((donvi == 1) && (chuc > 1))

str = "một " + str;

else

{

if ((donvi == 5) && (chuc > 0))

str = "lăm " + str;

else if (donvi > 0)

str = so[donvi] + " " + str;

}

if (chuc < 0)

break;

else

{

if ((chuc == 0) && (donvi > 0)) str = "lẻ " + str;

if (chuc == 1) str = "mười " + str;

if (chuc > 1) str = so[chuc] + " mươi " + str;

}

if (tram < 0) break;

else

{

if ((tram > 0) || (chuc > 0) || (donvi > 0)) str = so[tram] + " trăm " + str;

}

str = " " + str;

}

}

if (booAm) str = "Âm " + str;

return str;// = str+ "đồng chẵn";

}

private void button1_Click(object sender, EventArgs e)

{

//textBox2.Text = ToString(decimal.Parse(textBox1.Text)); textBox2.Text =

DocTienBangChu(long.Parse(textBox1.Text)," Đồng");

}

private string[] ChuSo = new string[10] { " không", " một", "

Trang 11

hai", " ba", " bốn", " năm", " sáu", " bẩy", " tám", " chín" }; private string[] Tien = new string[6] { "", " nghìn", " triệu", " tỷ", " nghìn tỷ", " triệu tỷ" };

// Hàm đọc số thành chữ

public string DocTienBangChu(long SoTien, string strTail) {

int lan, i;

long so;

string KetQua = "", tmp = "";

int[] ViTri = new int[6];

if (SoTien < 0) return "Số tiền âm !";

if (SoTien == 0) return "Không đồng !";

if (SoTien > 0)

{

so = SoTien;

}

else

{

so = -SoTien;

}

//Kiểm tra số quá lớn

if (SoTien > 8999999999999999)

{

SoTien = 0;

return "";

}

ViTri[5] = (int)(so / 1000000000000000);

so = so - long.Parse(ViTri[5].ToString()) *

1000000000000000;

ViTri[4] = (int)(so / 1000000000000);

so = so - long.Parse(ViTri[4].ToString()) *

+1000000000000;

ViTri[3] = (int)(so / 1000000000);

so = so - long.Parse(ViTri[3].ToString()) * 1000000000; ViTri[2] = (int)(so / 1000000);

ViTri[1] = (int)((so % 1000000) / 1000);

ViTri[0] = (int)(so % 1000);

if (ViTri[5] > 0)

{

lan = 5;

}

else if (ViTri[4] > 0)

{

lan = 4;

}

else if (ViTri[3] > 0)

{

lan = 3;

}

else if (ViTri[2] > 0)

{

lan = 2;

}

Trang 12

else if (ViTri[1] > 0)

{

lan = 1;

}

else

{

lan = 0;

}

for (i = lan; i >= 0; i )

{

tmp = DocSo3ChuSo(ViTri[i]);

KetQua += tmp;

if (ViTri[i] != 0) KetQua += Tien[i];

if ((i > 0) && (!string.IsNullOrEmpty(tmp))) KetQua += ",";//&& (!string.IsNullOrEmpty(tmp))

}

if (KetQua.Substring(KetQua.Length - 1, 1) == ",") KetQua

= KetQua.Substring(0, KetQua.Length - 1);

KetQua = KetQua.Trim() + strTail;

return KetQua.Substring(0, 1).ToUpper() +

KetQua.Substring(1);

}

// Hàm đọc số có 3 chữ số

private string DocSo3ChuSo(int baso)

{

int tram, chuc, donvi;

string KetQua = "";

tram = (int)(baso / 100);

chuc = (int)((baso % 100) / 10);

donvi = baso % 10;

if ((tram == 0) && (chuc == 0) && (donvi == 0)) return

"";

if (tram != 0)

{

KetQua += ChuSo[tram] + " trăm";

if ((chuc == 0) && (donvi != 0)) KetQua += " linh"; }

if ((chuc != 0) && (chuc != 1))

{

KetQua += ChuSo[chuc] + " mươi";

if ((chuc == 0) && (donvi != 0)) KetQua = KetQua + " linh";

}

if (chuc == 1) KetQua += " mười";

switch (donvi)

{

case 1:

if ((chuc != 0) && (chuc != 1))

{

KetQua += " mốt";

}

else

{

Ngày đăng: 08/08/2014, 20:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w