Export và Import ra tập tin text từ Access

Hiện nay các bạn yêu thích lập trình sử dụng Access là nguồn chứa dữ liệu khá phổ biến vì đơn

giản, dễ quản trị và đáp ứng được yêu cầu công việc. Hôm nay chúng tôi xin giới thiệu một đoạn

code để export và import ra tập tin text từ Access (VB)

Export Text (Flat file) từ Access Ms-Access

Option Explicit

Public Sub Export_Table_2_TextFile()

On Error GoTo LocalErrorHandler

Dim dbCompany As Database

Dim rsGeneral As Recordset

Dim ExpGeneral As PubExpGeneral

Dim blnTab_Text As Boolean

Dim FullName As String

Dim FileHandle As Byte

Dim strFileToExport As String

Dim chkFileExist As String

pdf80 trang | Chuyên mục: Visual Basic 6.0 | Chia sẻ: dkS00TYs | Lượt xem: 1929 | Lượt tải: 5download
Tóm tắt nội dung Export và Import ra tập tin text từ Access, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
or both the customers and orders in the Page_Load() event 
handler. 
Nhận dữ liệu từ customers and orders trong sự kiện Page_Load() 
using System; 
using System.Data; 
using System.Data.SqlClient; 
using System.Drawing; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.HtmlControls; 
using System.Configuration; 
namespace MasterDetail 
{ 
public class CustomerOrderDataGrid : System.Web.UI.Page 
{ 
protected DataGrid CustomerDataGrid; 
private DataSet ds = new DataSet(); 
private void Page_Load(object sender, System.EventArgs e) 
{ 
string sqlStmt = ''SELECT * FROM Customers; SELECT * FROM Orders''; 
string conString = ''server=localhost;database=Northwind;uid=sa;pwd=;''; 
SqlDataAdapter sda = new SqlDataAdapter(sqlStmt, conString); 
sda.Fill(ds); 
ds.Tables[0].TableName = ''Customers''; 
ds.Tables[1].TableName = ''Orders''; 
CustomerDataGrid.DataSource = ds.Tables[''Customers'']; 
CustomerDataGrid.DataBind(); 
} 
} 
} 
Trong câu SQL chúng ta chọn 2 result sets và sử dụng phương thức Fill() để tạo 2 DataTables, 
chúng tôi set thuộc tính TableName cho mỗi DataTables và bind CustomerDataGrid. 
Lưu ý: Chúng ta khai báo DataSet (ds) ở mức lớp. Việc này sẽ cho phép chúng ta có thể kết nối 
đến DataSet từ sự kiện OnItemDataBound. Trong sự kiện OnItemDataBound chúng ta có thể 
construct động một DataGrid, và bind nó chỉ đến các record trong Orders DataTable có cùng giá 
trị CustomerID như CustomerID của dòng hiện thời. 
Bạn hãy xem sự kiện OnItemDataBound() 
protected void CustomerDataGrid_OnItemDataBound(object sender, DataGridItemEventArgs e) 
{ 
if(e.Item.ItemType == ListItemType.Item || 
e.Item.ItemType == ListItemType.AlternatingItem) 
{ 
DataGrid OrdersDataGrid = new DataGrid(); 
OrdersDataGrid.BorderWidth = (Unit)1; 
OrdersDataGrid.CellPadding = 4; 
OrdersDataGrid.CellSpacing = 0; 
OrdersDataGrid.GridLines = GridLines.Horizontal; 
OrdersDataGrid.BorderColor = Color.FromName(''Black''); 
OrdersDataGrid.ItemStyle.Font.Name = ''Verdana''; 
OrdersDataGrid.ItemStyle.Font.Size = FontUnit.XSmall; 
OrdersDataGrid.AlternatingItemStyle.BackColor = Color.FromName(''LightGray''); 
OrdersDataGrid.ShowHeader = true; 
OrdersDataGrid.HeaderStyle.BackColor = Color.FromName(''Black''); 
OrdersDataGrid.HeaderStyle.ForeColor = Color.FromName(''White''); 
OrdersDataGrid.HeaderStyle.Font.Bold = true; 
OrdersDataGrid.HeaderStyle.Font.Size = FontUnit.XSmall; 
OrdersDataGrid.AutoGenerateColumns = false; 
BoundColumn bc = new BoundColumn(); 
bc.HeaderText = ''Order ID''; 
bc.DataField = ''OrderID''; 
bc.ItemStyle.Wrap = false; 
OrdersDataGrid.Columns.Add(bc); 
bc = new BoundColumn(); 
bc.HeaderText = ''Order Date''; 
bc.DataField = ''OrderDate''; 
bc.DataFormatString=''{0:d}''; 
bc.ItemStyle.Wrap = false; 
OrdersDataGrid.Columns.Add(bc); 
bc = new BoundColumn(); 
bc.HeaderText = ''Required Date''; 
bc.DataField = ''RequiredDate''; 
bc.DataFormatString=''{0:d}''; 
bc.ItemStyle.Wrap = false; 
OrdersDataGrid.Columns.Add(bc); 
bc = new BoundColumn(); 
bc.HeaderText = ''Shipped Date''; 
bc.DataField = ''ShippedDate''; 
bc.DataFormatString=''{0:d}''; 
bc.ItemStyle.Wrap = false; 
OrdersDataGrid.Columns.Add(bc); 
DataView _orders = ds.Tables[''Orders''].DefaultView; 
_orders.RowFilter = ''CustomerID=''' + e.Item.Cells[0].Text + '''''; 
OrdersDataGrid.DataSource = _orders; 
OrdersDataGrid.DataBind(); 
e.Item.Cells[3].Controls.Add(OrdersDataGrid); 
} 
} 
Tạo một VB Component để lấy thông tin Connection đến CSDL của bạn 
Đầu tiên chúng ta tạo các thông số sau trong tập tin config.web 
Bây giờ chúng ta tạo tập tin dbConn.vb 
Imports System 
Imports System.Web 
Imports System.Collections 
Namespace WebDB 
Public Class WebDBconn 
Shared m_ConnectionString As String 
Shared ReadOnly Property ConnectionString As String 
Get 
If m_ConnectionString = '''' Then 
Dim appsetting As Hashtable = CType(HttpContext.Current.GetConfig(''appsettings''), Hashtable) 
m_ConnectionString = CStr(appsetting(''DBConnString'')) 
If m_ConnectionString = '''' Then 
throw new Exception(''Database Connection Value not set in Config.web'') 
End if 
End If 
' Trả về giá trị kết nối 
return m_connectionString 
End Get 
End Property 
End Class 
End Namespace 
Bây giờ chúng ta tạo tập tin .dll. Tạo môt tâp tin batch, tên là MakeDll.bat và đặt cùng một thư 
mục với .dll 
set odir=c:\temp\dbConn.dll 
set assemblies=c:\winnt\complus\v2000.14.1812\System.Web.dll 
vbc /t:library /out:%odir% /r:%assemblies% dbConn.vb 
Chạy tập tin batch, sao chép dbconn.dll đến thư mục bin của web của bạn và tạo tập tin .apsx 
sau: 
<%@ Page Description=''ASP+ document'' EnableSessionState=''false'' 
MaintainState=''false'' %> 
Sub Page_Load(sender As Object, e As EventArgs) 
response.write(WebDBconn.ConnectionString) 
End Sub 
Những mẹo cần biết khi lập trình .NET 
Chúng tôi xin đưa ra các phương pháp giải quyết các vấn đề mà các nhà phát triển .NET thường 
gặp. Hy vọng chúng sẽ giúp ích cho các bạn. 
1. Làm thế nào giới hạn một chương trình chỉ chạy một lần 
Trong form chính đổi thành như sau: 
static void Main() 
{ 
Process ThisProcess = Process.GetCurrentProcess(); 
Process [] AllProcesses = Process.GetProcessesByName(ThisProcess.ProcessName); 
if (AllProcesses.Length > 1) 
{ 
 MessageBox.Show(ThisProcess.ProcessName + '' is already running'', 
ThisProcess.ProcessName, MessageBoxButtons.OK, MessageBoxIcon.Error); 
} 
else 
{ 
 Application.Run(new MainForm()); 
} 
} 
2. Di chuyển con trỏ đến dòng và cột xác định (RichTextBox) 
 Dùng phương thức GoToLineAndColumn 
