Select random questions from db

Bài dưới gợi ý một số cách lấy random câu hỏi từ csdl

Cú pháp với cơ sở dữ liệu MySQL:

SELECT column FROM table
ORDER BY RAND()
LIMIT 1

Cú pháp với cơ sở dữ liệu PostgreSQL:

SELECT column FROM table
ORDER BY RANDOM()
LIMIT 1

Cú pháp với cơ sở dữ liệu Microsoft SQL Server:

SELECT TOP 1 column FROM table
ORDER BY NEWID()

Cú pháp với cơ sở dữ liệu IBM DB2

SELECT column, RAND() as IDX 
FROM table 
ORDER BY IDX FETCH FIRST 1 ROWS ONLY

Cú pháp với cơ sở dữ liệu Oracle:

SELECT column FROM
( SELECT column FROM table
ORDER BY dbms_random.value )
WHERE rownum = 1

Advertisements

Thiết lập giá trị cho textbox trong RDLC dynamically

Hướng dẫn các bước thực hiện thay đổi giá trị của textbox trong RDLC report một cách tự động:

  1. Add new Report parameter, thiết lập tên cho Parameter (ví dụ Par0)
  2. Chèn thêm một textbox vào report ở vị trí mong muốn
  3. Click chuột phải trên textbox > expression > chọn Parameters và chọn tên của paramter trong danh sách các Parameter của report. Sau khi chọn, code của report như sau: =Parameters!Par0.Value
  4. Viết mã cho trong code muốn gán giá trị cho report

DataSet ds = new DataSet();
da.Fill(ds,”TenTable”);

ReportDataSource rds = new ReportDataSource(“QLLSDataSet_TenTable”, ds.Tables[“TenTable”]);

form.reportViewer1.Reset();
form.reportViewer1.LocalReport.ReportEmbeddedResource = “QLLS.rptHoChieu.rdlc”;
form.reportViewer1.LocalReport.DataSources.Clear();
form.reportViewer1.LocalReport.DataSources.Add(rds);
ReportParameter p = new ReportParameter(“Par0”, “Nội dung cần gán cho textbox”);
form.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { p });
form.reportViewer1.LocalReport.Refresh();
form.reportViewer1.RefreshReport();

Export to excel C#- Xuất dữ liệu ra excel bằng c#

Mã nguồn dưới đây hướng dẫn cách xuất dữ liệu ra excel trong C#

public void ExportToExcel(DataTable dataTable, string ExcelFilePath)
{
try
{
int ColumnsCount;

if (DataTable == null || (ColumnsCount = dataTable.Columns.Count) == 0)
throw new Exception(“ExportToExcel: Null or empty input table!\n”);

// create a new workbook
Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application();
Excel.Workbooks.Add(System.Reflection.Missing.Value);

object misValue = System.Reflection.Missing.Value;

// single worksheet
Microsoft.Office.Interop.Excel._Worksheet Worksheet = (Microsoft.Office.Interop.Excel._Worksheet)Excel.ActiveSheet;

object[] Header = new object[ColumnsCount];

// column headings
for (int i = 0; i < ColumnsCount; i++)
Header[i] = dataTable.Columns[i].ColumnName;

Microsoft.Office.Interop.Excel.Range HeaderRange = Worksheet.get_Range((Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[1, 1]), (Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[1, ColumnsCount]));
HeaderRange.Value2 = Header;
HeaderRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
HeaderRange.Font.Bold = true;

// DataCells
int RowsCount = dataTable.Rows.Count;
object[,] Cells = new object[RowsCount, ColumnsCount];

for (int j = 0; j < RowsCount; j++)
for (int i = 0; i < ColumnsCount; i++)
Cells[j, i] = dataTable.Rows[j][i];

Worksheet.get_Range((Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[2, 1]), (Microsoft.Office.Interop.Excel.Range)(Worksheet.Cells[RowsCount + 1, ColumnsCount])).Value2 = Cells;

// check fielpath
if (ExcelFilePath != null && ExcelFilePath != “”)
{
try
{
Worksheet.SaveAs(ExcelFilePath, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue);

Excel.Visible = true;
}
catch (Exception ex)
{
throw new Exception(“ExportToExcel: Excel file could not be saved! Check filepath.\n”
+ ex.Message);
}
}
else // no filepath is given
{
Excel.Visible = true;
}
}
catch (Exception ex)
{
throw new Exception(“ExportToExcel: \n” + ex.Message);
}
}

