12/20/13

[ADO.NET] Sử dụng SQL - Transaction với C#

Giả sử bạn có bảng sản phẩm với các thông tin như sau:
  1. create table Product  
  2. (  
  3. ProductID     int not null primary key identity,  
  4. ProductName varchar (50) not null,  
  5. Description varchar(1000) not null,  
  6. Price money  
  7. )  

Thủ tục sử dụng để lưu thông tin một sản phẩm vào cơ sở dữ  liệu có thể viết theo một trong hai cách sau:
  1. create procedure spInsertProduct  
  2. (  
  3. -- Khai báo biến, biến này phải có kiểu dữ liệu giống như trong CSDL  
  4. @name varchar(50),      
  5. @description varchar(1000),  
  6. @price money  
  7. -- Biến trả về kết quả thực thi  
  8. @result int output  
  9. )   
  10. as  
  11.       begin transaction  
  12.              insert into Product (ProductName, Description, Price ) values(@name,@description,@price)  
  13.       if @@ERROR <> 0  
  14.     begin               
  15.         -- Có lỗi xảy ra, rollback transaction  
  16.         set @result=0  
  17.         ROLLBACK  
  18.     end  
  19.       else  
  20.     begin  
  21.         --  Thành công! commit the transaction  
  22.         set @result=1  
  23.         COMMIT  
  24.     end  


hoặc

  1. create procedure spInsertProduct  
  2. (  
  3. -- Khai báo biến, biến này phải có kiểu dữ liệu giống như trong CSDL  
  4. @name varchar(50),      
  5. @description varchar(1000),  
  6. @price money  
  7. -- Biến trả về kết quả thực thi  
  8. @result int output  
  9. )   
  10. as  
  11.       begin try  
  12.     begin transaction  
  13.         insert into Product (ProductName, Description, Price ) values  
  14.   
  15. (@name,@description,@price)  
  16.         --Nếu chạy đến câu lệnh tiếp theo --> thực thi thành công  
  17.         set @result=1  
  18.         COMMIT  
  19.       end try  
  20.   
  21.       begin catch  
  22.       
  23.           if @@TRANCOUNT > 0  
  24.         begin               
  25.             -- Có lỗi xảy ra, rollback transaction  
  26.             set @result=0  
  27.             ROLLBACK  
  28.         end  
  29.      end catch  


Trong phần mã C# ứng dụng, bạn thực hiện gọi thực thi thủ tục và kiểm tra kết quả trả về:




  1. // strConn is your connection string   
  2. SqlConnection cn = new SqlConnection(strConn);  
  3. SqlCommand cmd = cn.CreateCommand();  
  4. cmd.CommandText = "spInsertProduct";  
  5. cmd.CommandType = CommandType.StoredProcedure;  
  6.   
  7. cmd.Parameters.Add("@name", SqlDbType.VarChar, 50);  
  8. cmd.Parameters["@name"].Direction = ParameterDirection.Input;  
  9. cmd.Parameters["@name"].Value = txtName.Text;  
  10.   
  11. cmd.Parameters.Add("@description", SqlDbType.VarChar, 1000);  
  12. cmd.Parameters["@description"].Direction = ParameterDirection.Input;  
  13. cmd.Parameters["@description"].Value = txtDescription.Text;  
  14.   
  15. cmd.Parameters.Add("@result", SqlDbType.Int);  
  16. cmd.Parameters["@result"].Direction = ParameterDirection.ReturnValue;  
  17. cn.Open();  
  18. cmd.ExecuteNonQuery();  
  19. cn.Close();  
  20. int result = Convert.ToInt32(cmd.Parameters["@result"].Value);  
  21. // kiểm tra giá trị trả về  
  22. if(result==1)  
  23. MessageBox.Show("Success");   
  24. else  
  25. MessageBox.Show("Error");   


12/12/13