public void GoToLineAndColumn(int Line, int Column) 
{ 
Cursor.Current = Cursors.WaitCursor; 
int Offset = 0; 
int i = 0; 
foreach (String L in Lines) 
{ 
if (i < Line - 1) 
{ 
Offset += L.Length + 1; 
} 
else 
{ 
break; 
} 
i++; 
} 
Select(Offset + Column - 1, 0); 
Cursor.Current = Cursors.Arrow; 
} 
3.Xác định cột hiện thời. (RichTextBox ) 
public int GetColumn() 
{ 
int LineNumber = GetLineFromCharIndex(SelectionStart); 
int LineOffset = 0; 
int i = 0; 
foreach (String Line in Lines) 
{ 
if (i < LineNumber) 
{ 
LineOffset += Line.Length + 1; 
} 
else 
{ 
break; 
} 
i++; 
} 
return SelectionStart - LineOffset + 1; 
} 
3. Chạy JScript.NET trong ứng dụng C# 
Tạo một JScript.NET ''package'' bao gồm một phương thức toàn cục (public) 
package JScript 
{ 
class Eval 
{ 
public function DoEval(expr : String) : String 
{ 
return eval(expr); 
} 
} 
} 
try { Result = (int) Application.UserAppDataRegistry.GetValue(''Resolution''); } catch(Exception) 
{ } 
Và thêm một reference đến chương trình C# của bạn và sử dụng 
JScript.Eval E = new JScript.Eval(); 
String Expression = ExpressionTextBox.Text; 
try 
{ 
ResultTextBox.Text = E.DoEval(Expression); 
} 
catch(Microsoft.JScript.JScriptException jse) 
4.Lưu thông số cấu hình vào Registry 
Đầu tiên vào AssemblyInfo.cs và bỏ tất cả các thông số từ AssemblyVersion: 
[assembly: AssemblyVersion(''1.0.0.0'')] 
Mặc dù mỗi lần bạn build ứng dụng khoá register sẽ thay đổi. Lưu giá trị bằng cách sau 
Application.UserAppDataRegistry.SetValue(''Value'', Value); 
Nạp lại các thông số : 
try 
{ 
Value = (int) Application.UserAppDataRegistry.GetValue(''Value''); 
} 
catch(Exception) 
{ 
} 
SQL Server: UDF IsValidNumber 
Hàm trong SQL Server rất hữu dụng cho các bạn. Hàm kiểm tra một chuỗi có phải là một số 
không. Hàm này chấp nhận một chuỗi và kiểm tra nếu chuỗi có bao gồm các kí tự không phải 0-9 
hoặc dấu thập phân (decimal ). Hàm trả về 0 nếu đúng là số; 1 nếu không phải dạng số. 
CREATE FUNCTION udfIsValidNumber 
( 
@thestring varchar(50), 
@numdecimals int = 0 
) 
RETURNS int 
AS 
BEGIN 
DECLARE @not int, 
@ascii int, 
@pos int, 
@dec int 
SET @pos = 1 
SET @not = 0 
SET @dec = 0 
--first check to see if it is a valid number 
IF @thestring IS NULL 
SET @not =1 
IF len(@thestring) = 0 
SET @not = 1 
WHILE @pos<= len(@thestring) 
BEGIN 
SELECT @ascii = ascii(substring(@thestring, @pos, 1)) 
IF (@ascii > 57) SET @not = 1 
IF (@ascii < 46) SET @not = 1 
IF (@ascii = 47) SET @not = 1 
IF (@ascii = 46) SET @dec = @dec + 1 
SET @pos = @pos + 1 
END 
IF @dec > 1 SET @not = 1 
IF @not > 0 RETURN @not -- invalid number 
--valid number now check number of decimals 
SELECT @dec = charindex('.',@thestring) 
SET @pos = len(@thestring) - @dec -- find the number of characters right of decimal 
IF @pos > @numdecimals SET @not = 1 
RETURN @not 
END 
ADO/SQL Server nText inserts/updates 
Rất nhiều lập trình viên hỏi làm thế nào để thêm (insert) dữ liệu vào 
trong một trường nText vào SQL Server với ADO. Phần lớn các câu 
SQL thường dùng string chuẩn và nó sẽ gặp vấn đề khi cập nhật các 
ký tự đặc biệt. Sau đây chúng tôi sẽ giúp các bạn tránh được các lỗi 
thường gặp đó. 
Dim lRecs 
Dim moADOCon 
Dim moADOCom 
Set moADOCon = Server.CreateObject(''ADODB.Connection'') 
Set moADOCom = Server.CreateObject(''ADODB.Command'') 
moADOCon.Open ''your connection string'' 
With moADOCom 
 .ActiveConnection = moADOCon 
 .CommandText = ''spPost'' 
 .CommandType = adCmdStoredProc 
 .Parameters.Append .CreateParameter(''@RETURN_VALUE'', 
adInteger, adParamReturnValue,0) 
 .Parameters.Append .CreateParameter(''@ReplyToID'', adInteger, 
adParamInput, , msPostID) 
 .Parameters.Append .CreateParameter(''@fk_author_id'', 
adInteger, adParamInput, , clng(Session(''intMemberID''))) 
 .Parameters.Append .CreateParameter(''@fk_interest_id'', 
adInteger, adParamInput, , msInterestID) 
 .Parameters.Append .CreateParameter(''@subject'', adVarWChar, 
adParamInput, 50, msSubject) 
 .Parameters.Append .CreateParameter(''@bodytext'', 
adVarWChar, adParamInput, 1073741823, msBodyText) 
 .Execute lRecs, , adExecuteNoRecords 
End With 
moADOCon.Close 
Set moADOCom = nothing 
Set moADOCon = nothing 

File đính kèm:

  • pdfMeolaptrinh.pdf