Một số thủ thuật trong lập trình Visual FoxPro

Cập nhật lúc : 1:57 PM, 02/08/2007
Sử dụng đối tượng FileSystemObject của Visual FoxPro (VFP) bạn có thể dễ dàng xác định được thư mục hệ thống của Windows:

1. Xác định thư mục hệ thống của Windows

Sử dụng đối tượng FileSystemObject của Visual FoxPro (VFP) bạn có thể dễ dàng xác định được thư mục hệ thống của Windows:

oFSO = CREATEOBJECT("Scripting.FileSystemObject")

oFolder = oFso.GetSpecialFolder(1)

? oFolder.Path

Bạn cũng có thể lấy đường dẫn đến thư mục Windows hoặc thư mục Temporary của bản Windows đang chạy khi thay thế 0 hoặc 2 trong dòng .GetSpecialFolder(n)

2. Kết nối ổ đĩa mạng trong chương trình VFP:

Bạn có thể ánh xạ (map) một đĩa mạng hoặc kết nối với một thư mục đã được chia sẻ trên mạng bằng dòng lệnh trong chương trình VFP thông qua đối tượng Windows Scripting Host (WSH) của VFP:

oNetwork = CreateObject("WScript.Network")

oNetwork.MapNetworkDrive("drive",”<share>”,;

[< user name >], [< password >])

Ví dụ:

oNw = CREATEOBJECT("WScript.NetWork")

oNw.MapNetworkDrive("W:", "\\BDI-SVR1\USERS")

3. Kiểm tra sự hoạt động của một kết nối Internet:

Để kiểm tra một kết nối Internet của hệ thống có đang hoạt động hay không trong chương trình VFP, bạn có thể sử dụng hàm tự tạo nhỏ sau. Hàm này sử dụng hàm InternetCheckConnection trong thư viện WININET.DLL để kiểm tra kết nối với Internet

FUNCTION CheckInternetConnection

LPARAMETERS tcWebAddress

DECLARE Integer InternetCheckConnection IN WININET.DLL;

String Url, Long dwFlags, Long Reserved

IF InternetCheckConnection(tcWebAddress,1,0)<>0

RETURN .T.

ELSE

RETURN .F.

ENDIF

Ví dụ cách gọi hàm:

? CheckInternetConnection(“http://www.bdi.gdt.gov.vn”)

4. Chuyển đổi giá trị số của một chuỗi sang một số:

Mỗi một giá trị số trong ứng dụng thường được định dạng theo một kiểu riêng, ví dụ như: 123.456,78 hoặc 123,456.78. Để chuyển đổi từ chuỗi chứa số đã được định dạng thành giá trị nguyên gốc của nó mà không cần quan tâm đến ký tự dùng để nhóm và phân cách các số đã dùng để định dạng, bạn có thể dùng cách sau:

ROUND(EVAL(CHRTRAN(lcVal,".,",""))/100,2)

hoặc:

EVAL(CHRTRAN(CHRTRAN(lcVal,SET("SEPARATOR"), ""),;

SET("POINT"),"."))

5. Tính nhanh số tháng giữa hai giá trị ngày:

Đoạn code nhỏ đơn giản dưới đây có thể giúp bạn tính nhanh số tháng giữa hai giá trị ngày:

ldDate1=CTOD(“01/06/2001”)

ldDate2=CTOD(“16/05/2003”)

? (YEAR(ldDate2)+MONTH(ldDate2)/;

12-YEAR(ldDate1)-MONTH(ldDate1)/12)*12

6. Khắc phục hạn chế số phần tử của hàm ADIR() khi xử lý các thư mục lớn:

Khi cần thao tác với các tập tin ở trong một thư mục có nhiều tập tin (khi dùng hàm ADIR() bị vượt quá giới hạn 65.000 phần tử/mảng), bạn có thể dùng một Cusor để lưu các thông tin của tập tin ở thư mục, rồi truy xuất trên cursor này như đoạn code dưới đây:

tcfolder = "c:\windows"

CREATE CURSOR c_Files ( FileName C(29), ;

FileSize I, DateCreated T, LastAccessed T, ;

LastModified T )

oFSO = CREATEOBJECT('Scripting.FileSystemObject')

oFolder = oFSO.GetFolder(tcFolder)

lnFiles = oFolder.Files.Count

FOR EACH oFile IN oFolder.Files

lcFileName = oFile.Name

lnFileSize = oFile.Size

lddatecreated = oFile.DateCreated

ldlastAccess = oFile.DateLastAccessed

ldlastmodified = oFile.DateLastModified

INSERT INTO c_Files (FileName, FileSize, ;

DateCreated, LastAccessed , LastModified ) ;

VALUES ( lcFileName, lnFileSize, ;

ldDateCreated, ldlastAccess, ldlastmodified )

ENDFOR

7. Tính nhanh số lượng của từng nhóm mẫu tin trong bảng:

Đôi khi trong ứng dụng, bạn cần đếm số lần xuất hiện của một giá trị trong một bảng, bạn có thể dùng câu lệnh SQL để tính nhanh:

Ví dụ, bảng dummy.dbf có cột ID chứa các giá trị như sau:
A

Bạn cần tính để ra bảng kết quả là:

A             3

B             2

C             1

E             1

A

A

B

B

C

E

                         SELECT ID, count(ID) FROM dummy GROUP BY 1

20/421/422/4

16°C

17°C - 24°C

18°C - 22°C

Thay đổi: 0,66 Tổng số GD: 9.740
Tổng KLGD: 137.780.179 Tổng GTGD: 1.819,37 tỷ
Thay đổi: 1,49 Tổng số GD: 76.957
Tổng KLGD: 229.955.020 Tổng GTGD: 5.017,68 tỷ
Ngăn chặn hành vi gian lận thuế
(eFinance Online) - Lợi dụng những sơ hở của hệ thống pháp luật, lợi dụng sự quản lý, sự tha hóa của một số cán bộ......
Hệ thống KBNN từ chối thanh toán vốn đầu tư ước khoảng 40 tỷ đồng
(eFinance Online) - Kho bạc Nhà nước (KBNN) cho biết, thông qua kiểm soát thanh toán vốn đầu tư, hệ thống KBNN đã từ chối ước...
Quý 1/2014: Ngành Hải quan thu ngân sách đạt 53.238 tỷ đồng
(eFinance Online) - Theo Tổng cục Hải quan, tổng thu ngân sách tháng 3/2014 đạt 18.689 tỷ đồng. Lũy kế 3 tháng đầu năm đạt khoảng...
Công ty TNHH MTV Kim loại màu Thái Nguyên thu hơn 134 tỷ đồng từ...
(eFinance Online) - Vào 8h30 sáng ngày 17/4/2014, phiên đấu giá bán 7.096.000 cổ phần lần đầu ra công chúng của Công ty TNHH MTV Kim...
Gói tín dụng 50.000 tỷ đồng: Có giúp thị trường BĐS "tan băng"?
(eFinance Online) - Tại “Hội nghị triển khai chương trình Tín dụng 50 nghìn tỷ đồng ngành Xây dựng” do Tập đoàn Thiên Thanh và Ngân...
Thay đổi mẫu hoá đơn xử lý như thế nào?
(eFinance Online) - Hỏi: Từ ngày 01/07/2013 hoá đơn tự in phải ghi MST địa chỉ của doanh nghiệp cung cấp phần mềm tự in lên...

Liên kết Website Đăng ký tin thư