Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 182 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
182
Dung lượng
10,38 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ NÔNG NGHIỆP VÀ PTNT TRƯỜNG ĐẠI HỌC THUỶ LỢI NGUYỄN THỊ THU HƯƠNG NGHIÊN CỨU GIẢI PHÁP NÂNG CAO ĐỘ BỀN CHO BÊ TÔNG - BÊ TÔNG CỐT THÉP CỦA KẾT CẤU BẢO VỆ MÁI ĐÊ VÀ BỜ BIỂN VIỆT NAM LUẬN ÁN TIẾN SĨ KỸ THUẬT HÀ NỘI - 2016 BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ NÔNG NGHIỆP VÀ PTNT TRƯỜNG ĐẠI HỌC THỦY LỢI NGUYỄN THỊ THU HƯƠNG NGHIÊN CỨU GIẢI PHÁP NÂNG CAO ĐỘ BỀN CHO BÊ TÔNG - BÊ TÔNG CỐT THÉP CỦA KẾT CẤU BẢO VỆ MÁI ĐÊ VÀ BỜ BIỂN VIỆT NAM Chuyên ngành: Xây dựng Công trình thuỷ Mã số: 62 – 58 – 40 – 01 Người hướng dẫn khoa học: PGS.TS Vũ Quốc Vương GS.TS Ngô Trí Viềng HÀ NỘI - 2016 LỜI CAM ĐOAN Tác giả xin cam đoan công trình nghiên cứu thân tác giả Các kết nghiên cứu kết luận luận văn trung thực, không chép từ nguồn hình thức nào.Việc tham khảo nguồn tài liệu (nếu có) thực trích dẫn ghi nguồn tài liệu tham khảo quy định Tác giả luận án Nguyễn Thị Thu Hương i LỜI CẢM ƠN Tác giả xin bày tỏ lòng biết ơn sâu sắc đến GS.TS Ngô Trí Viềng PGS.TS Vũ Quốc Vương hai thầy hướng dẫn trực tiếp tác giả thực luận án Xin cảm ơn hai thầy dành nhiều công sức, trí tuệ hỗ trợ tài thời gian tác giả thực luận án Tác giả xin trân trọng cám ơn nhà khoa học trường có đóng góp quí báu, chân tình thẳng thắn để tác giả hoàn thiện luận án Tác giả xin bày tỏ lòng biết ơn đến chương trình NCKHCN phục vụ phòng chống thiên tai bảo vệ môi trường sử dụng hợp lý tài nguyên thiên nhiên (KC08) Bộ KHCN đầu tư kinh phí cho tác giả thực thí nghiệm luận án Tác giả xin bày tỏ lòng biết ơn đến Trường Đại học Thủy lợi, Phòng Vật liệu vô – Viện Khoa học Vật liệu–Viện Hàn lâm khoa học công nghệ Việt Nam, Phòng nghiên cứu Vật liệu – Viện Khoa học Thủy lợi Việt Nam, Viện Vật liệu xây dựng Việt Nam tạo điều kiện sở vật chất cho thí nghiệm nghiên cứu tác giả Tác giả trân trọng cám ơn Vụ Đại học Sau Đại học – Bộ Giáo dục Đào tạo, Bộ môn Thủy công, Phòng Đào tạo Đại học sau Đại học – Trường Đại học Thủy lợi, Cục sở hữu trí tuệ - Bộ Khoa học Công nghệ có giúp đỡ quí báu cho tác giả trình thực nghiên cứu Tác giả xin bày tỏ lòng biết ơn đến đồng nghiệp tác giả Bộ môn Vật liệu xây dựng không quản khó khăn, vất vả tác giả tiến hành thí nghiệm phòng, thí nghiệm trường, gánh vác công việc để tác giả có thời gian hoàn thành luận án Cuối cùng, tác giả xin chân thành cám ơn bạn bè, đồng nghiệp gia đình động viên, khích lệ để tác giả hoàn thành luận án nghiên cứu Tác giả Nguyễn Thị Thu Hương ii MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN .ii MỤC LỤC iii DANH MỤC CÁC HÌNH vii DANH MỤC CÁC BẢNG xi DANH MỤC CÁC KÝ HIỆU VIẾT TẮT xii MỞ ĐẦU 1 Tính cấp thiết đề tài Mục đích nghiên cứu Đối tượng phạm vi nghiên cứu Phương pháp tiếp cận nghiên cứu .2 Ý nghĩa khoa học thực tiễn đề tài .3 Những đóng góp luận án CHƯƠNG TỔNG QUAN VỀ KẾT CẤU BẢO VỆ MÁI ĐÊ VÀ BỜ BIỂN BẰNG BÊ TÔNG - BÊ TÔNG CỐT THÉP 1.1 Hiện trạng nguyên nhân hư hỏng kết cấu bảo vệ mái đê bờ biển BT-BTCT 1.1.1 Khái quát dạng kết cấu bảo vệ mái đê bờ biển 1.1.2 Hiện trạng hư hỏng 11 1.1.3 Nguyên nhân hư hỏng .15 1.2 Tình hình nghiên cứu giải pháp nâng cao độ bền cho BT-BTCT làm việc môi trường biển 24 1.2.1 Các nghiên cứu giới .24 1.2.2 Các nghiên cứu Việt Nam 26 1.2.3 Phân tích, đánh giá kết nghiên cứu công bố 28 1.2.4 Định hướng nghiên cứu luận án 29 1.3 Cơ sở khoa học lựa chọn giải pháp nâng cao độ bền cho BT-BTCT kết cấu bảo vệ mái đê bờ biển điều kiện Việt Nam 30 1.3.1 Các giải pháp nâng cao độ bền cho BT-BTCT công trình biển 31 1.3.2 Phân tích lựa chọn giải pháp thích hợp cho BT-BTCT kết cấu bảo vệ mái đê bờ biển 33 iii 1.3.3 1.4 Phân tích lựa chọn tổ hợp phụ gia 34 Kết luận chương 38 CHƯƠNG 2.1 VẬT LIỆU VÀ PHƯƠNG PHÁP NGHIÊN CỨU 40 Vật liệu sử dụng nghiên cứu 40 2.1.1 Xi măng .40 2.1.2 Tro bay 41 2.1.3 Silica fume .41 2.1.4 Cát .42 2.1.5 Cát tiêu chuẩn dùng cho thí nghiệm xác định cường độ chất kết dính .43 2.1.6 Đá 43 2.1.7 Phụ gia hóa học 43 2.1.8 Nước 44 2.2 Các phương pháp thí nghiệm sử dụng nghiên cứu 44 2.2.1 Các tiêu chuẩn thí nghiệm vật liệu 44 2.2.2 Các tiêu chuẩn thí nghiệm vữa 44 2.2.3 Các tiêu chuẩn thí nghiệm bê tông 48 2.2.4 Các phương pháp thí nghiệm đại phi tiêu chuẩn 55 2.3 Phương pháp tính toán thành phần bê tông dùng nghiên cứu 57 2.3.1 Tính toán cấp phối lý thuyết 57 2.3.2 Thí nghiệm phòng điều chỉnh theo vật liệu thực tế trường 59 2.4 Kết luận chương 60 CHƯƠNG XÁC ĐỊNH TỔ HỢP PHỤ GIA ĐỂ NÂNG CAO ĐỘ BỀN CHO BT-BTCT CỦA KẾT CẤU BẢO VỆ MÁI ĐÊ VÀ BỜ BIỂN 61 3.1 Tổng quát 61 3.2 Xác định tiêu xi măng chất kết dính 62 3.2.1 Lượng nước tiêu chuẩn .62 3.2.2 Các tiêu đá xi măng 64 3.3 Xác định tiêu vữa 74 3.3.1 Lượng nước tiêu chuẩn hỗn hợp vữa 74 3.3.2 Cường độ vữa chất kết dính 76 3.3.3 Thí nghiệm chụp ảnh vi điện tử quét SEM .77 iv 3.4 Xác định tiêu bê tông 79 3.4.1 Các yêu cầu bê tông 79 3.4.2 Xác định thành phần bê tông .79 3.4.3 Cường độ nén, độ hút nước khối lượng thể tích 87 3.4.4 Tính thấm nước 90 3.4.5 Độ mài mòn 92 3.4.6 Độ thấm ion Cl- 93 3.4.7 Chỉ số pH 97 3.5 Tính toán hiệu kinh tế .99 3.5.1 Mục đích tính toán hiệu kinh tế 99 3.5.2 Tính chi phí vật liệu cho cấp phối khác 100 3.6 Phân tích lựa chọn tỷ lệ phụ gia hợp lý 103 3.7 Kết luận chương 104 CHƯƠNG ỨNG DỤNG BÊ TÔNG CÓ ĐỘ BỀN CAO CHO CẤU KIỆN BẢO VỆ MÁI ĐÊ BIỂN GIAO THỦY – NAM ĐỊNH 107 4.1 Điều kiện áp dụng kết nghiên cứu bê tông có độ bền cao 107 4.2 Giới thiệu công trình cấu kiện ứng dụng thử nghiệm 108 4.2.1 Giới thiệu công trình 108 4.2.2 Giới thiệu vị trí cấu tạo cấu kiện ứng dụng thử nghiệm 109 4.3 Vật liệu thành phần bê tông ứng dụng thử nghiệm 111 4.3.1 Vật liệu sử dụng 111 4.3.2 Tính toán thành phần bê tông 114 4.4 Kết thí nghiệm phòng ứng dụng thử nghiệm trường 117 4.4.1 Kết thí nghiệm phòng 117 4.4.2 Kết ứng dụng thử nghiệm trường 118 4.5 Kết luận chương 122 KẾT LUẬN VÀ KIẾN NGHỊ 123 I Kết đạt luận án .123 II Hướng phát triển luận án 124 III Kiến nghị 124 DANH MỤC CÁC CÔNG TRÌNH ĐÃ CÔNG BỐ 126 TÀI LIỆU THAM KHẢO 127 v PHỤ LỤC 133 PHỤ LỤC CÁC KẾT QUẢ THỬ NGHIỆM XI MĂNG, TRO BAY, MUỘI SILIC 133 Phụ lục 1-1 Giấy chứng nhận kết thử nghiệm xi măng nhà máy xi măng Bút Sơn 134 Phụ lục 1-2 Kết phân tích thành phần hóa học khối lượng riêng xi măng, tro bay silica fume 135 Phụ lục 1-3 Kết phân tích thành phần hạt xi măng Bút Sơn 135 Phụ lục 1-4 Kết phân tích thành phần hạt tro tuyển Phả Lại 136 Phụ lục 1-5 Kết phân tích thành phần hạt silica fume 137 PHỤ LỤC CÁC KẾT QUẢ THÍ NGHIỆM PHÂN TÍCH HIỆN ĐẠI ĐỐI VỚI XI MĂNG VÀ VỮA 138 Phụ lục 2-1 Kết phân tích tia rơnghen X-Ray đá xi măng 138 Phụ lục 2-2 Kết phân tích nhiệt TGA đá xi măng 143 Phụ lục 2-3 Kết chụp ảnh vi điện tử quét SEM đá xi măng 148 Phụ lục 2-4 Kết chụp ảnh vi điện tử quét SEM vữa 150 PHỤ LỤC CODE PHẦN MỀM TÍNH TOÁN THÀNH PHẦN BÊ TÔNG CÓ SỬ DỤNG PHỤ GIA .153 PHỤ LỤC BIÊN BẢN XÁC NHẬN VỀ VIỆC ỨNG DỤNG SẢN PHẨM KHOA HỌC CÔNG NGHỆ 167 vi DANH MỤC CÁC HÌNH Hình 1-1 Sơ đồ mặt cắt ngang đê biển dạng tường đứng .5 Hình 1-2 Sơ đồ mặt cắt ngang đê biển dạng mái nghiêng loại có đê Hình 1-3 Sơ đồ mặt cắt ngang đê biển dạng mái nghiêng loại đê .5 Hình 1-4 Sơ đồ mặt cắt ngang đê biển dạng hỗn hợp Hình 1-5 Đê dạng tường đứng BTCT Hình 1-6 Tường đỉnh kè BTCT .7 Hình 1-7 Mặt cắt ngang kết cấu gia cố mái đê điển hình .7 Hình 1-8 Kè cấu kiện BT mỏng Hình 1-9 Kè cấu kiện BT khối lập phương Hình 1-10 Kè cấu kiện BT Haro Hình 1-11 Kè cấu kiện BT Holhquader Hình 1-12 Kè cấu kiện bê tông liên kết ngàm chiều loại mũ .9 Hình 1-13 Kè cấu kiện bê tông liên kết ngàm chiều loại có mũ Hình 1-14 Kè cấu kiện bê tông liên kết ngàm chiều TSC 10 Hình 1-15 Kè đê biển thảm bê tông liên kết 11 Hình 1-16 Ăn mòn rửa trôi mài mòn học cấu kiện liên kết chiều loại không mũ 12 Hình 1-17 Ăn mòn rửa trôi mài mòn học cấu kiện liên kết chiều loại có mũ 12 Hình 1-18 Ăn mòn rửa trôi mài mòn học cấu kiện TSC 12 Hình 1-19 Nguyên nhân phá hoại bê tông tác động vật lý học .18 Hình 1-20 Sơ đồ trình xói mòn, mài mòn vật liệu môi trường nước 18 Hình 1-21 Nguyên nhân phá hoại bê tông tác động ăn mòn 19 Hình 1-22 Sơ đồ mô tả thành phần hóa học tham gia vào trình ăn mòn kết cấu BTCT môi trường biển 21 Hình 1-23 Tổng hợp dạng ăn mòn bê tông, cốt thép môi trường biển định hướng giải pháp hạn chế 22 Hình 1-24 Sơ đồ phân vùng môi trường biển 23 Hình 1-25 Sơ đồ mô tả tác động phá hoại BTCT vùng môi trường biển 23 Hình 1-26 Sơ đồ tóm tắt vai trò, tác dụng loại phụ gia dùng nghiên cứu .38 Hình 2-1 Ảnh chụp thành phần vật liệu hỗn hợp chất kết dính 42 Hình 2-2 Đo đường kính đáy khối vữa mẫu đối chứng 100%XM 46 Hình 2-3 Đo đường kính đáy khối vữa mẫu thí nghiệm có dùng phụ gia trước hiệu chỉnh nước .46 Hình 2-4 Thí nghiệm tạo mẫu khuôn ngăn lăng trụ 40x40x160mm .46 Hình 2-5 Thí nghiệm mẫu vữa đông rắn 47 Hình 2-6 Sơ đồ bước thí nghiệm xác định cường độ chất kết dính 47 vii Hình 2-7 Máy thí nghiệm thấm với khoang chứa mẫu Matest 50 Hình 2-8 Mẫu bê tông sau ép bửa đo độ thấm xuyên sâu 51 Hình 2-9 Máy mẫu thí nghiệm độ mài mòn bê tông theo tiêu chuẩn ASTM C1138 .53 Hình 2-10 Máy thí nghiệm đo nồng độ ion Cl- CL-3000 54 Hình 2-11 Thiết bị đo phận hiển thị nồng độ ion Cl- máy CL-3000 55 Hình 3-1 Lượng nước tiêu chuẩn tổ mẫu với lượng phụ gia thay đổi .63 Hình 3-2 Các mẫu đá xi măng đúc sau tháng bảo dưỡng 65 Hình 3-3 Lượng ion Cl- SO3 mẫu đá xi măng 67 Hình 3-4 X-Ray mẫu X-T0S0P0, 28 ngày 68 Hình 3-5 X-Ray mẫu X-T20S10P0,4 28 ngày 69 Hình 3-6 TGA mẫu X-T0S0P0, 28 ngày 70 Hình 3-7 TGA mẫu X-T20S10P0,4, 28 ngày 71 Hình 3-8 SEM mẫu X-T0S0P0, 28 60 ngày 73 Hình 3-9 SEM mẫu X-T20S10P0,4, 28 60 ngày 73 Hình 3-10 Biểu đồ so sánh thay đổi lượng nước tiêu chuẩn xi măng vữa 75 Hình 3-11 Sự phát triển cường độ tổ mẫu vữa theo thời gian 76 Hình 3-12 SEM mẫu V-T0S0P0, ngày 28 ngày .78 Hình 3-13 SEM mẫu V-T20S10P0, ngày 28 ngày 78 Hình 3-14 Sơ đồ bước tính toán thành phần bê tông có sử dụng phụ gia 81 Hình 3-15 Giao diện giới thiệu phần mềm 82 Hình 3-16 Giao diện nhập liệu 82 Hình 3-17 Giao diện kết tính đại lượng trung gian 83 Hình 3-18 Giao diện kết tính toán lượng vật liệu cho 1m3 bê tông 83 Hình 3-19 Sự thay đổi tỷ lệ N/CKD tổ mẫu lượng dùng phụ gia khác .86 Hình 3-20 Sự biến đổi cường độ bê tông theo thời gian tỷ lệ dùng phụ gia khoáng thay đổi 88 Hình 3-21 Sự biến đổi cường độ bê tông theo thời gian lượng dùng phụ gia hóa dẻo thay đổi 88 Hình 3-22 Cường độ bê tông tổ mẫu thí nghiệm .89 Hình 3-23 Sự thay đổi mức hút nước bê tông tổ mẫu 90 Hình 3-24 Biểu đồ hệ số thấm mẫu có phụ gia 91 Hình 3-25 Độ mài mòn mẫu có phụ gia 92 Hình 3-26 Mẫu thí nghiệm sơ đồ vị trí điểm lấy mẫu xác định lượng ion Cl- 93 Hình 3-27 Nồng độ ion Cl- đo sau tháng 94 Hình 3-28 Nồng độ ion Cl- đo sau 12 tháng 94 Hình 3-29 Nồng độ ion Cl- đo sau 24 tháng 95 Hình 3-30 Lượng ion Cl- đo bề mặt 95 Hình 3-31 Lượng ion Cl- đo điểm sâu 2cm 95 viii .DataSource = DuongKinhDaAdp.GetData End With End Sub Public Sub BindLoaiDa() Dim LoaiDaAdp As CMCDataSetTableAdapters.LoaiDaTableAdapter = New CMCDataSetTableAdapters.LoaiDaTableAdapter With cboLoaiDa DisplayMember = "Ten" ValueMember = "ID" DataSource = LoaiDaAdp.GetData End With End Sub Public Sub BindLoaiPhuGiaHD() Dim LoaiPhuGiaHDAdp As CMCDataSetTableAdapters.LoaiPhuGiaHDTableAdapter = New CMCDataSetTableAdapters.LoaiPhuGiaHDTableAdapter With cboLoaiPGHoaDeo DisplayMember = "Ten" ValueMember = "ID" DataSource = LoaiPhuGiaHDAdp.GetData End With End Sub Public Sub BindLoaiXiMang() Dim LoaiXiMangAdp As CMCDataSetTableAdapters.LoaiXiMangTableAdapter = New CMCDataSetTableAdapters.LoaiXiMangTableAdapter With cboLoaiXM DisplayMember = "Ten" ValueMember = "ID" DataSource = LoaiXiMangAdp.GetData End With End Sub Public Sub BindYCChongTham() Dim YCChongThamAdp As CMCDataSetTableAdapters.YCChongThamTableAdapter = New CMCDataSetTableAdapters.YCChongThamTableAdapter With cboYCChongThamvafCDUon DisplayMember = "Ten" ValueMember = "ID" DataSource = YCChongThamAdp.GetData End With End Sub Private Sub btnTinhToan_Click(sender As Object, e As EventArgs) Handles btnTinhToan.Click Dim BangAAdp As CMCDataSetTableAdapters.BangTraAA1TableAdapter = New CMCDataSetTableAdapters.BangTraAA1TableAdapter Dim MdlValue As Double 'Tinh toan leastquare Dim Y() As Double = {1.33, 1.38} Dim X() As Double = {225, 250} Dim P As System.Tuple(Of Double, Double) = Fit.Line(X, Y) Dim a As Double = P.Item2 Dim b As Double = P.Item1 'Tính RaCKD Dim Rax As Double = Val(tbxRax.Text) Dim TyleDungXM As Double = Val(tbxTyLeDungXM.Text) Dim Rak1 As Double = Val(tbxRaK1.Text) Dim TyleDungPGK1 As Double = Val(tbxPGK1.Text) Dim Rak2 As Double = Val(tbxRaK2.Text) Dim TyleDungPGK2 As Double = Val(tbxPGK2.Text) Dim Rak3 As Double = Val(tbxRaK3.Text) Dim TyleDungPGK3 As Double = Val(tbxPGK3.Text) Dim RaCKD As Double = 100 / (TyleDungXM / Rax + TyleDungPGK1 / Rak1 + TyleDungPGK2 / Rak2 + TyleDungPGK3 / Rak3) tbxraCKD.Text = RaCKD.ToString("0.00") 154 'Hệ số thực nghiệm Dim LoaiHHBeTongAdp As CMCDataSetTableAdapters.LoaiHonHopBeTongTableAdapter = New CMCDataSetTableAdapters.LoaiHonHopBeTongTableAdapter Dim LoaiHHBTId As Integer = Val(cboLoaiHonHopBeTong.SelectedValue) Dim txtHeSoThucNghiem As String = LoaiHHBeTongAdp.GetDataById(LoaiHHBTId).Rows(0).Item("GiaTri") tbxHeSoThucNghiem.Text = txtHeSoThucNghiem 'Độ rỗng đá rd Dim Rod As Double = Val(tbxRod.Text) Dim Rad As Double = Val(tbxRad.Text) Dim rd As Double If (Rad 0) Then rd = - Rod / Rad tbxrd.Text = rd.ToString("0.000") Else MessageBox.Show("Có lỗi liệu", "Thông báo") End If 'Tra gia tri A Dim TieuChuanId As Integer = Val(Me.cboCKD.SelectedValue) Dim LoaiHonHopBeTongId As Integer = Val(Me.cboLoaiHonHopBeTong.SelectedValue) Dim ChatLuongvatLieuId As Integer = Val(Me.cboChatLuongVatLieu.SelectedValue) Dim HeSoThucNghiem As Double = TraBangA(TieuChuanId, LoaiHonHopBeTongId, ChatLuongvatLieuId) tbxGiaTriHeSoThucNghiem.Text = HeSoThucNghiem.ToString("0.00") 'Tra bang nuoc MdlValue = Val(tbxMdl.Text) Dim DmaxId As Integer = Val(cboDKLonNhatCuaDa.SelectedValue) Dim SNValue As Double = Val(tbxSN.Text) Dim Ntb As Double = TraBangNuoc(DmaxId, MdlValue, SNValue) tbxNtb.Text = Ntb.ToString("0.0") 'Tinh luong nuoc dieu chinh Dim LoaiDaAdp As CMCDataSetTableAdapters.LoaiDaTableAdapter = New CMCDataSetTableAdapters.LoaiDaTableAdapter Dim LoaiDaId As Integer = cboLoaiDa.SelectedValue Dim Nuoc_LoaiDa As Double If (LoaiDaAdp.GetDataById(LoaiDaId).Count > 0) Then Nuoc_LoaiDa = LoaiDaAdp.GetDataById(LoaiDaId).Rows(0).Item("GiaTriHieuChinh") End If Dim Nuoc_Mdl As Double If (MdlValue >= And MdlValue 1.4 And MdlValue 3) Then Nuoc_Mdl = -1 End If Dim LoaiXMAdp As CMCDataSetTableAdapters.LoaiXiMangTableAdapter = New CMCDataSetTableAdapters.LoaiXiMangTableAdapter Dim LoaiXMId As Integer = Val(cboLoaiXM.SelectedValue) Dim Nuoc_LoaiXM As Double If (LoaiXMAdp.GetDataById(LoaiXMId).Count > 0) Then Nuoc_LoaiXM = LoaiXMAdp.GetDataById(LoaiXMId).Rows(0).Item("GiaTriHieuChinh") End If Dim LuongNuocGiamKhiCoPGHD As Double = Val(tbxLuongNuocGiamKhiCoPGHD.Text) Dim Ndc1 As Double = (Ntb + Nuoc_LoaiDa + Nuoc_Mdl + Nuoc_LoaiXM) * (100 LuongNuocGiamKhiCoPGHD) / 100 tbxNdc1.Text = Ndc1.ToString("0.0") 'Tỷ lệ CKD/N= Dim TramTronAdp As CMCDataSetTableAdapters.TramTronTableAdapter = New CMCDataSetTableAdapters.TramTronTableAdapter 155 Dim Rbtk = Val(tbxRbtk.Text) Dim TramTronId As Integer = Val(cboTramTron.SelectedValue) Dim K_TramTron As Double = If (TramTronAdp.GetDataById(TramTronId).Count > 0) Then K_TramTron = TramTronAdp.GetDataById(TramTronId).Rows(0).Item("GiaTri") End If Dim Rckd As Double = Val(tbxRcdk.Text) Dim CKD_N As Double = (Rbtk * K_TramTron) / (HeSoThucNghiem * Rckd) + 0.5 tbxCKD_N.Text = CKD_N.ToString("0.00") 'Lượng chất kết dính, CKD= Dim CKD As Double = Ndc1 * CKD_N tbxCKD.Text = CKD.ToString("0.0") 'Lượng nước điều chỉnh theo lượng XM, Nđc2= Dim Ndc2 As Double = Ndc1 If (CKD > 400) Then Ndc2 = Ndc1 + (CKD - 400) / 10 End If tbxNdc2.Text = Ndc2.ToString("0.0") 'Lượng chất kết dính điều chỉnh, CKDđc= Dim CKDdc As Double CKDdc = CKD_N * Ndc2 tbxCKDdc.Text = CKDdc.ToString("0.0") 'Lượng PGHD dạng lỏng, PGHDL= Dim PGHDLong As Double Dim TylePGHD As Double = Val(tbxTyLePhaPGHD.Text) PGHDLong = CKDdc * TylePGHD / 100 tbxPGHDL.Text = PGHDLong.ToString("0.00") 'Lượng chất khô PGHD, PGHDK= Dim LuongChatKhoTrongPGHD As Double = Val(tbxLuongChatKhoTrongPGHD.Text) Dim PGHDKho As Double = PGHDLong * LuongChatKhoTrongPGHD / 100 tbxChatKhoPGHDKho.Text = PGHDKho.ToString("0.00") 'Lượng nước trộn thực tế, N= Dim NuocTronThucTe As Double = Ndc2 - (PGHDLong - PGHDKho) tbxN.Text = NuocTronThucTe.ToString("0") 'Tỷ lệ N/CKD= Dim N_CKD As Double = Ndc2 / CKDdc tbxN_CKD.Text = N_CKD.ToString("0.00") 'Thể tích hồ, Vh= Dim Vho As Double = CKDdc / RaCKD + Ndc2 tbxVho.Text = Vho.ToString("0") 'Hệ số dư vữa tra bảng, Kdtb= Dim Kdu As Double = TraBangKdu(MdlValue, Vho) tbxKdtb.Text = Kdu.ToString("0.000") 'Yêu cầu chống thấm CĐ uốn Dim YCChongTham As Integer = Val(cboYCChongThamvafCDUon.SelectedValue) 'Hệ số dư vữa điều chỉnh, Kdđc= Dim Kddc As Double = Kdu If (SNValue >= And SNValue = 14 And SNValue = And MdlValue 2.5) Then Kddc = Kdu + 0.2 End If End If 156 If (YCChongTham = 1) Then If (MdlValue < 2) Then Kddc = Kdu + 0.1 ElseIf (MdlValue >= And MdlValue 2.5) Then Kddc = Kdu + 0.2 End If End If If (cboLoaiDa.SelectedValue = 2) Then Kddc = Kddc + 0.06 End If tbxKddc.Text = Kddc.ToString("0.000") 'Lượng đá, Đk= Dim LuongDaDK As Double = 1000 / (1 / Rad + Kddc * rd / Rod) tbxDk.Text = LuongDaDK.ToString("0") 'Lượng cát, Ck= Dim Rac As Double = Val(tbxRac.Text) Dim LuongCatCk As Double = (1000 - CKDdc / RaCKD - Ndc2 - LuongDaDK / Rad) * Rac tbxCk.Text = LuongCatCk.ToString("0") 'Mức ngậm cát, mc= Dim mc As Double = LuongCatCk / (LuongCatCk + LuongDaDK) tbxmc.Text = mc.ToString("0.00") 'Tỷ lệ vật liệu theo lượng CKD: 'CKD:Nlt:Ck:Đk= Dim TyLeVLTheoLuongCKD As String = (CKD / CKD).ToString("0.00") + " : " + N_CKD.ToString("0.00") + " : " + (LuongCatCk / CKDdc).ToString("0.00") + " : " + (LuongDaDK / CKDdc).ToString("0.00") lblCKD_Nlt_Ck_Dk.Text = TyLeVLTheoLuongCKD 'CẤP PHỐI LÝ THUYẾT CHO 1M3 BT VỚI VẬT LIỆU KHÔ 'Lượng chất kết dính, CKD= tbxLuongCKD.Text = CKDdc.ToString("0") 'Lượng nước lý thuyết, NLT= Dim NLT As Double = Ndc2 tbxNLT.Text = NLT.ToString("0") 'Lượng cát khô, CK= tbxLuongCK.Text = LuongCatCk.ToString("0") 'Lượng đá khô, ĐK= tbxLuongDK.Text = LuongDaDK.ToString("0") 'Lượng PGHD khô, PGHDK= Dim LuongPGHDKho As Double = CKDdc * TylePGHD / 100 * LuongChatKhoTrongPGHD / 100 tbxLuongPGKho.Text = LuongPGHDKho.ToString("0.00") 'Lượng xi măng, X= Dim LuongXiMang As Double = CKDdc * TyleDungXM / 100 tbxLuongXM.Text = LuongXiMang.ToString("0") 'Lượng phụ gia khoáng 1, PKG1= Dim LuongPKG1 As Double = CKDdc * TyleDungPGK1 / 100 tbxLuongPGK1.Text = LuongPKG1.ToString("0") 'Lượng phụ gia khoáng 2, PKG2= Dim LuongPKG2 As Double = CKDdc * TyleDungPGK2 / 100 tbxLuongPGK2.Text = LuongPKG2.ToString("0") 'Lượng phụ gia khoáng 3, PKG3= Dim LuongPKG3 As Double = CKDdc * TyleDungPGK3 / 100 tbxLuongPGK3.Text = LuongPKG3.ToString("0") 'Lượng phụ gia hóa dẻo, PGHDL= Dim LuongPGHDL As Double = CKDdc * TylePGHD / 100 tbxLuongPGHDL.Text = LuongPGHDL.ToString("0.00") 'Lượng nước trộn thực tế, N= Dim LuongNuocTronThucTeN As Double = NLT - (LuongPGHDL - LuongPGHDKho) 157 tbxLuongNuocTronThucTeN.Text = LuongNuocTronThucTeN.ToString("0") 'Lượng cát khô, CK= tbxLuongCatKho.Text = LuongCatCk.ToString("0") 'Lượng đá khô, ĐK= tbxLuongDaKho.Text = LuongDaDK.ToString("0") 'KL vật liệu 1m3 BT theo CPLT= Dim KLVL1m3CPLT As Double = CKDdc + NLT + LuongCatCk + LuongDaDK + LuongPGHDKho tbxKL1m3BTTheoCPLT.Text = KLVL1m3CPLT.ToString("0") 'KLTT BT tươi theo CPLT= Dim KLTTBTTuoiTheoCPLT1 As Double = (CKDdc + NLT + LuongCatCk + LuongDaDK) / 1000 tbxKLTTBTTuoiTheoCPLT1.Text = KLTTBTTuoiTheoCPLT1.ToString("0.00") 'CẤP PHỐI LÝ THUYẾT CHO 1M3 BT VỚI VẬT LIỆU ẨM 'Lượng chất kết dính, CKD= tbxLuongChatKD.Text = CKDdc.ToString("0") 'Lượng xi măng, X= tbxLuongXMX.Text = LuongXiMang.ToString("0") 'Lượng phụ gia khoáng 1, PKG1= tbxLuongPGKhoangPKG1.Text = LuongPKG1.ToString("0") 'Lượng phụ gia khoáng 2, PKG2= tbxLuongPGKhoangPKG2.Text = LuongPKG2.ToString("0") 'Lượng phụ gia khoáng 3, PKG3= tbxLuongPGKhoangPKG3.Text = LuongPKG3.ToString("0") 'Lượng phụ gia hóa dẻo, PGHD= tbxLuongPGHoaDeoPGHD.Text = LuongPGHDL.ToString("0.00") 'Lượng cát ẩm, Câ= Dim Wc As Double = Val(tbxWc.Text) Dim LuongCa As Double = LuongCatCk * (1 + Wc / 100) tbxLuongCatAmCa.Text = LuongCa.ToString("0") 'Lượng đá ẩm, Đâ= Dim Wd As Double = Val(tbxWd.Text) Dim LuongDa As Double = LuongDaDK * (1 + Wd / 100) tbxLuongDaAmDa.Text = LuongDa.ToString("0") 'Lượng nước trộn, Ntr= Dim Ntr As Double = NLT - (LuongPGHDL - LuongPGHDKho) - (LuongCa - LuongCatCk) - (LuongDa - LuongDaDK) tbxLuongNuocTronNtr.Text = Ntr.ToString("0") 'KL vật liệu 1m3 BT theo CPLT= Dim KLVL1m3BTTheoCPLT As Double = LuongXiMang + LuongPKG1 + LuongPKG2 + LuongPKG3 + LuongPGHDL + LuongCa + LuongDa + Ntr tbxKLVL1m3BTTheoCPLT.Text = KLVL1m3BTTheoCPLT.ToString("0") 'KLTT BT tươi theo CPLT= Dim KLTTBTTuoiTheoCPLT2 As Double = (CKDdc + LuongPGHDL + LuongCa + LuongDa + Ntr) / 1000 tbxKLTTBTTuoiTheoCPLT2.Text = KLTTBTTuoiTheoCPLT2.ToString("0.00") 'CẤP PHỐI LÝ THUYẾT CHO 1MẺ TRỘN BT VỚI VẬT LIỆU KHÔ Dim Rox As Double = Val(tbxRox.Text) Dim Rok1 As Double = Val(tbxRoK1.Text) Dim Rok2 As Double = Val(tbxRoK2.Text) Dim Rok3 As Double = Val(tbxRoK3.Text) Dim Roc As Double = Val(tbxRoc.Text) Dim Beta As Double = 1000 / (LuongXiMang / Rox + LuongPKG1 / Rok1 + LuongPKG2 / Rok2 + LuongPKG3 / Rok3 + LuongCatCk / Roc + LuongDaDK / Rod) tbxBeta.Text = Beta.ToString("0.000") 'TheTich1Metron=TheTichThungtron*beta Dim TheTich1Metron As Double = Val(tbxTheTich1Metron.Text) * Beta tbxTheTichMeTron.Text = TheTich1Metron.ToString("0") Dim CKDm As Double = CKDdc * TheTich1Metron / 1000 tbxCKDm1Me.Text = CKDm.ToString("0.0") 'Lượng nước lý thuyết, NLTm= Dim NLTm As Double = NLT * TheTich1Metron / 1000 158 tbxNLTm1Me.Text = NLTm.ToString("0.0") 'Lượng cát khô, CKm= Dim CKm As Double = LuongCatCk * TheTich1Metron / 1000 tbxCKm1Me.Text = CKm.ToString("0.0") 'Lượng đá khô, ĐKm= Dim DKm As Double = LuongDaDK * TheTich1Metron / 1000 tbxDKm1Me.Text = DKm.ToString("0.0") 'Lượng PGHD khô, PGHDK= Dim PGHDK As Double = LuongPGHDKho * TheTich1Metron / 1000 tbxPGHDK1Me.Text = PGHDK.ToString("0.00") 'Lượng xi măng, Xm= Dim Xm As Double = LuongXiMang * TheTich1Metron / 1000 tbxXm1Me.Text = Xm.ToString("0.0") 'Lượng phụ gia khoáng 1, PKG1m= Dim PKG1m As Double = LuongPKG1 * TheTich1Metron / 1000 tbxPKG1m1Me.Text = PKG1m.ToString("0.0") 'Lượng phụ gia khoáng 2, PKG2m= Dim PKG2m As Double = LuongPKG2 * TheTich1Metron / 1000 tbxPKG2m1Me.Text = PKG2m.ToString("0.0") 'Lượng phụ gia khoáng 3, PKG3m= Dim PKG3m As Double = LuongPKG3 * TheTich1Metron / 1000 tbxPKG3m1Me.Text = PKG3m.ToString("0.0") 'Lượng phụ gia hóa dẻo, PGHDm= Dim PGHDm As Double = LuongPGHDL * TheTich1Metron / 1000 tbxPGHDm1Me.Text = PGHDm.ToString("0.00") 'LuongPGHDL.ToString("0.00") 'Lượng nước chưa pha PGHD, Nm= Dim PGHD_Nm As Double = NuocTronThucTe * TheTich1Metron / 1000 tbxNm1Me.Text = PGHD_Nm.ToString("0.0") 'Lượng cát khô, CKm= tbxCKm1_1Me.Text = CKm.ToString("0.0") 'Lượng đá khô, ĐKm= tbxDKm1_1Me.Text = DKm.ToString("0.0") 'KL vật liệu 1mẻ trộn BT theo CPLT= Dim CPLT As Double = CKDm + NLTm + CKm + DKm + PGHDK tbxCPLT1Me.Text = CPLT.ToString("0.0") 'CẤP PHỐI LÝ THUYẾT CHO 1MẺ TRỘN BT VỚI VẬT LIỆU ẨM tbxCKDm1_1Me.Text = CKDm.ToString("0.0") 'Lượng xi măng, Xm= tbxXm1_1Me.Text = Xm.ToString("0.0") 'Lượng phụ gia khoáng 1, PKG1m= tbxPKG1m1_1Me.Text = PKG1m.ToString("0.0") 'Lượng phụ gia khoáng 2, PKG2m= tbxPKG2m1_1Me.Text = PKG2m.ToString("0.0") 'Lượng phụ gia khoáng 3, PKG3m= tbxPKG3m1_1Me.Text = PKG3m.ToString("0.0") 'Lượng phụ gia hóa dẻo, PGHDm= tbxPGHDm1_1Me.Text = PGHDm.ToString("0.00") 'Lượng cát ẩm, Câm= Dim Cam As Double = LuongCa * TheTich1Metron / 1000 tbxCam1Me.Text = Cam.ToString("0.0") 'Lượng đá ẩm, Đâm= Dim Dam As Double = LuongDa * TheTich1Metron / 1000 tbxDam1Me.Text = Dam.ToString("0.0") 'Lượng nước trộn, Ntrm= Dim Ntrm As Double = Ntr * TheTich1Metron / 1000 tbxNtm1Me.Text = Ntrm.ToString("0.0") 'KL vật liệu 1mẻ trộn BT theo CPLT= Dim CPLT1 As Double = Xm + PKG1m + PKG2m + PKG3m + PGHDm + Cam + Dam + Ntrm tbxCPLT1_1Me.Text = CPLT1.ToString("0.0") MessageBox.Show("Đã tính toán xong", "Thông báo") End Sub 159 Public Function CheckMidleValue_ModuleDolonCuaCat(ByVal value As Double, ByRef Id As Integer) Dim MdlAdp As CMCDataSetTableAdapters.ModuleDolonCuaCatMdlTableAdapter = New CMCDataSetTableAdapters.ModuleDolonCuaCatMdlTableAdapter Dim MyRow As CMCDataSet.ModuleDolonCuaCatMdlRow Dim returnvalue As Boolean = False For Each MyRow In MdlAdp.GetData.Rows If (value >= MyRow.MinValue) And (value = MyRow.MinValue And value = 1.5) And (MdlValue = 1.75) And (MdlValue = 2) And (MdlValue = 2.25) And (MdlValue = 2.5) And (MdlValue = 2.75) And (MdlValue = 225) And (VhoValue 0) Then 160 Min_VhoId = VhoAdp.GetDataByValue(225).Rows(0).Item("ID") End If If (VhoAdp.GetDataByValue(250).Count > 0) Then Max_VhoId = VhoAdp.GetDataByValue(250).Rows(0).Item("ID") End If End If If ((VhoValue >= 250) And (VhoValue 0) Then Min_VhoId = VhoAdp.GetDataByValue(250).Rows(0).Item("ID") End If If (VhoAdp.GetDataByValue(275).Count > 0) Then Max_VhoId = VhoAdp.GetDataByValue(275).Rows(0).Item("ID") End If End If If ((VhoValue >= 275) And (VhoValue 0) Then Min_VhoId = VhoAdp.GetDataByValue(275).Rows(0).Item("ID") End If If (VhoAdp.GetDataByValue(300).Count > 0) Then Max_VhoId = VhoAdp.GetDataByValue(300).Rows(0).Item("ID") End If End If If ((VhoValue >= 300) And (VhoValue 0) Then Min_VhoId = VhoAdp.GetDataByValue(300).Rows(0).Item("ID") End If If (VhoAdp.GetDataByValue(325).Count > 0) Then Max_VhoId = VhoAdp.GetDataByValue(325).Rows(0).Item("ID") End If End If If ((VhoValue >= 325) And (VhoValue 0) Then Min_VhoId = VhoAdp.GetDataByValue(325).Rows(0).Item("ID") End If If (VhoAdp.GetDataByValue(350).Count > 0) Then Max_VhoId = VhoAdp.GetDataByValue(350).Rows(0).Item("ID") End If End If If ((VhoValue >= 350) And (VhoValue 0) Then Min_VhoId = VhoAdp.GetDataByValue(350).Rows(0).Item("ID") End If If (VhoAdp.GetDataByValue(375).Count > 0) Then Max_VhoId = VhoAdp.GetDataByValue(375).Rows(0).Item("ID") End If End If If ((VhoValue >= 375) And (VhoValue 0) Then Min_VhoId = VhoAdp.GetDataByValue(375).Rows(0).Item("ID") End If If (VhoAdp.GetDataByValue(400).Count > 0) Then Max_VhoId = VhoAdp.GetDataByValue(400).Rows(0).Item("ID") End If End If If ((VhoValue >= 400) And (VhoValue 0) Then Min_VhoId = VhoAdp.GetDataByValue(400).Rows(0).Item("ID") End If If (VhoAdp.GetDataByValue(425).Count > 0) Then Max_VhoId = VhoAdp.GetDataByValue(425).Rows(0).Item("ID") End If End If 161 If ((VhoValue >= 425) And (VhoValue 0) Then Min_VhoId = VhoAdp.GetDataByValue(425).Rows(0).Item("ID") End If If (VhoAdp.GetDataByValue(450).Count > 0) Then Max_VhoId = VhoAdp.GetDataByValue(450).Rows(0).Item("ID") End If End If End Sub Public Function TraBangA(TieuChuanId As Integer, LoaiHonHopBeTong As Integer, ByVal ChatLuongVatLieu As Integer) As Double Dim BangTraAAdp As CMCDataSetTableAdapters.BangTraAA1TableAdapter = New CMCDataSetTableAdapters.BangTraAA1TableAdapter Dim Temp As Double = If (BangTraAAdp.GetDataByParam(TieuChuanId, LoaiHonHopBeTong, ChatLuongVatLieu).Count > 0) Then Temp = BangTraAAdp.GetDataByParam(TieuChuanId, LoaiHonHopBeTong, ChatLuongVatLieu).Rows(0).Item("GiaTri") End If Return Temp End Function Public Function TraBangNuoc(DmaxId As Integer, MdlValue As Double, SNValue As Double) As Double Dim Temp As Double = Dim BangTraNuocAdp As CMCDataSetTableAdapters.BangTraNuocTableAdapter = New CMCDataSetTableAdapters.BangTraNuocTableAdapter Dim MdlId As Integer Dim SNId As Integer If (CheckMidleValue_ModuleDolonCuaCat(MdlValue, MdlId) = True) And (CheckMidleValue_SN(SNValue, SNId)) Then If (BangTraNuocAdp.GetDataByParam(DmaxId, MdlId, SNId).Count > 0) Then Temp = BangTraNuocAdp.GetDataByParam(DmaxId, MdlId, SNId).Rows(0).Item("GiaTri") End If End If Return Temp End Function Public Function TraBangKdu(ByVal Mdl As Double, ByVal Vho As Double) As Double Dim Temp_MdlValue As Double = Dim Temp_VhoValue As Double = Dim VhoAdp As New CMCDataSetTableAdapters.VhoTableAdapter Dim Min_MdlValue As Single Dim Max_MdlValue As Single Dim Min_VhoId As Integer Dim Max_VhoId As Integer Dim Min_VhoValue As Integer Dim Max_VhoValue As Integer Get_Mdl(Mdl, Min_MdlValue, Max_MdlValue) Get_VhoId(Vho, Min_VhoId, Max_VhoId) Min_VhoValue = VhoAdp.GetDataById(Min_VhoId).Rows(0).Item("GiaTri") Max_VhoValue = VhoAdp.GetDataById(Max_VhoId).Rows(0).Item("GiaTri") Temp_VhoValue = (Vho - Min_VhoValue) / (Max_VhoValue - Min_VhoValue) Dim BangTraKdu As New CMCDataSetTableAdapters.BangTraKdTableAdapter Dim Min_Kdu1 As Double = BangTraKdu.GetDataByParam(Min_VhoId, Min_MdlValue).Rows(0).Item("GiaTri") Dim Max_Kdu1 As Double = BangTraKdu.GetDataByParam(Max_VhoId, Min_MdlValue).Rows(0).Item("GiaTri") Dim Min_Kdu2 As Double = BangTraKdu.GetDataByParam(Min_VhoId, Max_MdlValue).Rows(0).Item("GiaTri") Dim Max_Kdu2 As Double = BangTraKdu.GetDataByParam(Max_VhoId, Max_MdlValue).Rows(0).Item("GiaTri") 162 Dim Temp_Min_Kdu As Double = Min_Kdu1 + (Max_Kdu1 - Min_Kdu1) * Temp_VhoValue Dim Temp_Max_Kdu As Double = Min_Kdu2 + (Max_Kdu2 - Min_Kdu2) * Temp_VhoValue Temp_MdlValue = (Mdl - Min_MdlValue) / (Max_MdlValue - Min_MdlValue) Dim ReturnValue As Double = Temp_Min_Kdu + (Temp_Max_Kdu - Temp_Min_Kdu) * Temp_MdlValue Return ReturnValue End Function #Region "Save Excel file" Private Sub btnSaveData_Click(sender As Object, e As EventArgs) Handles btnSaveData.Click excel_app.Visible = True Dim workbook As Excel.Workbook = excel_app.Workbooks.Open(Filename:=exePath + "\Data.xls") Dim sheet_name As String = DateTime.Now.ToString("MM-dd-yy") Dim sheet As Excel.Worksheet = FindSheet(workbook, _ sheet_name) If (sheet Is Nothing) Then ' Add the worksheet at the end sheet = DirectCast(workbook.Sheets.Add( _ After:=workbook.Sheets(workbook.Sheets.Count), _ Count:=1, _ Type:=Excel.XlSheetType.xlWorksheet), _ Excel.Worksheet) sheet.Name = sheet_name End If ' Add some data to individual cells sheet.Cells(1, 1) = "Tên" sheet.Cells(1, 2) = "Giá trị" ' Make that range of cells bold and red Dim header_range As Excel.Range = sheet.Range("A1", "B1") header_range.Font.Bold = True header_range.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red) header_range.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Pink) ' Add some data to a range of cells Dim values(,) As String = _ { _ {lblRbtk.Text, tbxRbtk.Text}, _ {lblTramTron.Text, cboTramTron.Text}, _ {lblLoaiHonHopBeTong.Text, cboLoaiHonHopBeTong.Text}, _ {lblChatLuongVatLieu.Text, cboChatLuongVatLieu.Text}, _ {lblSN.Text, tbxSN.Text}, _ {lblYCChongThamvafCDUon.Text, cboYCChongThamvafCDUon.Text}, _ {lblTheTich1Metron.Text, tbxTheTich1Metron.Text}, _ {lblRckd.Text, tbxRcdk.Text}, _ {lblCKD.Text, cboCKD.Text}, _ {lblDKLongNhatCuaDa.Text, cboDKLonNhatCuaDa.Text}, _ {lblLoaiDa.Text, cboLoaiDa.Text}, _ {lblMdl.Text, tbxMdl.Text}, _ {lblLoaiXM.Text, cboLoaiXM.Text}, _ {lblLoaiPGHoaDeo.Text, cboLoaiPGHoaDeo.Text}, _ {lblLuongNuocGiamKhiCoPGHD.Text, tbxLuongNuocGiamKhiCoPGHD.Text}, _ {lblRax.Text, tbxRax.Text}, _ {lblRaK1.Text, tbxRaK1.Text}, _ {lblRaK2.Text, tbxRaK2.Text}, _ {lblRaK3.Text, tbxRaK3.Text}, _ {lblRaHD.Text, tbxRaHD.Text}, _ {lblRac.Text, tbxRac.Text}, _ {lblRad.Text, tbxRad.Text}, _ {lblRox.Text, tbxRox.Text}, _ {lblRoK1.Text, tbxRoK1.Text}, _ {lblRoK2.Text, tbxRoK2.Text}, _ 163 {lblRoK3.Text, tbxRoK3.Text}, _ {lblLuongChatKhoTrongPGHD.Text, tbxLuongChatKhoTrongPGHD.Text}, _ {lblRoc.Text, tbxRoc.Text}, _ {lblRod.Text, tbxRod.Text}, _ {lblTyLeDungXM.Text, tbxTyLeDungXM.Text}, _ {lblPGK1.Text, tbxPGK1.Text}, _ {lblPGK2.Text, tbxPGK2.Text}, _ {lblPGK3.Text, tbxPGK3.Text}, _ {lblTyLePhaPGHD.Text, tbxTyLePhaPGHD.Text}, _ {lblWc.Text, tbxWc.Text}, _ {lblWd.Text, tbxWd.Text} } Dim value_range As Excel.Range = sheet.Range("A2", "B50") value_range.Value2 = values ' Save the changes and close the workbook workbook.Close(SaveChanges:=True) ' Close the Excel server excel_app.Quit() MessageBox.Show("Đã lưu file xong", "Thông báo") End Sub Public Sub ReadDataFromExcel() Dim filePath As String = exePath + "\Data.xls" Dim stream As FileStream = File.Open(filePath, FileMode.Open, FileAccess.Read) Dim excelReader As Excel.IExcelDataReader = ExcelReaderFactory.CreateBinaryReader(Stream) 'Dim result As DataSet = excelReader.AsDataSet() excelReader.IsFirstRowAsColumnNames = True ds = excelReader.AsDataSet() Dim tablenames = GetTablenames(ds.Tables) cboData.DataSource = tablenames excelReader.Close() End Sub Private Function GetTablenames(tables As DataTableCollection) As IList(Of String) Dim tableList = New List(Of String)() For Each table In tables tableList.Add(table.ToString()) Next Return tableList End Function Private Sub SelectTable() Dim tablename = cboData.SelectedItem.ToString() 'CĐ bê tông theo TK, Rbtk= Dim txtRbtk As String = ds.Tables(tablename).Rows(0).Item(1) tbxRbtk.Text = txtRbtk 'Độ sụt yêu cầu, SN= Dim txtSN As String = ds.Tables(tablename).Rows(4).Item(1) tbxSN.Text = txtSN 'Thể tích bê tông cho mẻ trộn Dim txtTheTich1Metron As String = ds.Tables(tablename).Rows(6).Item(1) tbxTheTich1Metron.Text = txtTheTich1Metron 'Cường độ CKD, Rckd= Dim txtRcdk As String = ds.Tables(tablename).Rows(7).Item(1) tbxRcdk.Text = txtRcdk 'Mô đun độ lớn cát Mđl = Dim txtMdl As String = ds.Tables(tablename).Rows(11).Item(1) tbxMdl.Text = txtMdl 'Lượng nước giảm có PGHD Dim txtLuongNuocGiamKhiCoPGHD As String = ds.Tables(tablename).Rows(14).Item(1) tbxLuongNuocGiamKhiCoPGHD.Text = txtLuongNuocGiamKhiCoPGHD 'KLR XM Dim txtRax As String = ds.Tables(tablename).Rows(15).Item(1) tbxRax.Text = txtRax 164 'KLR PGK1 Dim txtRaK1 As String = ds.Tables(tablename).Rows(16).Item(1) tbxRaK1.Text = txtRaK1 'KLR PGK2 Dim txtRaK2 As String = ds.Tables(tablename).Rows(17).Item(1) tbxRaK2.Text = txtRaK2 'KLR PGK3 Dim txtRaK3 As String = ds.Tables(tablename).Rows(18).Item(1) tbxRaK3.Text = txtRaK3 'KLR PGHD Dim txtRaHD As String = ds.Tables(tablename).Rows(19).Item(1) tbxRaHD.Text = txtRaHD 'KLR cát Dim txtRac As String = ds.Tables(tablename).Rows(20).Item(1) tbxRac.Text = txtRac 'KLR đá Dim txtRad As String = ds.Tables(tablename).Rows(21).Item(1) tbxRad.Text = txtRad 'KLTT XM Dim txtRox As String = ds.Tables(tablename).Rows(22).Item(1) tbxRox.Text = txtRox 'KLTT PGK1 Dim txtRoK1 As String = ds.Tables(tablename).Rows(23).Item(1) tbxRoK1.Text = txtRoK1 'KLTT PGK2 Dim txtRoK2 As String = ds.Tables(tablename).Rows(24).Item(1) tbxRoK2.Text = txtRoK2 'KLTT PGK3 Dim txtRoK3 As String = ds.Tables(tablename).Rows(25).Item(1) tbxRoK3.Text = txtRoK3 'Lượng chất khô PGHD= Dim txtLuongChatKhoTrongPGHD As String = ds.Tables(tablename).Rows(26).Item(1) tbxLuongChatKhoTrongPGHD.Text = txtLuongChatKhoTrongPGHD 'KLTT cát Dim txtRoc As String = ds.Tables(tablename).Rows(27).Item(1) tbxRoc.Text = txtRoc 'KLTT đá Dim txtRod As String = ds.Tables(tablename).Rows(28).Item(1) tbxRod.Text = txtRod 'Tỷ lệ dùng XM Dim txtTyLeDungXM As String = ds.Tables(tablename).Rows(29).Item(1) tbxTyLeDungXM.Text = txtTyLeDungXM 'Tỷ lệ dùng PGK1 Dim txtPGK1 As String = ds.Tables(tablename).Rows(30).Item(1) tbxPGK1.Text = txtPGK1 'Tỷ lệ dùng PGK2 Dim txtPGK2 As String = ds.Tables(tablename).Rows(31).Item(1) tbxPGK2.Text = txtPGK2 'Tỷ lệ dùng PGK3 Dim txtPGK3 As String = ds.Tables(tablename).Rows(32).Item(1) tbxPGK3.Text = txtPGK3 'Tỷ lệ pha PGHD Dim txtTyLePhaPGHD As String = ds.Tables(tablename).Rows(33).Item(1) tbxTyLePhaPGHD.Text = txtTyLePhaPGHD 'Độ ẩm cát Dim txtWc As String = ds.Tables(tablename).Rows(34).Item(1) tbxWc.Text = txtWc 'Độ ẩm đá Dim txtWd As String = ds.Tables(tablename).Rows(35).Item(1) tbxWd.Text = txtWd 'GetValues(ds, tablename); 165 End Sub Private Function FindSheet(ByVal workbook As Excel.Workbook, _ ByVal sheet_name As String) As Excel.Worksheet For Each sheet As Excel.Worksheet In workbook.Sheets If (sheet.Name = sheet_name) Then Return sheet Next sheet Return Nothing End Function #End Region Private Sub btnOpenData_Click(sender As Object, e As EventArgs) Handles btnOpenData.Click ReadDataFromExcel() End Sub Private Sub cboData_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboData.SelectedIndexChanged SelectTable() End Sub Private Sub Label21_Click(sender As Object, e As EventArgs) Handles Label21.Click End Sub End Class 166 PHỤ LỤC BIÊN BẢN XÁC NHẬN VỀ VIỆC ỨNG DỤNG SẢN PHẨM KHOA HỌC CÔNG NGHỆ 167 168