Gọi hàm ExportToExcel()

ExportToExcel(table, fileOnDisk);

Set SelectedIndex for DataGridViewComboBoxCell

Đoạn code sau hướng dẫn cách thiết lập DataGridViewComboBox Column trong windows Forms

DataTable dt = null;
private void Form1_Load(object sender, EventArgs e)
{
dt = new DataTable();
dt.Columns.Add(“Category”);
DataRow dr = dt.NewRow();
dr[“Category”] = “Select All”;
dt.Rows.Add(dr);
DataRow row = dt.NewRow();
row[0] = “Cat 1”;
dt.Rows.Add(row);
DataRow row2 = dt.NewRow();
row2[0] = “Cat 2”;
dt.Rows.Add(row2);
DataGridViewComboBoxColumn newColumn = new DataGridViewComboBoxColumn();
newColumn.Name = “Category”;
newColumn.DataSource = dt;
newColumn.DisplayMember = “Category”;
newColumn.ValueMember = “Category”;
dataGridView1.Columns.Add(newColumn);
}

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
this.dataGridView1.Rows[e.RowIndex].Cells[0].Value = dt.Rows[0][0].ToString();
}

The Microsoft.Jet.OLEDB.4.0 – Microsoft.ACE.OLEDB.12.0 provider is not registered on the local machine

Khi sử dụng OLEDB gặp lỗi sau:

The Microsoft.Jet.OLEDB.4.0 hoặc Microsoft.ACE.OLEDB.12.0 provider is not registered on the local machine.

Nguyên nhân lỗi là do máy tính hiện tại đang sử dụng Offices 32 bit nhưng mặc định biên dịch của Visual Studio là Any CPU.

Để giải quyết vấn đề đó, thực hiện theo các hướng dẫn sau:

  • Chọn Project > Properties
  • Trong Tab Build, chọn Build – General
    • Platform target: chọn x86
    • Hình ảnh minh họa

target

  • Menu Build > Rebuild để biên dịch lại dựa án

Thông tin chuỗi kết nối – ConnectionString cấu hình như sau:

ConnectionString = “Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 8.0;data source= fullFileName”;

RememberMe? trong windows forms với C#

Trong cửa sổ login, thường chúng ta hay thấy có hộp checkbox cho phép người dùng ghi nhớ mật khẩu để lần sau không cần phải gõ lại, điều này sẽ thuận tiện cho người dùng khá nhiều.

Đoạn code dưới đây hướng dẫn chúng ta cách thực hiện chức năng RememberMe trong windows forms với C#

Trước hết, chọn Project Solution > Properties > Add thêm các thiết  lập:

settings

  •  Viết code để Lưu và đọc settings từ file .config

ReadSettings() method

private void ReadSettings()
{
if (Properties.Settings.Default.RememberMe == “true”)
{
tbLoginID.Text = Properties.Settings.Default.UserName;
tbPassword.Text = Properties.Settings.Default.Password;
chkRememberMe.Checked = true;
}
else
{
tbLoginID.Text = “”;
tbPassword.Text = “”;
chkRememberMe.Checked = false;
}
}

SaveSettings() method

private void SaveSettings()
{
if (chkRememberMe.Checked)
{
Properties.Settings.Default.UserName = this.tbLoginID.Text;
Properties.Settings.Default.Password = this.tbPassword.Text;
Properties.Settings.Default.RememberMe = “true”;
Properties.Settings.Default.Save();
}
else
{
Properties.Settings.Default.UserName = this.tbLoginID.Text;
Properties.Settings.Default.Password = “”;
Properties.Settings.Default.RememberMe = “false”;
Properties.Settings.Default.Save();
}
}

Code trong form load

//Code for loading form

//Read settings
ReadSettings();

Code trong nút Login của form

//Code for login function

//Save settings
SaveSettings();

 

Confirm khi xóa từ BindingNavigator

Bước 1: Thiết lập thuộc tính DeleteItem = None của điều khiển BindingNavigator

Bước 2: Double click vào DeleteItem và viết đoạn code sau vào sự kiện click của nút Delete

private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
{
    if (MessageBox.Show("Sure you wanna delete?", "Warning", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
    {
        bindingSource1.RemoveCurrent();
    }
}