[C#] Cách lưu hình ảnh vào file DLL và sử dụng

Khi lập trình ứng dụng, hình ảnh là một thứ không thể thiếu để làm đẹp thêm ứng dụng. Nhưng nếu bạn add thẳng vào resource của ứng dụng thì khi build ra file exe sẽ rất nặng và làm chậm ứng dụng khi khởi động. Nếu tạo 1 thư mục và chứa hình ảnh rồi tham chiếu đến thì cũng được nhưng không hay, nó có cảm giác không chuyên nghiệp và lỡ ai đó xóa mất thì ứng dụng sẽ bị khuyết hình ảnh chỗ đó. Vậy giải pháp là tạo 1 file dll chứa các hình ảnh rồi tham chiếu đến dll đó để lấy hình ảnh ra hiển thị. Làm như vậy ta sẽ có cảm giác ứng dụng sẽ chuyên nghiệp hơn (đó là cảm giác của mình) và mọi người thấy file dll cũng ko dám xóa linh tinh (theo cảm nghĩ của mình là như vậy Open-mouthed smile)
Thôi không nói dài dòng nữa, tóm lại là đây chỉ là một cách để sử dụng hình ảnh trong ứng dụng, các bạn có thể không làm theo cũng chả sao vì nó có vài cách, ứng dụng nhỏ thì cứ add thẳng vào resource cho nó đơn giản. Bắt đầu nhé.
Bước 1: Tạo 1 project Windows Form Application đặt tên tùy ý
1
Bước 2: Add thêm 1 class library vào ứng dụng để tạo 1 file dll chứa hình ảnh
Bước 3: Add 1 resource file vào class library trên.
2
Bước 4: Add 1 vài hình ảnh vào resource file đó
3
Bước 5: Mở class1.cs ra và gõ vào đoạn code như hình sau
4
Bước 6: Build Class Library này => ta được 1 file dll.
Bước 7: Add file dll vào ứng dụng Windows Form Application
5
Bước 8: Sử dụng
6
Kết quả sau khi chạy chương trình
7
Vậy là xong rồi đó. Chúc các bạn thành công!

11/29/13

[Crystal Reports] Hướng dẫn tạo Crystal Reports đơn giản

1 >Tạo Một Crystal Report đầu tiên của bạn 

Trước khi bạn học về tất cả những cái cơ bản của Crystal Report thì tốt hơn là bây giờ ta sẽ tạo thử một Crystal nhỏ một cách nhanh chóng để bạn hình dung về Crystal Report ...

Bây giờ bạn hãy mở Visual Studio và tạo cho bạn một project mới . Nó có thể tạo trong cả hai ngôn ngữ là VB.NET hoặc C# và nó có thể là một Window Application hoặc ASP.NET . Thiết kế báo cáo với Crystal Report là một kiểu chương trình độc lập .Những bước để làm một Crystal thì giống nhau cho cả hai kiểu chương trình ứng dụng này .

Trong Project được mở bạn chọn Project > Add New Item . Điều này sẽ làm hiện ra những dánh sách các kiểu mẫu chương trình có thể thấy . Bạn chọn kiểu trong này là Crystal Report . Nhập tên cho nó là Employee List . Hình dưới sẽ cho bạn thấy hộp hội thoại này cho một Window Application của bạn . Giờ bạn hãy click vào create để tạo một report .






Khi đó hộp thoại Crystal Report Gallery sẽ xuất hiện ... Bạn hãy chấp nhận hai giá trị mặc định của nó là Using The Report Wizard và Standard và nhấn OK (Hình dưới)




Bây giờ điều tiếp theo là ta phải chọn Cơ sỡ dữ liệu Xtreme bằng việc nhấn chuột vào tuỳ chọn OLE DB(ADO) (hình dưới) .




Điều này sẽ làm xuất hiện một hộp thoại mới và bạn chọn trong này là Microsoft Jet 4.0 OLE DB Provider . Trong hộp thoại tiếp theo bạn chọn đường dẫn đến căn cứ dữ liệu Xtreme (database name phải là tên đường dẫn đầy đủ trong máy bạn ví dụ D:\Microsoft Visual Studio .NET 2005\Crystal Reports\Samples\en\Databases) . Sau đó bạn Click vào Finish .

Giờ bạn sẽ chở lại tab Data . Bạn hãy Click vào mắt Tables để bung nó ra và double vào bảng Employee (hoặc bạn có thể kéo và thả nó ) để có thể di chuyển nó qua cửa sổ mới tên là Tables In Report . Click vào Next




Để hiển thị những vùng cần có trên báo cáo , bạn có thể chọn chúng tại tab Fields . Giờ bạn hãy double vào những vùng bạn chọn để chèn chúng vào cửa sổ bên phải : Trong ví dụ này Tôi sẽ chọn các vùng Employee ID , Last Name , Hire Data . Bạn sẽ thấy nó như hình dưới .




Đến đây bạn có thể tiếp tục theo tác với báo cáo của bạn như nhóm lại và chọn dữ liệu để in . Nhưng đây chỉ là một ví dụ đơn giản , bạn hạy bỏ qua những tab còn lại và cứ thế nhấn Next để đến tab Style rồi nhấn Finish .
Giờ bạn sẽ thấy một báo cáo của bạn sẽ thấy như hình dưới . Nếu báo cáo của bạn sử dụng trong một chương trình ứng dụng thực tế thì bước tiếp theo của bạn là bạn phải sửa đổi Form để có thể xem và in báo cáo này .






2> Xem trước một báo cáo với Window Form

Sau khi đã tạo một bản báo cáo trong bài trước (Bài 1) , giờ bạn có thể xem nó sử dụng cả Window Form hoặc ASP.NET . Trong bài này chỉ hướng dẫn để xem nó trong một Window Form mà thôi ...
Giờ ta sẽ sửa đổi 1 Form để có thể xem được báo cáo mà chúng ta đã tạo . Khi bạn tạo một project mới thì một Form tên là Form1 luôn được gán đến project của bạn . Giờ bạn hãy mở design của Form này lên và thêm vào đó control CrystalReportViewer .




Với control này bạn có nhiều cách để xem trước một báo cáo . Trong ví dụ này ta sẽ sử dụng thành phần (component) ReportDocument bởi vì nó dễ dàng để lựa chọn . Bạn thêm thành phần component ReportDocument đến form bằng cách double - clicking vào nó từ Toolbox . Sau đó bạn click phải chuột vào Form của bạn (click vào control CrystalReportViewer mà ta đã kéo vào) chọn Choose a Crystal Report . Một cửa sổ mới sẽ hiện ra trong hình




Trong cửa sổ này khi bạn sẽ chọn báo cáo cho Form của bạn .
Giờ bạn đã có thể xem kết quả của mình bằng cách chạy thử Form vừa tạo ... và đây là kết quả của mình .




3> Hướng dẫn tạo Crystal Reports bằng Dataset








Giới thiệu
Hiện tại có rất ít bài tiếng việt hướng dẫn về phần này.

" creating Crystal Reports using C#.NET" .
Tạo một Crystal Reports trong C#.Net với CSDL access
SQL sercer làm tương tự.

Tạo dataset

Đầu tiên bạn tạo 1 dự án
Sau đó

“Add New Item” trong “Project” menu, bạn add a Dataset
Giống hình bên dưới.



Code:
String connString = @"Provider=Microsoft.Jet.OLEDB.4.0;_
    Data Source=..\\..\\myDB.mdb;User ID=Admin;Password=";

OleDbConnection conn = new OleDbConnection(connString);
conn.Open();
string query = "SELECT studentID, firstName, lastName, birthDate, _
                address, contactNo FROM studentInfo";
OleDbDataAdapter oleDA = new OleDbDataAdapter(query,conn);


Tạo một báo cáo dùng Crystal Reports
Sau khi tao xong dataset bạn add a Crystal Report vào project bằng cách “Add New Item” trong “Project” menu. Sau đó chọn tên xuất hiện rồi nhấn nút ok.




Màn hình sẽ hiển thị như sau bạn chọn mặt định rồi ấn OK
Sau đó chọn table rùi insert table
phần này có thể khác so với VB2005 nhưng cũng tương tự thôi!



sau đó chọn các fields hiển thị trong report --> nhần nút add



Xong xu bạn nhấn nút next-->cuối cùng chọn style kiểu bạn muốn report hiển thị


Kế tiếp bạn sẽ cho report hiển thị trên form

Bạn tao một form và add crystalReportViewer
viết code trong thuộc tính page load


Code:
// code to get data from the DB
DBConnection DBConn = new DBConnection();
OleDbDataAdapter myDataAdapter = DBConn.getDataFromDB();

// use the created Dataset to fill it with data got
// from the DB by using the DataAdapter
DataSet dataReport = new DataSet();
myDataAdapter.Fill(dataReport,"myPersonalInfoTable  ");
// create a new report from the created CrystalReport
myDataReport myDataReport = new myDataReport();

// set the data source of the report
myDataReport.SetDataSource(dataReport);

// set the report source of the created “crystalReportViewer”
// component to the created report
crystalReportViewer1.ReportSource = myDataReport;
bạn có thể thay đổi dường dẫn mặt định bằng


Code:
crystalReportViewer1.ReportSource = @“..\Reports\salesReport.rpt”;