PDA

View Full Version : [dis] Câu lạc bộ Visual Foxpro Hấp dẫn nhất từ trước đến nay !!!!!!



Pages : 1 2 3 [4] 5 6 7 8 9 10

toikhongvao
03-02-2010, 10:55
Do m không biết file tkbt.prg có tham số là cn để dùng cho mục đích gì nên m chỉ tạm demo ý tưởng như sau. Trong đó biến cn được tạm đặt theo biến i (tăng dần)

*----------------
cFolderDATA=[D:\BAOCAO\]
LOCAL nSoLuongTapTin,i
LOCAL ARRAY aMangTenTapTin(1,1)
nSoLuongTapTin=ADIR(aMangTenTapTin,cFolderDATA+[PS*.DBF])

FOR i=1 TO nSoLuongTapTin
namthang=SUBSTR(aMangTenTapTin(i,1),3,4)
cn=ALLTRIM(STR(i))
DO tkbt WITH namthang,cn
ENDFOR
*-------------

Xin giúp mình, với file mình đưa, bây giờ thay vì khi chạy phải dùng lệnh do...with namthang,cn. Giờ mình muốn tạo một dialog box để người dùng điền tham số namthang và cn rồi bấm nút chạy thì nó sẽ làm .

tayngangvfp
04-02-2010, 10:25
Xin giúp mình, với file mình đưa, bây giờ thay vì khi chạy phải dùng lệnh do...with namthang,cn. Giờ mình muốn tạo một dialog box để người dùng điền tham số namthang và cn rồi bấm nút chạy thì nó sẽ làm .

VFP theo cách lập trình trực quan nên việc tạo form là rất dễ dàng.
Vì thế để giải quyết yêu cầu như trên của bạn thì chỉ việc mở VFP tạo 1 form trong đó có 2 tetbox để nhận 2 tham số namthang,cn là xong thôi.

[=========> Bổ sung bài viết <=========]


Mình có vấn đề sao không biết cách làm mong các bạn chỉ dẫn giúp:

Minh có một table tam_vay tính ngày đáo hạn có 3 trường là ngayph, kyhan, ngaydh
Giả sử ngaph=15/01/2010, kyhan=5 =>ngaydh=15/06/2010

đoạn code sau (của anh tayngangvfp) thì đáp ứng được yêu cầu đó:
replace tam_vay.ngaydh with GOMONTH(tam_vay.ngayph,tam_vay.kyhan)

Nhưng có vấn đề phát sinh là:
Ngày đáo hạn nếu ngay ngày chủ nhật thì cần phải + thêm 1 ngày để cho nó thành ngày thứ 2 trong tuần.
Và một vấn đề nữa, ngày đáo hạn là các ngày lễ như:01/01, 30/04, 01/05, 02/09, 10/03, các ngày tết ÂL...theo quy định chung thì cũng cộng thêm 1 ngày sao cho hợp lý.

Code trên chưa làm được như vậy.
Mong chỉ dẫn!

Để giải quyết yêu cầu này thì phải xác định được các ngày nghỉ âm lịch (30,mùng 1,2,3 TẾt, giỗ tổ). M đã dùng cách tính âm lịch của tác giả Hồ Ngọc Đức: http://www.informatik.uni-leipzig.de/~duc/amlich/ và cũng đã chuyển từ code của VB của tác giả này sang code VFP (vấn đề chuyển đổi chính xác từ dương lịch sang âm lịch thì mình chưa kiểm tra kỹ, nhờ các bạn test giúp).

Trong đoạn c/t dưới đây, m tính trên quy định những ngày nghỉ hiện nay: 1/1DươngLịch, Giỗ tổ 10/3 Âm lịch, 30/4DL, 1/5DL 2/9DL và 4 ngày Tết âm lịch. C/t này chỉ mang tính chất demo cách tính ngày tháng và cũng không tính đến việc nghỉ bù.

http://www.mediafire.com/file/wo2dntzjzgm/thuvienlich.prg

dukich75
05-02-2010, 05:30
Mình hiện tại rất muốn tham gia CLB VFP, mục đích trao đổi kinh nghiệm, chia sẽ công việc.
Mình đang sống ở TP.HCM.
Mong được gia nhập CLB VFP và được OFF thường xuyên cùng các bạn.
Thân !

[=========> Bổ sung bài viết <=========]

Đã 1 tuần xin gia nhập CLB VFP xì-gòn mà không thấy hồi âm.
Anh tayngangvfp có thể tổ chức CLB này đc không?
mình tin mỗi tuần 1 người mới, CLB VFP xì-gòn sẽ đông thui.

danngudien
08-02-2010, 09:53
Tôi có file dulieu.dbf lưu trữ dữ liệu thi ai có cách bảo mật tốt giúp tôi với Bởi dữ liệu tôi luôn bị sưa dổi do người khác.
Xin chân thành cám ơn

tayngangvfp
08-02-2010, 10:49
Tôi có file dulieu.dbf lưu trữ dữ liệu thi ai có cách bảo mật tốt giúp tôi với Bởi dữ liệu tôi luôn bị sưa dổi do người khác.
Xin chân thành cám ơn

Bạn tham khảo 1 cách để bảo mật File .dbf
http://www.ddth.com/showthread.php?t=308558



Mình hiện tại rất muốn tham gia CLB VFP, mục đích trao đổi kinh nghiệm, chia sẽ công việc.
Mình đang sống ở TP.HCM.
Mong được gia nhập CLB VFP và được OFF thường xuyên cùng các bạn.
Thân !

[=========> Bổ sung bài viết <=========]

Đã 1 tuần xin gia nhập CLB VFP xì-gòn mà không thấy hồi âm.
Anh tayngangvfp có thể tổ chức CLB này đc không?
mình tin mỗi tuần 1 người mới, CLB VFP xì-gòn sẽ đông thui.

M cũng hy vọng chuyên mục về VFP ngày càng có thêm nhiều thành viên tham gia thảo luận.

Còn việc tổ chức OFF thì mình nghĩ rất khó vì các thành viên quan tâm đến Fox ở đây rất ít mà lại ở tại nhiều địa phương khác nhau. Tuy nhiên nếu các bạn nào thích thì cứ lên tiếng để gây dựng phong trào xem sao.

dukich75
08-02-2010, 12:26
Bạn tham khảo 1 cách để bảo mật File .dbf
http://www.ddth.com/showthread.php?t=308558
M cũng hy vọng chuyên mục về VFP ngày càng có thêm nhiều thành viên tham gia thảo luận.

Còn việc tổ chức OFF thì mình nghĩ rất khó vì các thành viên quan tâm đến Fox ở đây rất ít mà lại ở tại nhiều địa phương khác nhau. Tuy nhiên nếu các bạn nào thích thì cứ lên tiếng để gây dựng phong trào xem sao.

Cám ơn bạn tayngangvfp đã có lời quan tâm.
Nếu tình hình vậy thì mình xin đặt cục gạch trước.
Khi nào có CLB VFP SG mình quyết nộp đơn.

dung_kg
08-02-2010, 15:28
Xin cảm ơn TayngangVFP và hoangpnt349 đã cho đọan code để tính ngày đáo hạn. Đoạn code rất hay, mình sẽ tìm hiểu và ứng dụng vào chình trình của mình. Mình còn một câu hỏi nữa, mong chỉ dẫn. Mình có đoàn code sau dùng hàm if lồng nhau nên rất dài, mình muốn rút gọn bằng 1 hàm khác như 'case of'...Mong chỉ dẫn:
if alltr(thisform.t_sotkno.value)="02" then
thisform.t2.visible=.T.
thisform.t3.visible=.F.
thisform.t4.visible=.F.
else
if alltr(thisform.t_sotkno.value)="03" then
thisform.t2.visible=.T.
thisform.t3.visible=.T.
thisform.t4.visible=.F.
else
if alltr(thisform.t_sotkno.value)="04" then
thisform.t2.visible=.T.
thisform.t3.visible=.T.
thisform.t4.visible=.T.
else
thisform.t2.visible=.F.
thisform.t3.visible=.F.
thisform.t4.visible=.F.
endif
endif
endif

danngudien
09-02-2010, 05:29
Có cách nào khi chương trình chạy thi combo nhận giá trị đầu tiên của dữ liệu không cần phải click các Bác giúp với nhé!
Xin cám ơn

luu_luu
09-02-2010, 08:33
Có cách nào khi chương trình chạy thi combo nhận giá trị đầu tiên của dữ liệu không cần phải click các Bác giúp với nhé!
Xin cám ơn
chưa hiểu lắm bạn ơi, giải thích thêm chút nữa đi

[=========> Bổ sung bài viết <=========]


Xin cảm ơn TayngangVFP và hoangpnt349 đã cho đọan code để tính ngày đáo hạn. Đoạn code rất hay, mình sẽ tìm hiểu và ứng dụng vào chình trình của mình. Mình còn một câu hỏi nữa, mong chỉ dẫn. Mình có đoàn code sau dùng hàm if lồng nhau nên rất dài, mình muốn rút gọn bằng 1 hàm khác như 'case of'...Mong chỉ dẫn:
if alltr(thisform.t_sotkno.value)="02" then
thisform.t2.visible=.T.
thisform.t3.visible=.F.
thisform.t4.visible=.F.
else
if alltr(thisform.t_sotkno.value)="03" then
thisform.t2.visible=.T.
thisform.t3.visible=.T.
thisform.t4.visible=.F.
else
if alltr(thisform.t_sotkno.value)="04" then
thisform.t2.visible=.T.
thisform.t3.visible=.T.
thisform.t4.visible=.T.
else
thisform.t2.visible=.F.
thisform.t3.visible=.F.
thisform.t4.visible=.F.
endif
endif
endif
dùng DO CASE thử xem

DO CASE
CASE alltr(thisform.t_sotkno.value)="02"
thisform.t2.visible=.T.
thisform.t3.visible=.F.
thisform.t4.visible=.F.

CASE alltr(thisform.t_sotkno.value)="03" then
thisform.t2.visible=.T.
thisform.t3.visible=.T.
thisform.t4.visible=.F.

CASE alltr(thisform.t_sotkno.value)="04" then
thisform.t2.visible=.T.
thisform.t3.visible=.T.
thisform.t4.visible=.T.
OTHERWISE
thisform.t2.visible=.F.
thisform.t3.visible=.F.
thisform.t4.visible=.F.
ENDCASE

dung_kg
09-02-2010, 13:44
cam on ban luu_luu, minh lam duoc roi.

alone_night
09-02-2010, 15:29
Có cách nào khi chương trình chạy thi combo nhận giá trị đầu tiên của dữ liệu không cần phải click các Bác giúp với nhé!
Xin cám ơn

đặt combo.listindex = 1

danngudien
09-02-2010, 20:04
đặt combo.listindex = 1

Cám ơn bác nhiều nhé
Nhân dịp năm mới Chúc các Bác và gia đình sức khoẻ!

hongquangtn
10-02-2010, 16:08
Chào cả nhà.
đã viết chương trình VFP đã lâu, tuy nhiên tài liệu thì ít, tiếng anh thì vớ vẩn, tự nghiên cứu nên quá mất công, tuy nhiên để viết chưong trình liên quan đến cơ sở dữ liệu thì VFP là quá nhanh và ổn. chỉ có điều tự làm nên có nhiều vướng mắc không biết hỏi ai. Hom nay thấy diễn đàn này thích quá.
cám ơn các thành viên tích cực, có quá nhiều kinh nghiệm bổ ích quá, đặc biệt là TayngangVFP, tuy nhiên vì dùng từ FOX for DOS nên khoản OLE, activex .. quá mù mờ, nên đọc nhiều đoạn Code mẫu mà không hiểu lắm. Xin các bạn chỉ giáo giúp có thể đọc tài liệu nào chỉ dẫn về các vấn đề này.
Xin cảm ơn nhiều

dukich75
10-02-2010, 22:31
Xin cảm ơn TayngangVFP và hoangpnt349 đã cho đọan code để tính ngày đáo hạn. Đoạn code rất hay, mình sẽ tìm hiểu và ứng dụng vào chình trình của mình. Mình còn một câu hỏi nữa, mong chỉ dẫn. Mình có đoàn code sau dùng hàm if lồng nhau nên rất dài, mình muốn rút gọn bằng 1 hàm khác như 'case of'...Mong chỉ dẫn:
if alltr(thisform.t_sotkno.value)="02" then
thisform.t2.visible=.T.
thisform.t3.visible=.F.
thisform.t4.visible=.F.
else
if alltr(thisform.t_sotkno.value)="03" then
thisform.t2.visible=.T.
thisform.t3.visible=.T.
thisform.t4.visible=.F.
else
if alltr(thisform.t_sotkno.value)="04" then
thisform.t2.visible=.T.
thisform.t3.visible=.T.
thisform.t4.visible=.T.
else
thisform.t2.visible=.F.
thisform.t3.visible=.F.
thisform.t4.visible=.F.
endif
endif
endif

Theo cách mình hay viết thì như thế này:


WITH THISFORM
STORE .F. TO .t2.Visible, .t3.Visible, .t4.Visible && "01"
DO CASE
CASE .t_sotkno.Value = "02"
STORE .T. TO .t2.Visible,
CASE .t_sotkno.Value = "03"
STORE .T. TO .t2.Visible, .t3.Visible,
CASE .t_sotkno.Value = "04"
STORE .T. TO .t2.Visible, .t3.Visible, .t4.Visible
ENDCASE
ENDWITH


[=========> Bổ sung bài viết <=========]


Chào cả nhà.
đã viết chương trình VFP đã lâu, tuy nhiên tài liệu thì ít, tiếng anh thì vớ vẩn, tự nghiên cứu nên quá mất công, tuy nhiên để viết chưong trình liên quan đến cơ sở dữ liệu thì VFP là quá nhanh và ổn. chỉ có điều tự làm nên có nhiều vướng mắc không biết hỏi ai. Hom nay thấy diễn đàn này thích quá.
cám ơn các thành viên tích cực, có quá nhiều kinh nghiệm bổ ích quá, đặc biệt là TayngangVFP, tuy nhiên vì dùng từ FOX for DOS nên khoản OLE, activex .. quá mù mờ, nên đọc nhiều đoạn Code mẫu mà không hiểu lắm. Xin các bạn chỉ giáo giúp có thể đọc tài liệu nào chỉ dẫn về các vấn đề này.
Xin cảm ơn nhiều

Vì mình ko thể upload lên DĐ được, bạn vui lòng để lại email, mình send wa cho bạn.

hongquangtn
11-02-2010, 19:15
thank truoc nhe
email cua tui la nguyenkhanhquyen@gmail.com

dukich75
11-02-2010, 23:37
thank truoc nhe
email cua tui la nguyenkhanhquyen@gmail.com

Đã mail cho bạn rồi. Chúc vui.

remi9x
12-02-2010, 15:38
chào bạn mình gặp phải 1 file như thế này
http://img.photo.zing.vn/file_uploads/gallery/w642h/2010/02/12/02/59281265960375.jpg
phải mở và đọc nó như thế nào với VFP, link dow đây ạ: http://www.mediafire.com/?w5yjytyzv3t chỉ cho em cách mở nó với nhé, nó báo chữ toàn ô vuông thôi

hongquangtn
13-02-2010, 16:47
Nay Remi9x
file nay mo binh thuong, chi thieu file CDX
hinh nhu remi9x khong dung VFP de mo ma mo bang NOTEPAD

danngudien
14-02-2010, 00:27
Năm mới đến đến Chúc cả nhà vạn sự như ý!

dukich75
15-02-2010, 01:05
Sẳn báo danh 2010 tiếp tục theo dõi forum VFP
Chúc các anh chị luôn vui khỏe, trí tuệ luôn minh mẫn để vs cùng VFP nhé.

remi9x
16-02-2010, 23:51
mình mở được rồi...hihi, thanks các bác đã chỉ giúp em, còn file này thì chưa mở được có bác nào biết cách mở File này trong Foxpro ko? http://www.mediafire.com/?y0tzzgiknwy em xin cảm ơn, năm mới tốt lành nhớ

chip44
21-02-2010, 09:25
Mình có DBF dạng:

Namef (C) valuef (N)

serial1 200
serial37 546
cus1 3000
cus2 9000
fil 744
can 999
home 866
... ...

Giờ mình muốn tạo ra các biến tương ứng bằng lệnh Scan thì phải làm như thế nào? Đã làm như sau nhưng báo lỗi ở dòng Store:
...
Scan
m.ten = allt(namef)
m.so = tran(valuef)
stor m.so to (m.ten)
Ends
...
Mong được giúp đỡ!

trichpha
21-02-2010, 13:53
Mình có DBF dạng:

Namef (C) valuef (N)

serial1 200
serial37 546
cus1 3000
cus2 9000
fil 744
can 999
home 866
... ...

Giờ mình muốn tạo ra các biến tương ứng bằng lệnh Scan thì phải làm như thế nào? Đã làm như sau nhưng báo lỗi ở dòng Store:
...
Scan
m.ten = allt(namef)
m.so = tran(valuef)
stor m.so to (m.ten)
Ends
...
Mong được giúp đỡ!

Scan
&namef.=&valuef.
Ends

dinhanhency
21-02-2010, 14:11
Nếu bạn đã khai báo biến rồi thì câu lệnh gán trong scan m.ten = allt(namef) là ok.

Câu lệnh stor m.so to (m.ten) ??? m.so là biến đã khởi tạo giá trị chưa???.
Sao lại dùng lệnh kiểu như thế??? Gán tên 2 lần???. Hoặc bạn nhầm lẫn câu lệnh store.

chip44
21-02-2010, 15:49
Nếu bạn đã khai báo biến rồi thì câu lệnh gán trong scan m.ten = allt(namef) là ok.

Câu lệnh stor m.so to (m.ten) ??? m.so là biến đã khởi tạo giá trị chưa???.
Sao lại dùng lệnh kiểu như thế??? Gán tên 2 lần???. Hoặc bạn nhầm lẫn câu lệnh store.

Với DBF trên, mình muốn quét qua và khởi tạo biến luôn đó.
Ví dụ, sau khi mình khai báo bằng lệnh Scan trên (nếu Ignore) thì sau đó m.fil = 774, m.serial37 = 564......
Như vậy, trên 1 DBF có nhiều record đến mấy thì cũng chỉ cần quét qua 1 lần để gán như vậy cho nhanh. Tất nhiên trường namef của mình không có tên giống nhau.
**********
Bổ xung bài viết:
Đoạn code trên của mình bắt đầu lỗi khi quét đến dòng thứ 2.
**********
Đã tìm ra nguyên nhân và đã xử lý xong!
Cảm ơn các bạn!

ngthva
22-02-2010, 09:51
Tôi mới tham gia diễn đàn nhờ các bạn giúp đỡ chỉ giùm,
tôi có 1 file "dbf" giaovien. Tôi muốn tạo 1 form tìm kiếm và giáo viên tự
đặt mật khẩu và mở mẫu tin của mình để bổ sung thông tin.

dongnamnb
22-02-2010, 10:39
Mình không rành về VPF lắm, nhờ các bạn giúp cho việc này:
Mình có một file TheoDoi.pdf có trường Ngay kiểu date
Bây giờ mình muốn muốn viết câu lệnh để update lại trường ngày như sau: giữ nguyên ngày, tháng và giảm năm đi 1 đơn vị
VD trường ngày của mình đang lưu các giá trị:
01/03/2010
02/04/2010
03/05/2010
Sau khi chạy lệnh update thì sẽ chở thành:
01/03/2009
02/04/2009
03/05/2009

Mong sớm nhận được hồi âm

dukich75
22-02-2010, 11:56
Đầu tiên đính chính bạn tên file là theodoi.dbf chứ ko phải pdf
Muốn làm vậy bạn chỉ cần mở VFP và thực hiện 4 lệnh sau:


SET DEFA TO [Thư mục lưu file theodoi.dbf]
USE theodoi.dbf SHAR in 0 alia TD
REPL ALL NGAY with NGAY-365
USE in TD

Nếu khác năm 2010 thì bạn cần viết thêm 1 hàm phân biệt năm nhuận và ko nhuận.
Chúc vui

dinhanhency
22-02-2010, 12:02
Với DBF trên, mình muốn quét qua và khởi tạo biến luôn đó.
Ví dụ, sau khi mình khai báo bằng lệnh Scan trên (nếu Ignore) thì sau đó m.fil = 774, m.serial37 = 564......
Như vậy, trên 1 DBF có nhiều record đến mấy thì cũng chỉ cần quét qua 1 lần để gán như vậy cho nhanh. Tất nhiên trường namef của mình không có tên giống nhau.
**********
Bổ xung bài viết:
Đoạn code trên của mình bắt đầu lỗi khi quét đến dòng thứ 2.
**********
Đã tìm ra nguyên nhân và đã xử lý xong!
Cảm ơn các bạn!

Ok, Bạn có thể dùng lệnh Scatter memvar để tạo ra biến tướng ứng với trường trong bảng mà không cần khai báo biến.


SELECT ALIAS
SCAN
SCATTER MEMVAR FIELD A,B,C
END SCAN

remi9x
22-02-2010, 15:17
các bác giúp em giải mã đoạn code này với
http://www.mediafire.com/?y0tzzgiknwy em xin cảm ơn, năm mới tốt lành nhớ

ngthva
23-02-2010, 08:55
Tôi mới tham gia diễn đàn nhờ các bạn giúp đỡ chỉ giùm,
tôi có 1 file "dbf" giaovien. Tôi muốn tạo 1 form tìm kiếm và giáo viên tự
đặt mật khẩu và mở mẫu tin của mình để bổ sung thông tin.

Lâu quá sao không có bác nào giúp vậy ?

luu_luu
23-02-2010, 09:54
hình như bạn muốn quản lý nhân sự thông quan file dbf giaovien có phải không, theo mình thì trước khi mở file giaovien.dbf thì bạn phải làm bước kiểm tra tên & mật khẩu thông qua form tìm kiếm dựa trên 1 file DBF khác thí dụ kiemtra.dbf <có hai field ten c(50),matkhau m>, nếu nhập tên và mật khẩu đúng trong file kiemtra.dbf thì được mở file giaovien và cập nhật, nếu không thì đóng tất cả file và thóat ra.....
chú ý khi kiểm tra tên & mật khẩu là đúng, thì sau khi mở file, bạn phải dùng lệnh SET FILTER TO ten=mten (mten là tên nhập trên form tìm kiếm) để cập nhật đúng tên mình thôi

ngthva
23-02-2010, 10:36
hình như bạn muốn quản lý nhân sự thông quan file dbf giaovien có phải không, theo mình thì trước khi mở file giaovien.dbf thì bạn phải làm bước kiểm tra tên & mật khẩu thông qua form tìm kiếm dựa trên 1 file DBF khác thí dụ kiemtra.dbf <có hai field ten c(50),matkhau m>, nếu nhập tên và mật khẩu đúng trong file kiemtra.dbf thì được mở file giaovien và cập nhật, nếu không thì đóng tất cả file và thóat ra.....
chú ý khi kiểm tra tên & mật khẩu là đúng, thì sau khi mở file, bạn phải dùng lệnh SET FILTER TO ten=mten (mten là tên nhập trên form tìm kiếm) để cập nhật đúng tên mình thôi


Mình cám ơn bạn luu_luu nhiều lắm để mình thư nhé!

[=========> Bổ sung bài viết <=========]

giaovien

--------------------------------------------------------------------------------

hình như bạn muốn quản lý nhân sự thông quan file dbf giaovien có phải không, theo mình thì trước khi mở file giaovien.dbf thì bạn phải làm bước kiểm tra tên & mật khẩu thông qua form tìm kiếm dựa trên 1 file DBF khác thí dụ kiemtra.dbf <có hai field ten c(50),matkhau m>, nếu nhập tên và mật khẩu đúng trong file kiemtra.dbf thì được mở file giaovien và cập nhật, nếu không thì đóng tất cả file và thóat ra.....
chú ý khi kiểm tra tên & mật khẩu là đúng, thì sau khi mở file, bạn phải dùng lệnh SET FILTER TO ten=mten (mten là tên nhập trên form tìm kiếm) để cập nhật đúng tên mình thôi

Mình làm rồi nhưng chưa được, bạn có thể cho mình xin code tìm kiếm để đưa vào command button được không? Nếu được mình cảm ơn bạn nhiều

luu_luu
24-02-2010, 08:32
file kiemtra và giaovien mình nghĩ bạn nên thêm 1 field ms c(3)
chú ý trước đó bạn phải mở 2 vùng làm việc cho 2 file giaovien & kiemtra
USE GIAOVIEN IN 1
USE KIEMTRA IN 2

bạn đã thiết kế form chưa, ít nhất phài có 2 box, 1 là tên, 2 là mật khẩu, sau khi nhập tên và mật khẩu, trong phần CLICK của commandbutton bạn việt
SELE KIEMTRA
LOCATE FOR TEN=MTEN AND MATKHAU=MMATKHAU && bắt đầu tìm
IF FOUND() && NẾU TÌM THẤY
mms=ms
SELECT GIAOVIEN
SET FILTER TO ms=mms
<CẬP NHẬT DỮ LIỆU>
ELSE && nếu không
=MESSAGEBOX([TEN HAY MAT KHAU KHONG CHINH XAC ... THU LAI],64,[CHU Y])
CLOSE TABLE ALL
CANCEL
ENDIF

mail của mình là taolao_q@yahoo.com.vn

đức phương
25-02-2010, 11:25
dùng lệnh Delete để xóa 1 hoặc nhiều bản ghi, cú pháp như thế nào?

darshana
25-02-2010, 13:04
dùng lệnh Delete để xóa 1 hoặc nhiều bản ghi, cú pháp như thế nào?
xóa bản ghi hiện tại: dele
Xóa bản ghi thỏa mãn đk: dele for đk

luu_luu
26-02-2010, 10:40
lệnh delete chỉ đánh dấu bản ghi, chưa thực sự xóa, muốn xóa bản ghi đã đánh dấu thì phát lệnh PACK, thí dụ :

xóa mẫu tin hiện hành
USE <FILENAME>
GO 5
DELETE
PACK

xóa nhiều bản ghi:
xóa những người có lương lớn hơn 5,000,000
USE <FILENAME>
delete all for luong>1000000
pack

hay xóa tất cả không điều kiện

delete all
pack

anbinh22
26-02-2010, 10:44
Nhờ các bác chỉ giùm !
Tôi muốn in 1 report số cột là động. VD nhw ngày hôm nay report này có 4 cột, ngày hôm sau là 6 cột... nói chung là số cột do người sử dụng lựa chọn, mà không biết xu lý thế nào !
Rất mong các bác có kinh nghiệm chỉ giúp.

dukich75
27-02-2010, 10:49
Nhờ các bác chỉ giùm !
Tôi muốn in 1 report số cột là động. VD nhw ngày hôm nay report này có 4 cột, ngày hôm sau là 6 cột... nói chung là số cột do người sử dụng lựa chọn, mà không biết xu lý thế nào !
Rất mong các bác có kinh nghiệm chỉ giúp.

Trong VFP report ko động như bạn muốn.
Để dễ hơn, bạn nên chọn phương án vẽ nhiều report (VD REP_4C, REP_5C, REP_6C, ...)

DO CASE
CASE [điều kiện dùng REPORT 4 cột]
REPO FORM REP_4C PREV NOCO
CASE [điều kiện dùng REPORT 5 cột]
REPO FORM REP_5C PREV NOCO
CASE [điều kiện dùng REPORT 6 cột]
REPO FORM REP_6C PREV NOCO
ENDCASE
Chúc vui

pechanhtin13
27-02-2010, 22:35
em dang lam` do^` an' mon^ hoc.; ma` code sao luu em ko bit, anh chi. giup' em voi';, e thank anh chi. nhiu` lam' a.

dukich75
01-03-2010, 14:41
em dang lam` do^` an' mon^ hoc.; ma` code sao luu em ko bit, anh chi. giup' em voi';, e thank anh chi. nhiu` lam' a.
Chào bạn
Bạn hỏi rõ ràng thì mình xem có khả năng giúp bạn không?

hm102
02-03-2010, 00:26
Đang cần viết chương trình VFP6 với CSDL SQL 2000 rất mong các anh chị chỉ bảo
Mình mô tả qua chương trình của mình thế này nhé mong nhận được sự giúp đỡ:
- Hàng ngày sẽ nhận được khoảng 30 file *.dbf cấu trúc dạng tenfile&ngayxuatfile.abc.dbf ngày nào cũng có 30 file như vậy. Bây giờ mình muốn đưa tất cả các bảng này vào CSDL SQL 2000 liệu có bị lớn quá không
-mình muốn tạo một dts tự động đến 9h sáng mỗi ngày tự động thêm các file dbf mới vào (các file dbf để ở đường dẫn cố định)
- mình muốn viết một chương trình vpf để kết nối đến sql 2000 để lọc dữ liệu theo các điều kiện rồi đẩy ra báo cáo

Bác nào có code thì cho xin với nhé

Thank you!

luu_luu
02-03-2010, 15:49
để kết nối và khai thác sql
taoketnoi="driver={slq sever};sever=<severname"
Oketnoi=SQLSTRINGCONNECT(taoketnoi)
if oketnoi>0 && ket noi thanh cong
=SQLEXEC(oketnoi,'use <database muốn khai thác trong SQL>','tên file tạm')
* bắt đầu khai thác
=SQLEXEC(oketnoi,'select * from <tablename> where <dk>','tên filee tạm)
BROWSE
* hết khai thác
=SQLDISCONNECT(oketnoi)

else && that bai
=mesagebox([không kết nối được ....],64,[CHU Y])
endif
release all
close table all
close database all
mình chỉ biết có vậy, chú ý là bạn phải được quyền khai thác số liệu trong sql sever

chip44
02-03-2010, 23:34
Pác nào có cách hay hay để xác định ổ USB không? Cho em tham khảo với!
Nếu không thì cách tạo ra 1 form để chọn ổ cũng được (chỉ cho phép chọn ổ thôi nhé)
Cảm ơn các pác trước!

ttliem
03-03-2010, 08:42
Tôi có một vấn đề sau cần được hỗ trợ: trong ứng dụng HTKK cho phép nhận dữ liệu từ file Excel theo một định dạng qui chuẩn. Tuy nhiên trong HTKK mọi mẩu báo cáo đều cho "nhận dữ liệu từ file". Tôi có tìm hiểu thấy dữ liệu trong HTKK được ghi vào file XML kết hợp với file *.DTD và có hàng loạt file Excel mẫu (trong InterfaceTemplate\excel) nhưng không phải là dạng Excel thật sự (tôi không biết là dạng file gì,có ai biết không). Vậy tôi xin hỏi có thể sử dụng hàm CursortoXML() trong VFP để đổ dữ liệu ra XML theo khuôn dạng qui định của HTKK được không. cách làm như thế nào?

[=========> Bổ sung bài viết <=========]

Tôi có một vấn đề sau cần được hỗ trợ: trong ứng dụng HTKK cho phép nhận dữ liệu từ file Excel theo một định dạng qui chuẩn. Tuy nhiên trong HTKK không phải mọi mẩu báo cáo đều cho "nhận dữ liệu từ file". Tôi có tìm hiểu thấy dữ liệu trong HTKK được ghi vào file XML kết hợp với file *.DTD và có hàng loạt file Excel mẫu (trong InterfaceTemplate\excel) nhưng không phải là dạng Excel thật sự (tôi không biết là dạng file gì,có ai biết không). Vậy tôi xin hỏi có thể sử dụng hàm CursortoXML() trong VFP để đổ dữ liệu ra XML theo khuôn dạng qui định của HTKK được không. cách làm như thế nào?

luu_luu
03-03-2010, 10:08
trong InterfaceTemplate\excel có nhiều mẫu,trước tiên bạn muốn dùng mẫu nào ứng với bc htkk thì bạn copy mẫu đó ra với tên khác, thí dụ tndn.xls,đừng sửa tiêu đề và phần tổng, bạn viết chuơng trình đọc data từ fox và chèn số liệu hàng từng hàng vào file tndn, sau đó dùng chương trình htkk đọc dữ liệu từ file excel tndn.xls là xong, nhưng chỉ được với các mẫu là bảng kê thôi

pechanhtin13
04-03-2010, 09:33
hi anh chi
cho em hoi mot ti
vi du nhu em co mot form,trong form co nhieu trang(cap nhat hang hoa,cap nhat nhan vien,...)
bjo tu mot nut cua form khac em mun goi trang cap nhat nhan vien thi em phai danh lenh gi ah
neu show form binh thuong thi dung lenh do form form.scx
nhung cai nay em goi trang cua form,em hok bit anh chi oi,huhu,giup em voi

icanvn
04-03-2010, 11:28
Nhờ mấy huynh giúp đỡ

Em dùng cái hàm đọc số ra chữ ở Form1 thì Ok. Nhưng ở form2 em add thêm cái table vào Data Environment của Form thì nó báo lỗi.

Có huynh nào có thể giải thích vì sao không ah?
Cách khắc phục như thế nào? Nhờ giúp đở.
Download Proj
http://www.mediafire.com/?mmtnyomhumw

luu_luu
04-03-2010, 14:55
có 1 fiels trong file.dbf trùng tên với hàm dọc số đó là field SOTIEN nó trùng với biến SOTIEN trong hàm dọc số ra chữ, bạn nênđổi tên field SOTIEN trong DBF ra tên TIEN là xong, OK
chú ý trong textbox số tiền, bạn phải chuyển lệnh tại interractivechange sang VALID
và thêm lệnh gọi PROCEDURE như sau
SET PROCEDURE TO docso ADDI
thisform.text2.Value=vnd(this.value)

mình cũng đề nghị bạn nên đổi textbox hiện chữ sang EDITBOX vì editbox chứa được chữ nhiều hơn TEXTBOX

dungnt.pro
04-03-2010, 18:28
Mình đang làm chức năng phân quyền sử dụng chức năng cho phần mềm.
Mình add checkbox vào grid, đặt các thuộc tính đầy đủ nhưng khi hiện ra grid thì click vào checkbox, checkbox không thay đổi trạng thái(từ 0-->1 hoặc từ 1-->0).
Các bạn chỉ giúp mình phương án khắc phục với.Xin cảm ơn!

dukich75
04-03-2010, 23:43
Mình đang làm chức năng phân quyền sử dụng chức năng cho phần mềm.
Mình add checkbox vào grid, đặt các thuộc tính đầy đủ nhưng khi hiện ra grid thì click vào checkbox, checkbox không thay đổi trạng thái(từ 0-->1 hoặc từ 1-->0).
Các bạn chỉ giúp mình phương án khắc phục với.Xin cảm ơn!

Trước đây mình cũng làm qua cách này, nhưng cũng gặp như bạn.
Khi đó mình còn sử dụng thuộc tính Style = 1 (Graphical) nhưng trong GRID ko thể hiện đc. (Kể cả khi mình sử dụng cặp giá trị .T./.F.
Sau đó mình chuyển sang ép ComboBox vào GRID, remove TextBox, cho ComboBox cặp giá trị C/K thì xài tốt 3,4 năm nay.
Bạn thử cách mình xem sao.
Chúc vui.

de tai em lam la quan li hang hoa
anh giup em phan lien ket hinh anh voi du lieu dc ko a
nhu vay`
ma hang hoa minh tao combobox,trong do co list mahang,nhap chon mahang nao do se hien ra file anh va du lieu( ten hang, so luong,..)tuong ung voi ma hang do,anh dukich 75 giup em voi,thank a nhiu lam

Sorry, việc bạn nhờ mình phải mất rất nhiều thời gian, nên ko thể giúp đc. Chúc bạn may mắn.

dungnt.pro
05-03-2010, 07:19
Trước đây mình cũng làm qua cách này, nhưng cũng gặp như bạn.
Khi đó mình còn sử dụng thuộc tính Style = 1 (Graphical) nhưng trong GRID ko thể hiện đc. (Kể cả khi mình sử dụng cặp giá trị .T./.F.
Sau đó mình chuyển sang ép ComboBox vào GRID, remove TextBox, cho ComboBox cặp giá trị C/K thì xài tốt 3,4 năm nay.
Bạn thử cách mình xem sao.
Chúc vui.


Làm như vậy không ổn anh ạ.
Hiện tại em có form dùng check box rồi và chạy được ở một chương trình khác.Hơn nữa em bố trí phân quyền theo 4 chức năng: XEM - THÊM - SỬA - XÓA cho cùng 1 chức năng(Có thể được xem mà không được sửa, thêm, xóa...). Nên phương án check box là tối ưu nhất. Vì vậy các anh và các bạn cố gắng tìm phương án giúp mình. Hiện tại mình hơi bối dối vì làm cả chiều qua mà không ra(Cảm thấy dễ mà làm không ra.) Hjc.

luu_luu
05-03-2010, 09:14
Làm như vậy không ổn anh ạ.
Hiện tại em có form dùng check box rồi và chạy được ở một chương trình khác.Hơn nữa em bố trí phân quyền theo 4 chức năng: XEM - THÊM - SỬA - XÓA cho cùng 1 chức năng(Có thể được xem mà không được sửa, thêm, xóa...). Nên phương án check box là tối ưu nhất. Vì vậy các anh và các bạn cố gắng tìm phương án giúp mình. Hiện tại mình hơi bối dối vì làm cả chiều qua mà không ra(Cảm thấy dễ mà làm không ra.) Hjc.
checkbox trong grid thì bạn phải có field ứng với checkbox đó, thí dụ bạn thiết kế checkbox xem thì file.dbf phải có 1 field cot_xem n(1), khi bạn check vào checkbox tương ứng thì nó sẽ gán giá trị 1 vào field cot_xem và ngược lại

[=========> Bổ sung bài viết <=========]


em cung moi buoc vao lap trinh foxpro mong cac pac chi day them
em dang can cac pac chi giao lam the nao de chuyen so thanh chu
vi du nhu so tien khi nhap vao cua minh la 100000 thi o text khac se tu dong xuat hien ra chu "mot tran nghin"
va cho em hoi cach goi mot pageframe cua mot form
thi ddu em co form danh muc hang hoa,trong do co nut cap nhat,bam vao nut cap nhat se ra form cap nhat(form nay gom nhiu page: capnhathanghoa,capnhatnhomhang,...)khi nhat nut capnhat se show page cap nhat hang hoa ra ma khong phai la capnhatnhomhang.
cac pac giup em voi

[=========> Bổ sung bài viết <=========]



cam on anh nhiu
em dang lam do an mon hoc
de tai em lam la quan li hang hoa
anh giup em phan lien ket hinh anh voi du lieu dc ko a
nhu vay`
ma hang hoa minh tao combobox,trong do co list mahang,nhap chon mahang nao do se hien ra file anh va du lieu( ten hang, so luong,..)tuong ung voi ma hang do,anh dukich 75 giup em voi,thank a nhiu lam
để quản lý hình, thì bạn phải có thư mục chứa hình riêng, thí dụ drive:\hinh
mình có gợi ý nhỏ bạn thực hiện thử xem, bạn phải có file.dbf có cấu trúc là:
ms c(3),tenhang c(30),sl n(9),hinhanh m
ms,tenhang, sl là đương nhiên bạn phải nhập, còn field hinhanh thì bạn gõ đầy đủ dỉve:\, thư mục và tên file hình kể cả phần mở rộng, khi bạn chọn ms trong combobox thì sẽ tìm ms trong dbf, thì tên hàng, số lượng sẽ được hiện trên form, cònh hình ảnh bạn tạo một command button, trong đó bạn gõ lệnh !explorer.exe &noiluu
ở đây biến noiluu=field hinh
thí dụ ms=[001]
loca for ms=[001]
if foun()
mten=tenhang
msl=sl
noiluu=hinh

endi

dungnt.pro
05-03-2010, 10:36
checkbox trong grid thì bạn phải có field ứng với checkbox đó, thí dụ bạn thiết kế checkbox xem thì file.dbf phải có 1 field cot_xem n(1), khi bạn check vào checkbox tương ứng thì nó sẽ gán giá trị 1 vào field cot_xem và ngược lại


Thuộc tính của Grid, Col không vấn đề gì anh ạ. Chắc chắn là do bảng dữ liệu.
Lạ ở chỗ là: Hiển thị giá trị 0, 1(Failse,True) thì ok. Nhưng khi click vào để thay đổi trạng thái thì báo Read-only. (Chắc chắn do dữ liệu anh ạ.)

dukich75
06-03-2010, 01:09
vang thank ban
dzay ban chi giao giup minh code nut sao luu dc ko
minh lam do an duong nhien phai co du lieu,de phong khi du lieu bi mat minh se sao luu ra mot du lieu khac co the chua trong bat ki o nao cua pc,ca nut phuc hoi du lieu nua a,ban giup minh voi nha

* Code sao luu file du lieu sang 1 file khac
PROCEDURE SaoLuuButton_Click
Ten_File_Cu = GETFILE("DBF","File Nguon ?")
Ten_File_Moi = GETFILE("DBF","TenFileSeLuu")
IF FILE(&Ten_File_Cu) AND !EMPTY(Ten_File_Moi)
COPY FILE &Ten_File_Cu TO &Ten_File_Moi
ENDIF
RETURN
* Code restore file du lieu da backup
PROCEDURE RestoreButton_Click
Ten_File_BK = GETFILE("DBF","File Backup ?")
Ten_File_Moi = GETFILE("DBF","TenFileSeLuu")
IF FILE(&Ten_File_Cu) AND !EMPTY(Ten_File_Moi)
COPY FILE &Ten_File_Cu TO &Ten_File_Moi
ENDIF
RETURN
Mình tạm hiểu theo cách bạn trình bày nên có thể giúp bạn như vậy.
Nhưng thật sự mình viết các PROCEDURE trên là các PROCEDURE rất đơn giản. Chỉ cần bạn hoàn thành lớp cơ bản của VFP là có thể tự viết, bạn nhờ thì phải tốn thêm thời gian chờ sự giúp đỡ.
Chúc vui

[=========> Bổ sung bài viết <=========]


Làm như vậy không ổn anh ạ.
Hiện tại em có form dùng check box rồi và chạy được ở một chương trình khác.Hơn nữa em bố trí phân quyền theo 4 chức năng: XEM - THÊM - SỬA - XÓA cho cùng 1 chức năng(Có thể được xem mà không được sửa, thêm, xóa...). Nên phương án check box là tối ưu nhất. Vì vậy các anh và các bạn cố gắng tìm phương án giúp mình. Hiện tại mình hơi bối dối vì làm cả chiều qua mà không ra(Cảm thấy dễ mà làm không ra.) Hjc.
Chào bạn.
Theo cách bạn nói thì đàng nào thì FILE dữ liệu cũng mất đến 4 FIELD để lưu các QUYỀN tương ứng. Nên mình đề nghị bạn sử dụng 4 FILED đó là CHAR có độ dài là 1 thôi. Trong GRID bạn chỉ cần xài TextBox trong Column bình thường, xác lập thuộc tính ReadOnly của TextBox (đừng nhầm với ReadOnly của Column)
Sau đó bạn viết code trong Thisform.Grid1.ColumnQXEM.TextBox.KeyPress

LPARAMETERS nKeyCode, nShiftAltCtrl
DO CASE
CASE nKeyCode=32 AND nShiftAltCtrl=0 && Minh xai phim SpaceBar de danh dau
This.Value = IIF(This.Value="X", "", "X") && Doi gia tri tu
ENDCASE

Hoặc bạn viết code trong Thisform.Grid1.ColumnQXEM.TextBox.Click

This.Value = IIF(This.Value="X", "", "X") && Doi gia tri tu

Chúc vui.

luu_luu
06-03-2010, 15:54
Thuộc tính của Grid, Col không vấn đề gì anh ạ. Chắc chắn là do bảng dữ liệu.
Lạ ở chỗ là: Hiển thị giá trị 0, 1(Failse,True) thì ok. Nhưng khi click vào để thay đổi trạng thái thì báo Read-only. (Chắc chắn do dữ liệu anh ạ.)
bạn hảy làm thử như sau
- tạo 1 dbf có 2 field ht c(30),q_xem n(1)
nhập vài tên, còn q_xem để trống

- tạo form, tạo grid trên form có 2 column, khai báo column1 có controlsource=ht, column2 có controlsource=q_xem, add checkbox vào column2, sau đó mở DBF và chạy form bạn sẽ check được checkbox mà không bị read only nữa

pechanhtin13
06-03-2010, 19:48
* Code sao luu file du lieu sang 1 file khac
PROCEDURE SaoLuuButton_Click
Ten_File_Cu = GETFILE("DBF","File Nguon ?")
Ten_File_Moi = GETFILE("DBF","TenFileSeLuu")
IF FILE(&Ten_File_Cu) AND !EMPTY(Ten_File_Moi)
COPY FILE &Ten_File_Cu TO &Ten_File_Moi
ENDIF
RETURN
* Code restore file du lieu da backup
PROCEDURE RestoreButton_Click
Ten_File_BK = GETFILE("DBF","File Backup ?")
Ten_File_Moi = GETFILE("DBF","TenFileSeLuu")
IF FILE(&Ten_File_Cu) AND !EMPTY(Ten_File_Moi)
COPY FILE &Ten_File_Cu TO &Ten_File_Moi
ENDIF
RETURN
Mình tạm hiểu theo cách bạn trình bày nên có thể giúp bạn như vậy.
Nhưng thật sự mình viết các PROCEDURE trên là các PROCEDURE rất đơn giản. Chỉ cần bạn hoàn thành lớp cơ bản của VFP là có thể tự viết, bạn nhờ thì phải tốn thêm thời gian chờ sự giúp đỡ.
Chúc vui

thank ban nhiu lam,minh se lam thu, neu co truc trac minh se hoi ban them.chuc vui

hieubeoly
09-03-2010, 09:07
Kỳ ni, em phải làm phần mền quản lý khách hàng bằng VF các bác giúp em để thiết kế được cơ sở dử liệu với, thank các bác nhiều

dung_kg
09-03-2010, 10:26
Bạn nào có prg chuyển số ra chữ chuẩn cho mình xin với. Mình có đoạn prg không chuẩn lắm:
VD: đọc chuẩn là:
5,056,200: Năm triệu không trăm năm mươi sáu ngàn hai trăm đồng chẵn.
5,006,002: Năm triệu không trăm lẻ sáu ngàn, không trăm lẻ hai đồng chẵn.
5,000,243: Năm triệu lẻ hai trăm bốn mươi ba đồng chẵn.
5,000,043: Năm triệu lẻ bốn mươi ba đồng chẵn.

prg mình dịch không được chuẩn lắm:
5,056,200: Năm triệu năm mươi sáu ngàn hai trăm đồng chẵn.
5,006,002: Năm triệu sáu ngàn lẻ hai đồng chẵn.
5,000,243: Năm triệu hai trăm bốn mươi ba đồng chẵn.
5,000,043: Năm triệu bốn mươi ba đồng chẵn.

luu_luu
09-03-2010, 14:25
mình thấy địa chỉ tải về của bạn icanvn có PRG đọc số ra chữ cũng được, bạn tham khảo thử ở trang 54

danngudien
09-03-2010, 20:00
*Dich so ra chu gui cac ban tham khao

para _so
Kquadich=''
_dadich=''
_ty=Int(_so/1000000000)
***=mod(_so,1000000000)
_trieu=***
If _ty>0
do dichso with _ty,kquadich
_dadich=kquadich+' tû '
endif
Kquadich=''
do dichso with _trieu,kquadich
_dadich=_dadich+' '+kquadich

do whil ' '$_dadich
_dadich=iif(' '$_dadich, stuff(_dadich,at(' ',_dadich),1,''),_dadich)
enddo
_dadich=upper(left(_dadich,1))+substr(_dadich,2,le n(_dadich))
return _dadich
*---------------------
PROCEDURE DICH3SO
Parameter W_SO,dich
If W_So=0
dich='kh«ng'
else
baso=str(W_so,3)
tram=left(baso,1)
chuc=subs(baso,2,1)
dvi=right(baso,1)
dich=''
Do Case
Case val(tram)>0 .and. val(chuc)=0 .and. val(dvi)>0
Dich=dich + chu(val(tram))+' tr¨m lÎ '
Case val(tram)>0
Dich=dich + chu(val(tram))+' tr¨m '
Endcase
Do Case
Case val(Chuc)=1
Dich=dich +' m­êi '
Case val(chuc)>1
Dich=dich + chu(val(chuc))+' m­¬i '
Endcase
Do Case
Case val(dvi)>0 .and. val(chuc)>0 .and. val(dvi)=5
Dich=dich + 'l¨m '
Case val(dvi)>0 .and. val(chuc)>1 .and. val(dvi)=1
Dich=dich + 'mèt '
Case val(dvi)=0
Dich=dich
Otherwise
Dich=dich + chu(val(dvi))
Endcase
Endif
RETURN
*-----------------------------------------------------------------------*
PROCEDURE DICHSO
Parameter SO,ketqua
DIME CHu(9,1)
chu(1)='mét'
chu(2)='hai'
chu(3)='ba'
chu(4)='bèn'
chu(5)='n¨m'
chu(6)='s¸u'
chu(7)='b¶y'
chu(8)='t¸m'
chu(9)='chÝn'
trieu=Int(so/1000000)
***=mod(so,1000000)
ngan=int(***/1000)
so_donvi=mod(***,1000)
ketqua=''
chuoi=''

If Trieu>0
Do dich3so with trieu,chuoi
ketqua=ketqua+chuoi+' triÖu '
endif
If ngan>0
Do dich3so with ngan,chuoi
ketqua=ketqua+chuoi+' ngµn '
endif
If so_donvi>0
Do dich3so with so_donvi,chuoi
* ketqua=ketqua+chuoi
do case
case ngan>0 and so_donvi<10
ketqua=ketqua+' kh«ng tr¨m lÎ ' +chuoi
case ngan>0 and so_donvi<100
ketqua=ketqua+' kh«ng tr¨m ' +chuoi
otherwise
ketqua=ketqua+chuoi
endcase
endif

RETURN

ngthva
10-03-2010, 07:44
Tôi cám ơn bạn luu_luu tôi đã làm xong form tìm kiếm.
Bạn cho tôi hỏi thêm, tôi tạo 1 form có kèm theo dữ liệu. Tôi muốn khi
khởi động form thì chỉ mở ra 1 mẫu tin gồm các field trắng không có dữ liệu, hiện tại khi mở form lên thì form hiển thị mẫu tin đầu tiên. Tôi tạo một mẫu tin trắng đầu tiên thì khi chạy đúng là đạt yêu cầu nhưng khi đưa ra báo biểu thông kê để in, thì chương trinh lại thống kê luôn mẫu tin trắng đó. Mong bạn chỉ giúp, tôi rất cần vì chuẩn bị làm báo cáo. Cám ơn bạn nhiều, chúc khỏe.

luu_luu
10-03-2010, 08:14
Tôi cám ơn bạn luu_luu tôi đã làm xong form tìm kiếm.
Bạn cho tôi hỏi thêm, tôi tạo 1 form có kèm theo dữ liệu. Tôi muốn khi
khởi động form thì chỉ mở ra 1 mẫu tin gồm các field trắng không có dữ liệu, hiện tại khi mở form lên thì form hiển thị mẫu tin đầu tiên. Tôi tạo một mẫu tin trắng đầu tiên thì khi chạy đúng là đạt yêu cầu nhưng khi đưa ra báo biểu thông kê để in, thì chương trinh lại thống kê luôn mẫu tin trắng đó. Mong bạn chỉ giúp, tôi rất cần vì chuẩn bị làm báo cáo. Cám ơn bạn nhiều, chúc khỏe.
bạn thân mến,
- để gọi form mà chỉ hiện record trắng, bạn phải dùng lệnh SET FILTER TO,
thí dụ bạn nhập số liệu báo cáo theo ngày, khi qua ngày mới, chạy form, thì bạn dùng lệnh


PUBLIC ngaylamviec
ngaylamviec=date()
SET CARY ON && mang giá trị mẫu tin trước sang mẫu tin mới
INSERT INTO (DBF()) (NGAY) VALUE (DATE())
SET FILTER TO NGAY=ngaylamviec

* phần báo biểu thống kê, bạn phải dùng điều kiện trong REPORT để hạn chế các record trắng, thí dụ:
REPORT FORM <FILENAME> PREVIEW FOR TIEN#0 && xem records khác không
hay
REPORT FORM <FILENAME> PREVIEW FOR !EMPTY(NOIDUNG) && xem records có nội dung
hay
REPORT FORM <FILENAME> PREVIEW FOR ngay=ngaylamviec

ngthva
10-03-2010, 09:52
bạn thân mến,
- để gọi form mà chỉ hiện record trắng, bạn phải dùng lệnh SET FILTER TO,
thí dụ bạn nhập số liệu báo cáo theo ngày, khi qua ngày mới, chạy form, thì bạn dùng lệnh
Cám ơn bạn nhé, chương trình đã chạy tốt. Chúc khỏe

dung_kg
10-03-2010, 14:58
[QUOTE=danngudien;2033920]*Dich so ra chu gui cac ban tham khao

para _so
Kquadich=''
_dadich=''
_ty=Int(_so/1000000000)
***=mod(_so,1000000000)
_trieu=***
If _ty>0
do dichso with _ty,kquadich
_dadich=kquadich+' tû '
endif
Kquadich=''
do dichso with _trieu,kquadich
_dadich=_dadich+' '+kquadich

do whil ' '$_dadich
_dadich=iif(' '$_dadich, stuff(_dadich,at(' ',_dadich),1,''),_dadich)
enddo
_dadich=upper(left(_dadich,1))+substr(_dadich,2,le n(_dadich))
return _dadich
*---------------------
PROCEDURE DICH3SO
Parameter W_SO,dich
If W_So=0
dich='kh«ng'
else
baso=str(W_so,3)
tram=left(baso,1)
chuc=subs(baso,2,1)
dvi=right(baso,1)
dich=''
Do Case
Case val(tram)>0 .and. val(chuc)=0 .and. val(dvi)>0
Dich=dich + chu(val(tram))+' tr¨m lÎ '
Case val(tram)>0
Dich=dich + chu(val(tram))+' tr¨m '
Endcase
Do Case
Case val(Chuc)=1
Dich=dich +' m­êi '
Case val(chuc)>1
Dich=dich + chu(val(chuc))+' m­¬i '
Endcase
Do Case
Case val(dvi)>0 .and. val(chuc)>0 .and. val(dvi)=5
Dich=dich + 'l¨m '
Case val(dvi)>0 .and. val(chuc)>1 .and. val(dvi)=1
Dich=dich + 'mèt '
Case val(dvi)=0
Dich=dich
Otherwise
Dich=dich + chu(val(dvi))
Endcase
Endif
RETURN
*-----------------------------------------------------------------------*
PROCEDURE DICHSO
Parameter SO,ketqua
DIME CHu(9,1)
chu(1)='mét'
chu(2)='hai'
chu(3)='ba'
chu(4)='bèn'
chu(5)='n¨m'
chu(6)='s¸u'
chu(7)='b¶y'
chu(8)='t¸m'
chu(9)='chÝn'
trieu=Int(so/1000000)
***=mod(so,1000000)
ngan=int(***/1000)
so_donvi=mod(***,1000)
ketqua=''
chuoi=''

If Trieu>0
Do dich3so with trieu,chuoi
ketqua=ketqua+chuoi+' triÖu '
endif
If ngan>0
Do dich3so with ngan,chuoi
ketqua=ketqua+chuoi+' ngµn '
endif
If so_donvi>0
Do dich3so with so_donvi,chuoi
* ketqua=ketqua+chuoi
do case
case ngan>0 and so_donvi<10
ketqua=ketqua+' kh«ng tr¨m lÎ ' +chuoi
case ngan>0 and so_donvi<100
ketqua=ketqua+' kh«ng tr¨m ' +chuoi
otherwise
ketqua=ketqua+chuoi
endcase
endif

RETURN

Cám ơn bạn danngudien đã có đoạn code, nhưng mình chạy nó báo lỗi "Command contains unrecognized phrase/keyword" ngay dòng: _trieu=***. Cho hỏi có phải đoạn này không dùng được cho VFP 6.0 không?
Nếu đúng vậy mình phải sửa như thế nào để có thể chạy trên VFP 6.0?

luu_luu
10-03-2010, 15:58
[QUOTE=danngudien;2033920]*Dich so ra chu gui cac ban tham khao

para _so
Kquadich=''
_dadich=''
_ty=Int(_so/1000000000)
***=mod(_so,1000000000)
_trieu=***
If _ty>0
do dichso with _ty,kquadich
_dadich=kquadich+' tû '
endif
Kquadich=''
do dichso with _trieu,kquadich
_dadich=_dadich+' '+kquadich

do whil ' '$_dadich
_dadich=iif(' '$_dadich, stuff(_dadich,at(' ',_dadich),1,''),_dadich)
enddo
_dadich=upper(left(_dadich,1))+substr(_dadich,2,le n(_dadich))
return _dadich
*---------------------
PROCEDURE DICH3SO
Parameter W_SO,dich
If W_So=0
dich='kh«ng'
else
baso=str(W_so,3)
tram=left(baso,1)
chuc=subs(baso,2,1)
dvi=right(baso,1)
dich=''
Do Case
Case val(tram)>0 .and. val(chuc)=0 .and. val(dvi)>0
Dich=dich + chu(val(tram))+' tr¨m lÎ '
Case val(tram)>0
Dich=dich + chu(val(tram))+' tr¨m '
Endcase
Do Case
Case val(Chuc)=1
Dich=dich +' m­êi '
Case val(chuc)>1
Dich=dich + chu(val(chuc))+' m­¬i '
Endcase
Do Case
Case val(dvi)>0 .and. val(chuc)>0 .and. val(dvi)=5
Dich=dich + 'l¨m '
Case val(dvi)>0 .and. val(chuc)>1 .and. val(dvi)=1
Dich=dich + 'mèt '
Case val(dvi)=0
Dich=dich
Otherwise
Dich=dich + chu(val(dvi))
Endcase
Endif
RETURN
*-----------------------------------------------------------------------*
PROCEDURE DICHSO
Parameter SO,ketqua
DIME CHu(9,1)
chu(1)='mét'
chu(2)='hai'
chu(3)='ba'
chu(4)='bèn'
chu(5)='n¨m'
chu(6)='s¸u'
chu(7)='b¶y'
chu(8)='t¸m'
chu(9)='chÝn'
trieu=Int(so/1000000)
***=mod(so,1000000)
ngan=int(***/1000)
so_donvi=mod(***,1000)
ketqua=''
chuoi=''

If Trieu>0
Do dich3so with trieu,chuoi
ketqua=ketqua+chuoi+' triÖu '
endif
If ngan>0
Do dich3so with ngan,chuoi
ketqua=ketqua+chuoi+' ngµn '
endif
If so_donvi>0
Do dich3so with so_donvi,chuoi
* ketqua=ketqua+chuoi
do case
case ngan>0 and so_donvi<10
ketqua=ketqua+' kh«ng tr¨m lÎ ' +chuoi
case ngan>0 and so_donvi<100
ketqua=ketqua+' kh«ng tr¨m ' +chuoi
otherwise
ketqua=ketqua+chuoi
endcase
endif

RETURN

Cám ơn bạn danngudien đã có đoạn code, nhưng mình chạy nó báo lỗi "Command contains unrecognized phrase/keyword" ngay dòng: _trieu=***. Cho hỏi có phải đoạn này không dùng được cho VFP 6.0 không?
Nếu đúng vậy mình phải sửa như thế nào để có thể chạy trên VFP 6.0?
mình mạn phép và xin bạn icanvn thông cảm mình copy đọan code đọc số ra chữ cho bạn


FUNCTION vnd
PARAMETERS BaoNhieu
PRIVATE ALL EXCEPT BaoNhieu
IF BaoNhieu = 0 Then
KetQua = "Khoâng ñoàng"
ELSE
IF ABS(BaoNhieu) >= 999999999999999.99 then
KetQua="Soá quaù lôùn"
ELSE
IF BaoNhieu < 0 then
KetQua="Tröø"+SPACE(1)
ELSE
KetQua=SPACE(0)
ENDIF
SoTien=STR(ABS(BaoNhieu),18,2)
DIMENSION Hang (3),Doc (6), Dem (9)
STORE "traêm" TO Hang(1)
STORE "möôi" TO Hang(2)
STORE "gì ñoù" TO Hang(3)
STORE "nghìn tyû" TO Doc(1)
STORE "tyû" TO Doc(2)
STORE "trieäu" TO Doc(3)
STORE "nghìn" TO Doc(4)
STORE "ñoàng" TO Doc(5)
*STORE "xu" TO Doc(6)
STORE "moät" TO Dem(1)
STORE "hai" TO Dem(2)
STORE "ba" TO Dem(3)
STORE "boán" TO Dem(4)
STORE "naêm" TO Dem(5)
STORE "saùu" TO Dem(6)
STORE "baûy" TO Dem(7)
STORE "taùm" TO Dem(8)
STORE "chín" TO Dem(9)
FOR N=1 TO 5 && the bang xu thanh 5 thanh 6
Nhom = SUBSTR(SoTien,N*3-2,3)
IF Nhom <> SPACE(3) Then
DO Case
CASE Nhom = "000"
IF N=5 then
Chu="ñoàng"+SPACE(1)
ELSE
Chu=SPACE(0)
ENDIF
CASE Nhom=",00" && phaoày khooõng khooõng
Chu="chaún"
OTHERWISE
S1=LEFT(Nhom,1)
S2=SUBSTR(Nhom,2,1)
S3=RIGHT(Nhom,1)
Chu=SPACE(0)
Hang(3)=Doc(N)
FOR M=1 TO 3
Dich = SPACE(0)
S = VAL(SUBSTR(Nhom,M,1))
IF S>0 Then
Dich=Dem(S)+SPACE(1)+Hang(M)+SPACE(1)
ENDIF
DO case
CASE M=2 And S=1
Dich="möôøi"+SPACE(1)
CASE M=3 And S=0 AND Nhom<>SPACE(2)+"0"
Dich=Hang(M)+SPACE(1)
CASE M=3 AND S=5 AND S2<>SPACE(1)And S2<>"0"
Dich="I"+SUBSTR(Dich,2) && kyöï töûuø en luïöù
CASE M=2 AND S=0 AND S3<>"0"
if(S1>="1"And S1<="9")Or(S1="0"And N=5)Then
Dich="leû"+SPACE(1)
ENDIF
ENDCASE
Chu=Chu+Dich
NEXT M
ENDCASE
Vitri=AT("möôi moát",Chu)
IF Vitri>0 Then
Chu=LEFT(Chu,Vitri-1)+"muôi moát"+SUBSTR(Chu,Vitri+9)
ENDIF
KetQua=KetQua+Chu
ENDIF
NEXT N
ENDIF
ENDIF
RETURN UPPER(LEFT(KetQua,1))+SUBSTR(KetQua,2)
ENDFUNC

bạn tạo docso.prg và copy tất cả đọan code vào docso.prg, sau đó phát lệnh
SET PROCEDURE TO DRIVE:\DOCSO ADDI
MCHAR=VND(1500)
?MCHAR FONT [VNI-TIMES],12

dung_kg
10-03-2010, 17:03
[quote=dung_kg;2034712]
mình mạn phép và xin bạn icanvn thông cảm mình copy đọan code đọc số ra chữ cho bạn


FUNCTION vnd
PARAMETERS BaoNhieu
PRIVATE ALL EXCEPT BaoNhieu
IF BaoNhieu = 0 Then
KetQua = "Khoâng ñoàng"
ELSE
IF ABS(BaoNhieu) >= 999999999999999.99 then
KetQua="Soá quaù lôùn"
ELSE
IF BaoNhieu < 0 then
KetQua="Tröø"+SPACE(1)
ELSE
KetQua=SPACE(0)
ENDIF
SoTien=STR(ABS(BaoNhieu),18,2)
DIMENSION Hang (3),Doc (6), Dem (9)
STORE "traêm" TO Hang(1)
STORE "möôi" TO Hang(2)
STORE "gì ñoù" TO Hang(3)
STORE "nghìn tyû" TO Doc(1)
STORE "tyû" TO Doc(2)
STORE "trieäu" TO Doc(3)
STORE "nghìn" TO Doc(4)
STORE "ñoàng" TO Doc(5)
*STORE "xu" TO Doc(6)
STORE "moät" TO Dem(1)
STORE "hai" TO Dem(2)
STORE "ba" TO Dem(3)
STORE "boán" TO Dem(4)
STORE "naêm" TO Dem(5)
STORE "saùu" TO Dem(6)
STORE "baûy" TO Dem(7)
STORE "taùm" TO Dem(8)
STORE "chín" TO Dem(9)
FOR N=1 TO 5 && the bang xu thanh 5 thanh 6
Nhom = SUBSTR(SoTien,N*3-2,3)
IF Nhom <> SPACE(3) Then
DO Case
CASE Nhom = "000"
IF N=5 then
Chu="ñoàng"+SPACE(1)
ELSE
Chu=SPACE(0)
ENDIF
CASE Nhom=",00" && phaoày khooõng khooõng
Chu="chaún"
OTHERWISE
S1=LEFT(Nhom,1)
S2=SUBSTR(Nhom,2,1)
S3=RIGHT(Nhom,1)
Chu=SPACE(0)
Hang(3)=Doc(N)
FOR M=1 TO 3
Dich = SPACE(0)
S = VAL(SUBSTR(Nhom,M,1))
IF S>0 Then
Dich=Dem(S)+SPACE(1)+Hang(M)+SPACE(1)
ENDIF
DO case
CASE M=2 And S=1
Dich="möôøi"+SPACE(1)
CASE M=3 And S=0 AND Nhom<>SPACE(2)+"0"
Dich=Hang(M)+SPACE(1)
CASE M=3 AND S=5 AND S2<>SPACE(1)And S2<>"0"
Dich="I"+SUBSTR(Dich,2) && kyöï töûuø en luïöù
CASE M=2 AND S=0 AND S3<>"0"
if(S1>="1"And S1<="9")Or(S1="0"And N=5)Then
Dich="leû"+SPACE(1)
ENDIF
ENDCASE
Chu=Chu+Dich
NEXT M
ENDCASE
Vitri=AT("möôi moát",Chu)
IF Vitri>0 Then
Chu=LEFT(Chu,Vitri-1)+"muôi moát"+SUBSTR(Chu,Vitri+9)
ENDIF
KetQua=KetQua+Chu
ENDIF
NEXT N
ENDIF
ENDIF
RETURN UPPER(LEFT(KetQua,1))+SUBSTR(KetQua,2)
ENDFUNC

bạn tạo docso.prg và copy tất cả đọan code vào docso.prg, sau đó phát lệnh
SET PROCEDURE TO DRIVE:\DOCSO ADDI
MCHAR=VND(1500)
?MCHAR FONT [VNI-TIMES],12

cảm ơn bạn luu_luu, nhưng ý mình muốn số tiền bằng chữ phải đầy đủ câu:
VD:
5,056,200: Năm triệu không trăm năm mươi sáu ngàn hai trăm đồng chẵn.
-Đoạn code của bạn và của mình đang dùng thì lại như sau:
5,056,200: Năm triệu năm mươi sáu ngàn hai trăm đồng chẵn. (Thiếu chữ 'không trăm')
Mong trợ giúp!

danngudien
11-03-2010, 00:29
Cám ơn bạn danngudien đã có đoạn code, nhưng mình chạy nó báo lỗi "Command contains unrecognized phrase/keyword" ngay dòng: _trieu=***. Cho hỏi có phải đoạn này không dùng được cho VFP 6.0 không?
Nếu đúng vậy mình phải sửa như thế nào để có thể chạy trên VFP 6.0?
***********
Đây là một code dịch số ra chữ chuẩn tôi đã dùng rất nhiều và chính xác, nguyên nhân là bạn tryền tham số cho biến _so chưa đúng.Bạn tạo file dichso.prg như sau
CLEAR
PUBLIC dichxong
DO so WITH 123698
?dichxong font ".VNtimes"

PROCEDURE so
para _so
Kquadich=''
_dadich=''
_ty=Int(_so/1000000000)
***=mod(_so,1000000000)
_trieu=***
If _ty>0
do dichso with _ty,kquadich
_dadich=kquadich+' tû '
endif
Kquadich=''
do dichso with _trieu,kquadich
_dadich=_dadich+' '+kquadich

do whil ' '$_dadich
_dadich=iif(' '$_dadich, stuff(_dadich,at(' ',_dadich),1,''),_dadich)
enddo
_dadich=upper(left(_dadich,1))+substr(_dadich,2,le n(_dadich))

dichxong=_dadich

return _dadich
*---------------------
PROCEDURE DICH3SO
Parameter W_SO,dich
If W_So=0
dich='kh«ng'
else
baso=str(W_so,3)
tram=left(baso,1)
chuc=subs(baso,2,1)
dvi=right(baso,1)
dich=''
Do Case
Case val(tram)>0 .and. val(chuc)=0 .and. val(dvi)>0
Dich=dich + chu(val(tram))+' tr¨m lÎ '
Case val(tram)>0
Dich=dich + chu(val(tram))+' tr¨m '
Endcase
Do Case
Case val(Chuc)=1
Dich=dich +' m­êi '
Case val(chuc)>1
Dich=dich + chu(val(chuc))+' m­¬i '
Endcase
Do Case
Case val(dvi)>0 .and. val(chuc)>0 .and. val(dvi)=5
Dich=dich + 'l¨m '
Case val(dvi)>0 .and. val(chuc)>1 .and. val(dvi)=1
Dich=dich + 'mèt '
Case val(dvi)=0
Dich=dich
Otherwise
Dich=dich + chu(val(dvi))
Endcase
Endif
RETURN
*-----------------------------------------------------------------------*
PROCEDURE DICHSO
Parameter SO,ketqua
DIME CHu(9,1)
chu(1)='mét'
chu(2)='hai'
chu(3)='ba'
chu(4)='bèn'
chu(5)='n¨m'
chu(6)='s¸u'
chu(7)='b¶y'
chu(8)='t¸m'
chu(9)='chÝn'
trieu=Int(so/1000000)
***=mod(so,1000000)
ngan=int(***/1000)
so_donvi=mod(***,1000)
ketqua=''
chuoi=''

If Trieu>0
Do dich3so with trieu,chuoi
ketqua=ketqua+chuoi+' triÖu '
endif
If ngan>0
Do dich3so with ngan,chuoi
ketqua=ketqua+chuoi+' ngµn '
endif
If so_donvi>0
Do dich3so with so_donvi,chuoi
* ketqua=ketqua+chuoi
do case
case ngan>0 and so_donvi<10
ketqua=ketqua+' kh«ng tr¨m lÎ ' +chuoi
case ngan>0 and so_donvi<100
ketqua=ketqua+' kh«ng tr¨m ' +chuoi
otherwise
ketqua=ketqua+chuoi
endcase
endif

*?ketqua font ".VNtimes"
RETURN
*********
Chúc bạn thành công!

dung_kg
11-03-2010, 11:24
cảm ơn bạn danngudien, đoạn code bạn đã chạy được như nó vẫn chưa ra đầy đủ câu:
VD:
- Cái mình cần như sau:
5,056,200: Năm triệu không trăm năm mươi sáu ngàn hai trăm đồng chẵn.
-Đoạn code của bạn và của mình đang dùng thì lại như sau:
5,056,200: Năm triệu năm mươi sáu ngàn hai trăm đồng chẵn. (Thiếu chữ 'không trăm')
Mong trợ giúp!

tayngangvfp
11-03-2010, 18:45
cảm ơn bạn danngudien, đoạn code bạn đã chạy được như nó vẫn chưa ra đầy đủ câu:
VD:
- Cái mình cần như sau:
5,056,200: Năm triệu không trăm năm mươi sáu ngàn hai trăm đồng chẵn.
-Đoạn code của bạn và của mình đang dùng thì lại như sau:
5,056,200: Năm triệu năm mươi sáu ngàn hai trăm đồng chẵn. (Thiếu chữ 'không trăm')
Mong trợ giúp!

Bạn dùng thử hàm này xem

http://www.mediafire.com/file/tjdgnodgint/testdoisorachu.prg

danngudien
11-03-2010, 19:31
cảm ơn bạn danngudien, đoạn code bạn đã chạy được như nó vẫn chưa ra đầy đủ câu:
VD:
- Cái mình cần như sau:
5,056,200: Năm triệu không trăm năm mươi sáu ngàn hai trăm đồng chẵn.
-Đoạn code của bạn và của mình đang dùng thì lại như sau:
5,056,200: Năm triệu năm mươi sáu ngàn hai trăm đồng chẵn. (Thiếu chữ 'không trăm')
Mong trợ giúp!
Chữ không trăm là đây
CLEAR
PUBLIC dichxong
DO so WITH 80000001
?dichxong +" ®ång ch½n" font ".VNtimes"

PROCEDURE so
para _so
Kquadich=''
_dadich=''
_ty=Int(_so/1000000000)
***=mod(_so,1000000000)
_trieu=***
If _ty>0
do dichso with _ty,kquadich
_dadich=kquadich+' tû '
endif
Kquadich=''
do dichso with _trieu,kquadich
_dadich=_dadich+' '+kquadich

do whil ' '$_dadich
_dadich=iif(' '$_dadich, stuff(_dadich,at(' ',_dadich),1,''),_dadich)
enddo
_dadich=upper(left(_dadich,1))+substr(_dadich,2,le n(_dadich))

dichxong= _dadich
return _dadich
*---------------------
PROCEDURE DICH3SO
Parameter W_SO,dich
If W_So=0
dich='kh«ng'
else
baso=str(W_so,3)
tram=left(baso,1)
chuc=subs(baso,2,1)
dvi=right(baso,1)
dich=''
Do Case
Case val(tram)>0 .and. val(chuc)=0 .and. val(dvi)>0
Dich=dich + chu(val(tram))+' tr¨m lÎ '
Case val(tram)>0
Dich=dich + chu(val(tram))+' tr¨m '
Endcase
Do Case
Case val(Chuc)=1
Dich=dich +' m­êi '
Case val(chuc)>1
Dich=dich + chu(val(chuc))+' m­¬i '
Endcase
Do Case
Case val(dvi)>0 .and. val(chuc)>0 .and. val(dvi)=5
Dich=dich + 'l¨m '
Case val(dvi)>0 .and. val(chuc)>1 .and. val(dvi)=1
Dich=dich + 'mèt '
Case val(dvi)=0
Dich=dich
Otherwise
Dich=dich + chu(val(dvi))
Endcase
Endif
RETURN
*-----------------------------------------------------------------------*
PROCEDURE DICHSO
Parameter SO,ketqua
DIME CHu(10,1)
chu(1)='mét'
chu(2)='hai'
chu(3)='ba'
chu(4)='bèn'
chu(5)='n¨m'
chu(6)='s¸u'
chu(7)='b¶y'
chu(8)='t¸m'
chu(9)='chÝn'
chu(10)="Khong"
trieu=Int(so/1000000)
***=mod(so,1000000)

cngan=mod(so,1000000) &&&so du cua hang chuc ngan

ngan=int(***/1000)
so_donvi=mod(***,1000)
ketqua=''
chuoi=''

If Trieu>0
Do dich3so with trieu,chuoi
ketqua=ketqua+chuoi+' triÖu '

endif
**doan them vao
IF cngan>0
Do dich3so with cngan,chuoi
do case
case trieu>0 and cngan<10
ketqua=ketqua+' kh«ng tr¨m kh«ng chôc ngµn kh«ng tr¨m lÏ '
case trieu>0 and cngan<100
ketqua=ketqua+' kh«ng tr¨m kh«ng chôc ngµn kh«ng tr¨m '

case trieu>0 and cngan<1000
ketqua=ketqua+' kh«ng tr¨m kh«ng chôc ngµn '

case trieu>0 and cngan<10000
ketqua=ketqua+' kh«ng tr¨m lÏ ' +chuoi

case trieu>0 and cngan<100000
ketqua=ketqua+' kh«ng tr¨m ' +chuoi


endcase

ENDIF


*********
If ngan>0
Do dich3so with ngan,chuoi
ketqua=ketqua+chuoi+' ngµn '
endif
If so_donvi>0
Do dich3so with so_donvi,chuoi
* ketqua=ketqua+chuoi
do case
case ngan>0 and so_donvi<10
ketqua=ketqua+' kh«ng tr¨m lÎ ' +chuoi
case ngan>0 and so_donvi<100
ketqua=ketqua+' kh«ng tr¨m ' +chuoi
otherwise
ketqua=ketqua+chuoi
endcase
endif

RETURN
chúc bạn thành công

sweetboy2805
12-03-2010, 14:45
Các bạn ơi giúp mình tí. Tại sao khi mình xuất 1 file .dbf font vni-times sang file .xsl thì rất ok, mà mình chuyển ngược chính file .xls đó sang fox thì font bị lỗi tùm lum, mấy chữ có dấu không thể nào đọc được. Mặc dù mình đã brow bảng theo font vni-times rồi mà vẫn ko được. Bạn nào có kinh nghiệm giúp với. Cám ơn tất cả.

hieuha270488
12-03-2010, 21:33
cac bac di truoc oi!em dang bat dau hoc foxpro.em doc may cai giao trinh nhung hinh nhu no thieu rat nhieu thi phai.bac nao gui cho em cai tai lieu day du nhat duoc khong?em cam con cac bac nhe!
hoangtudasau_19001755@yahoo.com
quanghieu.forever@gmail.com
thanks nhieu!

changkhoag
12-03-2010, 21:53
Mình thiết kế 1 form có textbox truong mình làm bẫy lỗi tại textbox này (nếu nhập trường không có trong dm_truong thì xẽ hiện ra của sổ cho chọn). Việc này đã thực hiện khá tốt. Tuy nhiên mình có thiết kế thêm 1 module tìm kiếm (trong trong file libprg.prg) trong cửa ổ này (phím ctrl+F) nhưng khi hiện ra của sổ tìm kiếm rê chuột vào các radio button thì tất cả mất hết. Nhờ các bạn và tư vấn chình sửa lại dùm mình. File :
http://www.mediafire.com/?zxfgmdk5nl1

[=========> Bổ sung bài viết <=========]

Anh tayngangVFP oi.....! giúp dùm mình với. mình đang sử dụng VFP 9.0. Địa chỉ mail của mình: changkhoag@gmail.com

trichpha
14-03-2010, 00:20
Hiện tại, mình đang gặp phải một số vấn đề:
Vấn đề 1: Với code viết bằng VFP truy cập vào CSDL SQL server, mình không thể dùng đoạn code sau để kết nối vào CSDL SQL server:
cConnect=;
"DRIVER=SQL Server;"+;
"SERVER=TenServer;"+;
"UID=TenDangNhapCSDL_SQLserver;"+;
"PWD=MatKhauDangNhap_SQLserver;"+;
"APP=Microsoft Visual FoxPro;"+;
"WSID=TenMayTinh;"+ ;
"DATABASE=TenDataBase_SQLserver"
CREATE CONNECTION "connect_to_SQLserver" CONNSTRING cConnect
DBSETPROP("connect_to_SQLserver","CONNECTION","DispLogin",3)
lnConnHandle=SQLCONNECT("connect_to_SQLserver")
IF lnConnHandle<>-1
RETURN 1
ELSE
RETURN -1
ENDIF


(Đoạn code được tham khảo từ bác TayNgangVFP)
Đoạn code trên luôn trả về giá trị -1 (Các giá trị TenServer,TenDangNhapCSDL_SQLserver,MatKhauDangNha p_SQLserver,TenMayTinh,TenDataBase_SQLserver đều đã được xác định phù hợp)
Nhưng nếu trước khi chạy đoạn code trên, trong My Network Places mình kết nối đến Server bằng Account+Pass của Windows XP(HDH đang dùng trên Server) thì lại kết nối được
Nguyên nhân sai sót do lệnh hay do thiết lập hệ thông mạng chưa phù hợp?

Vấn đề 2:
Mình đã tạo file help.chm có ID
chạy trên máy của mình thì xuất hiện nội dung Help tương ứng với ID.Nhưng khi copy chương trình sang máy khác để chạy ( máy không cài VFP mà chỉ có file *.DLL của VFP đi kèm) thì không hiển thị được nội dung Help.
Vấn đề 3:
Phiên bản VFP được nói đến ở trang:
http://www.alvechurchdata.co.uk/hints-and-tips/foxvfp9format.html
là phiên bản VFP9 nào? Hiện tôi dùng phiên bản 09.00.0000.2412 mà không thấy hộp hội thoại như trong trang web trên?

Xin bác TayNgangVFP và anh em diễn đàn chỉ giúp.

luu_luu
15-03-2010, 09:49
Hiện tại, mình đang gặp phải một số vấn đề:
Vấn đề 1: Với code viết bằng VFP truy cập vào CSDL SQL server, mình không thể dùng đoạn code sau để kết nối vào CSDL SQL server:
cConnect=;
"DRIVER=SQL Server;"+;
"SERVER=TenServer;"+;
"UID=TenDangNhapCSDL_SQLserver;"+;
"PWD=MatKhauDangNhap_SQLserver;"+;
"APP=Microsoft Visual FoxPro;"+;
"WSID=TenMayTinh;"+ ;
"DATABASE=TenDataBase_SQLserver"
CREATE CONNECTION "connect_to_SQLserver" CONNSTRING cConnect
DBSETPROP("connect_to_SQLserver","CONNECTION","DispLogin",3)
lnConnHandle=SQLCONNECT("connect_to_SQLserver")
IF lnConnHandle<>-1
RETURN 1
ELSE
RETURN -1
ENDIF


(Đoạn code được tham khảo từ bác TayNgangVFP)
Đoạn code trên luôn trả về giá trị -1 (Các giá trị TenServer,TenDangNhapCSDL_SQLserver,MatKhauDangNha p_SQLserver,TenMayTinh,TenDataBase_SQLserver đều đã được xác định phù hợp)
Nhưng nếu trước khi chạy đoạn code trên, trong My Network Places mình kết nối đến Server bằng Account+Pass của Windows XP(HDH đang dùng trên Server) thì lại kết nối được
Nguyên nhân sai sót do lệnh hay do thiết lập hệ thông mạng chưa phù hợp?

Vấn đề 2:
Mình đã tạo file help.chm có ID
chạy trên máy của mình thì xuất hiện nội dung Help tương ứng với ID.Nhưng khi copy chương trình sang máy khác để chạy ( máy không cài VFP mà chỉ có file *.DLL của VFP đi kèm) thì không hiển thị được nội dung Help.
Vấn đề 3:
Phiên bản VFP được nói đến ở trang:
http://www.alvechurchdata.co.uk/hints-and-tips/foxvfp9format.html
là phiên bản VFP9 nào? Hiện tôi dùng phiên bản 09.00.0000.2412 mà không thấy hộp hội thoại như trong trang web trên?

Xin bác TayNgangVFP và anh em diễn đàn chỉ giúp.
bạn thân mến, bạn nghiên cứu thử đọan này xem sao
để kết nối và khai thác sql
taoketnoi="driver={slq sever};sever=<severname"
Oketnoi=SQLSTRINGCONNECT(taoketnoi)
if oketnoi>0 && ket noi thanh cong
=SQLEXEC(oketnoi,'use <database muốn khai thác trong SQL>','tên file tạm')
* bắt đầu khai thác
=SQLEXEC(oketnoi,'select * from <tablename> where <dk>','tên filee tạm)
BROWSE
* hết khai thác
=SQLDISCONNECT(oketnoi)

else && that bai
=mesagebox([không kết nối được ....],64,[CHU Y])
endif
release all
close table all
close database all
mình chỉ biết có vậy, chú ý là bạn phải được quyền khai thác số liệu trong sql sever

tayngangvfp
15-03-2010, 10:01
@trichpha
1.SQL sever có 2 chế độ cấu hình đăng nhập: A/đăng nhập = tên+quyền của người dùng windows và B/đăng nhập theo tên và quyền ủe trong SQL. Vậy có thể SQL sever trên máy bạn được thiết lập theo kiểu A. Bạn kiểm tra lại xem
2. bạn thiết lập câu lệnh để dùng file help như thế nào?
3.Trong VFP9 có hộp thoại này: bấm phải vào 1 đối tượng trên report \ properties \ dynamics: add => đặt tên => hộp thoại cònig dynamic properties.


@changkhoag
Mình nghĩ có lẽ VFP không tương thích hoàn toàn với các câu lệnh cũ: say, get...

Theo mình thì bạn nên tạo 1 form để thay thế thì hay hơn.

hoangpnt349
15-03-2010, 10:43
[QUOTE=trichpha;2038719]Hiện tại, mình đang gặp phải một số vấn đề:
Vấn đề 1: Với code viết bằng VFP truy cập vào CSDL SQL server, mình không thể dùng đoạn code sau để kết nối vào CSDL SQL server:
cConnect=;
"DRIVER=SQL Server;"+;
"SERVER=TenServer;"+;
"UID=TenDangNhapCSDL_SQLserver;"+;
"PWD=MatKhauDangNhap_SQLserver;"+;
"APP=Microsoft Visual FoxPro;"+;
"WSID=TenMayTinh;"+ ;
"DATABASE=TenDataBase_SQLserver"
CREATE CONNECTION "connect_to_SQLserver" CONNSTRING cConnect
DBSETPROP("connect_to_SQLserver","CONNECTION","DispLogin",3)
lnConnHandle=SQLCONNECT("connect_to_SQLserver")
IF lnConnHandle<>-1
RETURN 1
ELSE
RETURN -1
ENDIF


(Đoạn code được tham khảo từ bác TayNgangVFP)
Đoạn code trên luôn trả về giá trị -1 (Các giá trị TenServer,TenDangNhapCSDL_SQLserver,MatKhauDangNha p_SQLserver,TenMayTinh,TenDataBase_SQLserver đều đã được xác định phù hợp)
Nhưng nếu trước khi chạy đoạn code trên, trong My Network Places mình kết nối đến Server bằng Account+Pass của Windows XP(HDH đang dùng trên Server) thì lại kết nối được
Nguyên nhân sai sót do lệnh hay do thiết lập hệ thông mạng chưa phù hợp?

Bạn thử tham khảo link bên dưới xem sao:
http://my.opera.com/hoangpnt349/blog/vfp9-mysqlexec

vivafuture
15-03-2010, 16:33
Hi Anh Chị Em

Cho mình hỏi cách convert dữ liệu từ field kiểu Memo sang SQL server 2008 với ạ. Ứng type nào & convert cách nào hết nội dung dài trong Memo
Mình convert ko bị "blank" làm lơ thì cũng bị mất 1 khúc do giới hạn ký tự hix

Thanks nhiều

changkhoag
15-03-2010, 22:45
Anh TayngangVFP

Anh vui lòng share cho mình 1 form tìm kiếm để tham khảo nhé. Cảm ơn anh bạn nhiều!

trichpha
16-03-2010, 00:04
@trichpha
1.SQL sever có 2 chế độ cấu hình đăng nhập: A/đăng nhập = tên+quyền của người dùng windows và B/đăng nhập theo tên và quyền ủe trong SQL. Vậy có thể SQL sever trên máy bạn được thiết lập theo kiểu A. Bạn kiểm tra lại xem


Tôi đã thiết lập chế độ xác thực của SQL.
http://www.mediafire.com/imageview.php?quickkey=mqhinl2lymm

Cụ thể, tôi đã Disabled account sa và xóa account Administrator trong SQL server và đã đăng nhập thành công vào SQL server với màn hình đang nhập sau:
http://www.mediafire.com/imageview.php?quickkey=gzeugt45iwz


@trichpha
2. bạn thiết lập câu lệnh để dùng file help như thế nào?



Mình dùng lệnh:
SET HELP ON
SET HELP TO Chidan.CHM

Khi bấm F1 tại cửa sổ lệnh Fox đã xuất hiện màn Help đó.
Còn trong Form, tại Click của nút lệnh, mình đã đặt lệnh:
HELP ID ***

(*** là chỉ mục tương ứng)
Vậy mà không được?!!!

Còn đây là hộp hội thoại của đối tượng của phiên bản VFP mà mình đang dùng:
http://www.mediafire.com/imageview.php?quickkey=yloifff0del
Không thấy bóng dáng cái anh: dynamics đâu cả?
:-(
và đây là phiên bản VFP đang cài trên máy mình:
http://www.mediafire.com/imageview.php?quickkey=3lnnagmzotm
Tớ bỏ mấy cái @ say get lâu lắm rồi. Hiện chỉ dùng Form để xây dựng giao diện thôi.
Tớ mới chuyển sang tìm hiểu cái anh SQL nên còn ngu ngơ lắm. Cảm ơn anh em đã nhiệt tình giúp đỡ.
Bac TayngangVFP và anh em xem giúp tiếp xem nguyên nhân ở đâu với?

Mình thử đoạn code của bác hoangpnt349
cụ thể như sau:
wStrConn = [Driver=SQL Server;Server=<Server name>;Database=<Data base name>;UID=<user name>;PWD=<user Password>]
t=SQLstringCONNECT(wStrConn)

đợi 1 lúc thì nhận được báo lỗi sau:
http://www.mediafire.com/imageview.php?quickkey=1df5imfkj3v
Hy vọng với thông báo lỗi này, anh em sẽ giúp được. Mình xin khẳng định trước là tên server đã xác định đúng.

[=========> Bổ sung bài viết <=========]


Hi Anh Chị Em

Cho mình hỏi cách convert dữ liệu từ field kiểu Memo sang SQL server 2008 với ạ. Ứng type nào & convert cách nào hết nội dung dài trong Memo
Mình convert ko bị "blank" làm lơ thì cũng bị mất 1 khúc do giới hạn ký tự hix

Thanks nhiều

Theo mình, bạn nên để trường trong SQL tương ứng với trường Memo có kiểu nVarchar(Max)

tayngangvfp
16-03-2010, 07:03
@trichpha
1.Bạn sử dụng bản SQL sever 2005 hay bản SQLExpress?
3.Bạn đang dùng VFP9 còn cái kia là VFP9 SP2

trichpha
16-03-2010, 23:44
@trichpha
1.Bạn sử dụng bản SQL sever 2005 hay bản SQLExpress?
3.Bạn đang dùng VFP9 còn cái kia là VFP9 SP2

Mình dùng SQL server 2005.
Cảm ơn TayngangVFP nhiều nhé

Mình đã sửa được lỗi truy cập SQL server do tìm được hướng dẫn tại địa chỉ :
http://msdn.microsoft.com/en-us/library/ms165647%28SQL.90%29.aspx


Enabling Network Access to SQL Server Express

When Microsoft SQL Server 2005 Express Edition (SQL Server Express) is installed, the networking protocols are disabled by default for security purposes.
Providing Network Access

Many applications that use SQL Server Express will only access data locally, and so leaving these protocols disabled is appropriate. However, if your application accesses an instance of SQL Server Express that is running on a different computer, you must enable one or more network protocols, and you must also start the SQL Server Browser service.

The following procedural topics describe how to enable network access to SQL Server Express:

How to: Start and Stop the SQL Server Browser Service (SQL Server Express)

How to: Enable Network Access During Installation (SQL Server Express)

How to: Enable Network Access in SQL Server Configuration Manager (SQL Server Express)

chauthuy
17-03-2010, 09:56
hi anh chi
cho em hoi mot chut ve VF
cac form cap nhat ...chug e deu roi
nhug ma code sao luu du lieu la nhu the nao chug e chua ro lam

tomkit
17-03-2010, 14:18
Hi all
Mình có một ct báo cáo VFP có sẵn, do người khác viết, giờ mình muốn chỉnh sửa layout, thêm cột, nhưng khi mở report designer ra thì mình ko chỉnh được độ rộng của report dù đã thay đổi các các thông tin trong propeties.
bạn nào biết chỉ giùm mình
Thanks

luu_luu
17-03-2010, 14:41
Hi all
Mình có một ct báo cáo VFP có sẵn, do người khác viết, giờ mình muốn chỉnh sửa layout, thêm cột, nhưng khi mở report designer ra thì mình ko chỉnh được độ rộng của report dù đã thay đổi các các thông tin trong propeties.
bạn nào biết chỉ giùm mình
Thanks
chọn page setup - đổi A4 sang A3 - hay potrait sang landscape

thong88
18-03-2010, 12:35
cấc cao thủ vfp ơi em đang làm bài quan lý thiết bị nhưng sửa mã thấy bí đường quá mong răng được sự góp ý của quý vị.
Em muốn thống kê tu ngày này đến ngày khác phải làm sao.
xin cho em xin một đoạn code để em tham khảo em căm ơn
Ngoài ra em có người bạn đang làm đề tài Quản lý Đoàn phí và quản lý sinh vien bằng foxpro nếu ai có bài xin post cho em thao khao với.
Email lien hê: toiyeu8836@yahoo.com

tietduc99
18-03-2010, 19:46
Mình đang làm đồ án thực tập quản lí thiết bị dạy học klf. Mình đang suy nghĩ về cách sửa mã ( có đặt khóa chính ) trong form cập nhật giáo viên. Mình làm 2 ngày nay rồi mà vẫn chưa được. Bạn nào biết thì chỉ mình nhe. Mình cảm ơn rất nhiều ( thanks very much ). Nếu bạn nào có source code về đồ án quản lí thiết bị dạy học klf (klf: trung tâm hỗ trợ học tập ) thì gửi email cho mình nhe. Email của mình là lutietducit@gmail.com. Mình đang cần gấp. Mong các bạn gửi cho mình sớm nhe.

luu_luu
19-03-2010, 08:14
cấc cao thủ vfp ơi em đang làm bài quan lý thiết bị nhưng sửa mã thấy bí đường quá mong răng được sự góp ý của quý vị.
Em muốn thống kê tu ngày này đến ngày khác phải làm sao.
xin cho em xin một đoạn code để em tham khảo em căm ơn
Ngoài ra em có người bạn đang làm đề tài Quản lý Đoàn phí và quản lý sinh vien bằng foxpro nếu ai có bài xin post cho em thao khao với.
Email lien hê: toiyeu8836@yahoo.com
thử đọan này xem:
public tungay,denngay
tungay=ctod([01/01/2010])
denngay=ctod([15/01/2010])
use <filename>
set filter to between(ngay,tungay,denngay)
browse

infortech
19-03-2010, 08:45
Các bạn có táăc mắc gì về ngôn ngữ lập trình Visual Foxpro xin cứ hỏi. Một ngôn ngữ mà giới lập trình chuyên nghiệp cho là kẻ ngoại đạo nhưng tôi thì không , nó có thể làm được tất cả.

Liên hệ : ttphong68@yahoo.com

Đồng ý với bạn, nó tường minh, dễ lập trình hơn tất cả các ngôn ngữ khác, nhược điểm là :
1. Không bảo mật cao,(nhưng giờ đã có SQL thay thế DBF là ok rồi),
2. Chưa hỗ trợ Unicode, tôi nghĩ nếu nhược điểm này mà được khắc phục thì không gì bằng.
Không hiểu sao MS chỉ tích hợp VF6 trong VisualStudio6.0, còn các phiên bản NET thì không thấy.(Có thể MS chưa mua hết được bản quyền của FOX chăng)

[=========> Bổ sung bài viết <=========]


Các sản phẩm của Cty mình viết đa phần là VFP + SQL Server. Nếu MS cho die thì mình nghỉ làm tin học luôn !!! Bộ Studio .NET vẫn có VFP9 đó thôi !

Bạn có thể giúp mình 1 đoạn form code ngắn trong VFP kết nối SQL và thêm (insert) 1 dòng dữ liệu vào CSDL SQL Server ? Mình chưa biết chuyển ứng dụng VSfox sang sử dụng CSDL SQL server. Thank.

Trong Studio.NET làm gì có VFP9 hả bạn, chỉ có bộ Help thôi.
Fox chỉ được tích hợp trong Visual Studio 6 thôi, với phiên bản là VFP6. Châm hết, các phien bản 7,8,9... thì MS tự phát triển đơn lẻ không tích hợp trong .NET nữa, không hiểu sao.

thong88
19-03-2010, 21:03
em xin cam on rat nhiều.
nếu em muốn sửa mã vay phải lam sao? xin đựoc sự hỗ trợ nhanh. em xin chân thành cảm ơn

trichpha
22-03-2010, 00:02
Lại có vấn đề xin anh TayNgangVFP và mọi người chỉ giáo nữa rồi:
- CSDL SQL server của một ứng dụng giữa máy ở tính của tôi và máy tính đang khai thác sử dụng liên tục có sự khác biệt về cấu trúc và các mối quan hệ trong CSDL do chương trình đang trong giai đoạn vừa hoàn thiện, vừa sử dụng.
Vậy để xây dựng một chương trình trong VFP có chức năng sao lưu cấu trúc CSDL SQL server từ máy của tôi và cập nhật lại cấu trúc đó cho máy đang khai thác sử dụng cần thực hiện thế nào?
- Nếu anh em, ai có code liên quan đến vấn đề trên thì cho tham khảo với.

Tôi đã thử tìm hiểu chương trình gendbc.prg của VFP nhưng nó chỉ cho phép sao chép và bung ra toàn bộ cấu trúc Database trong VFP thôi.

Link file Code của chương trình gendbc.prg để anh em tham khảo và cho ý tưởng:
http://www.mediafire.com/?mmzj5nd2njn

luu_luu
24-03-2010, 07:19
cac bac tien boi foxpro, xin cho gian boi duoc tro giup lam do an.
gian boi muon in ra report tu ma (vd:TH001) ma chuyen sang ten (la Tin hoc)
Mong duoc cac bac tien boi tro giup,xin chan thanh cam on.
tại cột cần in của report, bạn gắn lệnh:
thí dụ:
iif(ms=[TH001],[Tin Học 1],iif(ms=[TH002],[Tin Học 2],[]))

dung_kg
24-03-2010, 10:47
Mình thiết kế 1 form có textbox truong mình làm bẫy lỗi tại textbox này (nếu nhập trường không có trong dm_truong thì xẽ hiện ra của sổ cho chọn). Việc này đã thực hiện khá tốt. Tuy nhiên mình có thiết kế thêm 1 module tìm kiếm (trong trong file libprg.prg) trong cửa ổ này (phím ctrl+F) nhưng khi hiện ra của sổ tìm kiếm rê chuột vào các radio button thì tất cả mất hết. Nhờ các bạn và tư vấn chình sửa lại dùm mình. File :
http://www.mediafire.com/?zxfgmdk5nl1

[=========> Bổ sung bài viết <=========]

Anh tayngangVFP oi.....! giúp dùm mình với. mình đang sử dụng VFP 9.0. Địa chỉ mail của mình: changkhoag@gmail.com

Đoạn code timkiem hay nhưng mình chưa hiểu trong code này co 2 phần là Ignore Case(yes,no) và Find rest(yes,no) dùng như thế nào và kết quả ra sao?
bạn giải thích giúp nhé!

tayngangvfp
24-03-2010, 16:32
Lại có vấn đề xin anh TayNgangVFP và mọi người chỉ giáo nữa rồi:
- CSDL SQL server của một ứng dụng giữa máy ở tính của tôi và máy tính đang khai thác sử dụng liên tục có sự khác biệt về cấu trúc và các mối quan hệ trong CSDL do chương trình đang trong giai đoạn vừa hoàn thiện, vừa sử dụng.
Vậy để xây dựng một chương trình trong VFP có chức năng sao lưu cấu trúc CSDL SQL server từ máy của tôi và cập nhật lại cấu trúc đó cho máy đang khai thác sử dụng cần thực hiện thế nào?
- Nếu anh em, ai có code liên quan đến vấn đề trên thì cho tham khảo với.

Tôi đã thử tìm hiểu chương trình gendbc.prg của VFP nhưng nó chỉ cho phép sao chép và bung ra toàn bộ cấu trúc Database trong VFP thôi.

Link file Code của chương trình gendbc.prg để anh em tham khảo và cho ý tưởng:
http://www.mediafire.com/?mmzj5nd2njn

m chưa hiểu ý bạn. Bạn nói rõ hơn xem

trichpha
24-03-2010, 22:37
m chưa hiểu ý bạn. Bạn nói rõ hơn xem

Mình muốn đồng bộ cấu trúc CSDL của SQL server giữa 2 server. Một server ở nhà đang được sử dụng để viết chương trình nên cấu trúc dữ liệu thương xuyên được thay đổi. Còn server nơi đang sử dụng chương trình ứng dụng thì cần đồng bộ cấu trúc giống server ở nhà.

pso
29-03-2010, 12:24
hướng dẫn mình cách in nội dung của 1 record nào đó trong file dbf mà không cần tạo report. Mình muốn in hóa đơn trên giấy liên tục khổ giấy tự chọn nhưng trong report không cho phép chọn khổ tùy ý, thiết kế trên report A4 thì máy kéo hết tờ giấy mới dừng lại nhưng mình muốn in hết nội dung máy sẽ dừng lại

ngthva
29-03-2010, 16:20
Các bạn cho mình hỏi, mình có 1 form nhập điểm (CSDL fox). Mình muốc đưa lên trang web của cơ quan để các giáo viên tự vào điểm cho học sinh ?
Hỏi : Mình nên làm gì ? Có cần phải đưa toàn bộ CSDL đó lên web luôn không?
Làm sao để các máy truy cập có thể nhận diện được form foxpro trên web?
(nếu được nhờ các bạn cho mình xin code đó nhé!) Hiện tại mình rất cần.
Các bạn giúp mình với! Cảm ơn rất nhiều.

ngthva
29-03-2010, 16:22
Các bạn cho mình hỏi, mình có 1 form nhập điểm (CSDL fox). Mình muốc đưa lên trang web của cơ quan để các giáo viên tự vào điểm cho học sinh ?
Hỏi : Mình nên làm gì ? Có cần phải đưa toàn bộ CSDL đó lên web luôn không? Các bạn giúp mình nhé! Cảm ơn rất nhiều

luu_luu
30-03-2010, 07:57
hướng dẫn mình cách in nội dung của 1 record nào đó trong file dbf mà không cần tạo report. Mình muốn in hóa đơn trên giấy liên tục khổ giấy tự chọn nhưng trong report không cho phép chọn khổ tùy ý, thiết kế trên report A4 thì máy kéo hết tờ giấy mới dừng lại nhưng mình muốn in hết nội dung máy sẽ dừng lại
trước tiên bạn phải có khổ giấy theo ý bạn,
bạn vào printer setting-phải chuột-sever properties-tại thẻ form-chọn create new form-nhập dài và rộng theo ý mình-đặt tên và lưu lại-khi thiết kế report-page setup chọn tên khổ giấy mà bạn mới thiết kế là được

iamhatinh
30-03-2010, 09:15
mấy pro cho tớ hỏi tí : dùng chương trình Refox XI+ để sửa file .APP của 1 chương trình viết bằng Foxpro2.6 như thế nào vậy?
Dùng Refox decompiler thì nó xuất ra 1 file .ref , còn nếu split thì xuất các file+ folder.
Sửa xong rồi, làm sao " nhét" nó về file .app vậy ?

pso
30-03-2010, 16:37
printer setting-phải chuột-sever properties-tại thẻ form-chọn create new form? mấy cái này thiết lập trong mấy in hay ở đâu dzậy sao mình tiềm không thấy

[=========> Bổ sung bài viết <=========]


Các bạn cho mình hỏi, mình có 1 form nhập điểm (CSDL fox). Mình muốc đưa lên trang web của cơ quan để các giáo viên tự vào điểm cho học sinh ?
Hỏi : Mình nên làm gì ? Có cần phải đưa toàn bộ CSDL đó lên web luôn không? Các bạn giúp mình nhé! Cảm ơn rất nhiều

tạo một form ASP để nhập

zezo76
30-03-2010, 23:10
cac bác chỉ em với.em mới nhận dược cái đồ án môn học la .viết chương trình thu học phí cua phòng tài chính kế toán dựa tren sql mà em không biết băt` đầu từ đâu hết.có bác nào biết chỉ em với

luu_luu
31-03-2010, 08:12
printer setting-phải chuột-sever properties-tại thẻ form-chọn create new form? mấy cái này thiết lập trong mấy in hay ở đâu dzậy sao mình tiềm không thấy

[=========> Bổ sung bài viết <=========]



tạo một form ASP để nhập
của windows bạn ơi, bấm START chọn printer setting ...

pso
31-03-2010, 12:37
mình đang sử dụng w7 mấy in epson LQ 2080, vào propeties của mấy in nhưng không thấy thẻ form

ngthva
31-03-2010, 14:54
Được gửi bởi ngthva
Các bạn cho mình hỏi, mình có 1 form nhập điểm (CSDL fox). Mình muốc đưa lên trang web của cơ quan để các giáo viên tự vào điểm cho học sinh ?
Hỏi : Mình nên làm gì ? Có cần phải đưa toàn bộ CSDL đó lên web luôn không? Các bạn giúp mình nhé! Cảm ơn rất nhiều

tạo một form ASP để nhập


Còn cách nào khác không? vì minh không rành ASP.NET
Cố gắng giúp giùm. Nếu bỏ công tìm hiểu thêm về ASP thì mất quá nhiều thời
gian quá, hơn nữa dữ liệu phải nhập lại...Bạn ơi!

pso
31-03-2010, 15:15
bạn kết nối trực tiếp csdl fox với ASP để nhập luôn, chứ nhập lại làm gì. giải pháp là bạn gửi cho giáo viên một mẫu bản điểm bằng excel sao cho khi họ nhập xong bạn có thể dùng chương trình của bạn ghi nội dung này vào dbf. Nhớ file excel bạn không cho họ thay đổi mẫu bạn đã qui định nếu không khi đọc vào dbf sẽ bị điểm môn này gắn qua môn kia

ducnmqb
31-03-2010, 20:39
Xin chào!
Minh muốn xây dựng chương trình viết băng VFP kết nối vào một file HOCSINH.CSV để lấy dữ liệu. Minh không biết câu lệnh kết nối. Xin các các bạn chỉ giúp.
Minh sử dụng doan code này nhưng không được:

CLOSE TABLES ALL
lcMdbFile=GETFILE('CSV')
IF NOT FILE(lcMdbFile)
RETURN
ENDIF

lnHandle = SQLSTRINGCONNECT('Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ='+lcMdbFile+';Extensions=asc,csv,tab,t xt')
IF m.lnHandle < 0
AERROR(laErr)
MESSAGEBOX('Khong ket noi duoc'+laErr(1,2), 16, 'SQL Connect Error')
ELSE
MESSAGEBOX('Ket noi duoc'+laErr(1,2), 16, 'SQL Connect Error')
ENDIF

luu_luu
01-04-2010, 09:46
mình đang sử dụng w7 mấy in epson LQ 2080, vào propeties của mấy in nhưng không thấy thẻ form
start-tại ô search gõ print management - phần kết quả chọn print management-print severs-chọn máy local-forms-phải chuột-manage form-tại thẻ form-chọn create new form?

pso
01-04-2010, 12:35
start-tại ô search gõ print management - phần kết quả chọn print management-print severs-chọn máy local-forms-phải chuột-manage form-tại thẻ form-chọn create new form?

thanks luu_luu minh lam duoc roi!

[=========> Bổ sung bài viết <=========]


Xin chào!
Minh muốn xây dựng chương trình viết băng VFP kết nối vào một file HOCSINH.CSV để lấy dữ liệu. Minh không biết câu lệnh kết nối. Xin các các bạn chỉ giúp.
Minh sử dụng doan code này nhưng không được:

CLOSE TABLES ALL
lcMdbFile=GETFILE('CSV')
IF NOT FILE(lcMdbFile)
RETURN
ENDIF

lnHandle = SQLSTRINGCONNECT('Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ='+lcMdbFile+';Extensions=asc,csv,tab,t xt')
IF m.lnHandle < 0
AERROR(laErr)
MESSAGEBOX('Khong ket noi duoc'+laErr(1,2), 16, 'SQL Connect Error')
ELSE
MESSAGEBOX('Ket noi duoc'+laErr(1,2), 16, 'SQL Connect Error')
ENDIF

PUBLIC nHandle
nHandle = ConnectDatabaseSQL()
IF nHandle>0 THEN
MESSAGEBOX("Kết nối thành công")
ELSE
MESSAGEBOX("Lỗi kết nối")
ENDIF
*=====ham ket noi
FUNCTION ConnectDatabaseSQL
LOCAL nHandle, ConnectString
ConnectString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=D:\;Extensions=asc,csv,tab,txt;"
nHandle = SQLSTRINGCONNECT(ConnectString)
RETURN nHandle
bạn để file HOCSINH.CSV trong đĩa D hoặc bạn dùng getdir() để lấy path đến file HOCSINH.CSV, không chỉ tên file trong chuỗi kết nối. chúc bạn thành công

tietduc99
01-04-2010, 20:59
Các bạn cho mình hỏi nếu mình muốn nhập ngày tháng năm (đ/mm/yyyy) trong visual foxpro 9.0 thì mình phải làm như thế nào?

[=========> Bổ sung bài viết <=========]

Các bạn cho mình hỏi nếu mình muốn nhập ngày tháng năm (dd/mm/yyyy) trong visual foxpro 9.0 thì mình phải làm như thế nào?

pso
02-04-2010, 07:20
sử dụng hàm DATE(năm,tháng,ngày) để nhập

luu_luu
02-04-2010, 08:04
Các bạn cho mình hỏi nếu mình muốn nhập ngày tháng năm (đ/mm/yyyy) trong visual foxpro 9.0 thì mình phải làm như thế nào?

[=========> Bổ sung bài viết <=========]

Các bạn cho mình hỏi nếu mình muốn nhập ngày tháng năm (dd/mm/yyyy) trong visual foxpro 9.0 thì mình phải làm như thế nào?
mình nghĩ có thể bạn muốn nhập ngày tháng năm theo định dạng Việt Nam, nếu dzậy bạn làm như sau:
chú ý khi vfp khởi động định dạng ngày lúc nào cũng là mm/dd/yy, vì thế lệnh bên dưới lúc nào bạn cũng phải phát trước tiên

set date dmy && chuyển định dạng ngày ANH -> Việt Nam

chú ý là nếu bạn muốn năm có 4 số thì phải thêm lệnh

set century on && dèault là off chỉ có 2 số

haquocquan
04-04-2010, 22:30
Bạn nào cho mình xin một câu lệnh đầy đủ để import một sheet của Excel thành một file DBF (VFP9).

tomkit
05-04-2010, 09:07
Hi all
Trong code report của ct báo cáo VFP của cty mình có đoạn code cho phép copy file report ra định dạng xls,các máy tính khác đều copy đc ,trong ổ C đều tìm thấy file kết quả type xls , nhưng riêng máy mình thì mặc dù đã báo là "Da chep sang c:\DN_01.xls" nhưng khi vào ổ C thì ko thấy file kết quả đâu, bạn nào biết chỉ giùm mình với
Đây là đoạn code :

IF MESSAGEBOX("Ban co muon chep ra c:\DN_01.xls khong?",4 + 32 + 256,"Thong bao")=6
COPY TO c:\DN_01.xls TYPE xls
MESSAGEBOX("Da chep sang c:\DN_01.xls")
ENDIF

Thanks!

luu_luu
05-04-2010, 09:45
Bạn nào cho mình xin một câu lệnh đầy đủ để import một sheet của Excel thành một file DBF (VFP9).
import from <đường dẫn,tên tập tin excel> type xls sheet <tên sheet>

pso
05-04-2010, 11:22
bạn thử copy to ra đĩa d xem sao, có thể đĩa c máy bạn bị security

tomkit
07-04-2010, 16:25
Thanks PSO, mình copy đc rồi
Mình đang cần làm thêm một tree trên form chạy báo cáo , bạn nào biết về tree ko chỉ giúp mình với
Yêu cầu : list ra tên các công ty cha, công ty con theo dạng tree để từ đấy user sẽ check một số công ty cha, con để chọn làm tham số chạy báo cáo tài chính

pso
08-04-2010, 07:53
Tạo TreeView
add vào form một ole Treeview, ole imageslist (để lấy hình trên node cho đẹp nhớ đưa hình vào ole này trớc nhé)
trong init của treeview
Local Ol
&&This.ImageList=ThisForm.Images && nếu muốn ấy icon cho node
Ol = ThisForm.oleTree
ONode = Ol.nodes.ADD(,1,"ROOT1","Công ty cha 1",9,) && nếu không có icon thì tham so 9 bỏ trống
ONode = Ol.nodes.ADD("ROOT1",4,"TAB1","Con 1 cty cha 1",11,)
ONode = Ol.nodes.ADD("ROOT1",4,"TAB2","Con 2 cty cha 1",3,)
ONode = Ol.nodes.ADD("ROOT1",4,"TAB3","Con 3 cty cha 1",7,)

ONode = Ol.nodes.ADD(,1,"ROOT2","Công ty cha 2",4,)
ONode = Ol.nodes.ADD("ROOT2",4,"TAB4","Con 1 cty cha 2",10,)
ONode = Ol.nodes.ADD("ROOT2",4,"TAB5","Con 2 cty cha 2",5,)

***ONode = Ol.nodes.ADD("TAB5",4,"TAB6","Con 1 của con 2 của cty cha 2",14,)

bạn chú ý mấy cái ROOT,và TAB: đây là key của node
OK đã tạo xong treeview
xử lý khi click trên sự kiện NodeClick của treeview
*** ActiveX Control Event ***
LPARAMETERS node
Local iChay, GiaTri
GiaTri=Alltr(node.Key) && lấy key
DO CASE
CASE GiaTri="TAB1" && khi click vao con1 của cha 1
lệnh
CASE GiaTri="TAB2"
....
&& hoặc xử lý trên cấp cha thì
CASE GiaTri="ROOT1" && thì làm gì đó
ENDCASE
bạn nghiên cứu thêm nhé
muốn có checkboxes đặt thuộc tính checkboxes của tree là true

tomkit
09-04-2010, 11:20
Cám ơn PSO nhé , mình sẽ thử.
Rose4U

[=========> Bổ sung bài viết <=========]

Cho mình hỏi trong Fox có cho phép sửa cấu trúc bảng giống như kiểu
ALTER TABLE table_name
MODIFY column_name column_type;

ở phần command mình đánh MODIFY STRUCTURe thì nó cho phép sửa cấu trúc bảng nhưng mình muốn viết trong đoạn code của program thì làm thế nào?

amyamy
09-04-2010, 19:47
Các bác giúp với, mình có file dữ liệu dbf font chữ ancuu, khi đưa vào chương trình xử lý thì bị sai font vì font của mỗi từ là chữ hoa đầu tiên, nếu chuyển thành chữ in hết thì khi đưa vào chương trình xử lý sẽ không bị sai font vậy cho mình hỏi có cách nào chuyển font của file này thành chữ in hết không? Mình không rành về Fox mong các bác giúp đỡ, cám ơn các bácvà chúc các bá nhiều sức khỏe.

luu_luu
10-04-2010, 10:46
Cám ơn PSO nhé , mình sẽ thử.
Rose4U

[=========> Bổ sung bài viết <=========]

Cho mình hỏi trong Fox có cho phép sửa cấu trúc bảng giống như kiểu
ALTER TABLE table_name
MODIFY column_name column_type;

ở phần command mình đánh MODIFY STRUCTURe thì nó cho phép sửa cấu trúc bảng nhưng mình muốn viết trong đoạn code của program thì làm thế nào?
alter table <tablename> alter column type(n)

tamdn
10-04-2010, 13:25
Chào các bạn mình là thành viên mới,học qua về fox từ năm 1996 rất thích vfp6. các bạn giúp mình giải quyết một tình huống như thế này: Mình có một table có 1 fiel là maso được nhập 1000 record đánh số VD: A1 đến A1000 bây giờ muốn viết 1 đoạn code cho danh sách trên được xáo ngẫu nhiên và khi bấm 1 phím gán trên bàn phím (VD:F2)thì bấm được một record ngẫu nhiên nào đó trong danh sách rồi in ra report như kiểu bạn bấm biển khi đăng ký xe máy. xin mọi người chỉ giúp

danngudien
11-04-2010, 13:11
Bạn nào có code chuyển font tiếng việt tù unicode sang VNi trong VBA cho xin

tayngangvfp
12-04-2010, 14:18
Chào các bạn mình là thành viên mới,học qua về fox từ năm 1996 rất thích vfp6. các bạn giúp mình giải quyết một tình huống như thế này: Mình có một table có 1 fiel là maso được nhập 1000 record đánh số VD: A1 đến A1000 bây giờ muốn viết 1 đoạn code cho danh sách trên được xáo ngẫu nhiên và khi bấm 1 phím gán trên bàn phím (VD:F2)thì bấm được một record ngẫu nhiên nào đó trong danh sách rồi in ra report như kiểu bạn bấm biển khi đăng ký xe máy. xin mọi người chỉ giúp

Giả sử MASO được đánh theo qui ước: A1,A2,...A10,A11,...A100,A101,...A999,A1000.

Dùng đoạn code sau để chọn "ngẫu nhiên" 1 mã

cMaDuocChon="A"+ALLTRIM(STR(SoNgauNhien(1,1000)))

FUNCTION SoNgauNhien
PARAMETERS nTuSo, nDenSo
=RAND(-1)
RETURN INT((RAND()*(nDenSo-nTuSo+1)+nTuSo))

tamdn
12-04-2010, 18:29
Cám ơn sư phụ tayngangvfp đã cho mình đoạn code. Chúc sư phụ và gia đình luôn mạnh khoẻ, thành đạt. Sự nhiệt tình của sư phụ trên diễn đàn thật đáng khâm phục.
**********
Tayngang ơi đoạn code bạn cho đúng là lấy được một số ngẫu nhiên trong khoảng từ 1 đến 1000. Nhưng mình cần là lấy ra dữ liệu được đánh sẵn từ một recod trong danh sách. Mình nói rõ hơn yêu cầu để bạn giúp nhé: Lý do ở phường nơi mình đang làm việc chuẩn bị chia đất dịch vụ phải tổ chức bốc thăm, xếp yêu cầu cho bốc thăm trên máy tính bằng cách bấm phím để chọn. dữ liệu là một danh sách các lô đất được đánh số ký hiệu riêng. mình phải lập chương trình làm sao đảm bảo sự công bằng và minh bạch để trong danh sách khoảng 3000 lô đất ai bấm được lô nào thì được chia lô đó. mình đã làm theo kiểu cho danh sách vào trong vòng lặp do while rồi, đã chạy thử thấy cũng ok nhưng chưa yên tâm, muốn xin cao kiến của sư phụ

tayngangvfp
12-04-2010, 20:33
Nhưng mình cần là lấy ra dữ liệu được đánh sẵn từ một recod trong danh sách. Mình nói rõ hơn yêu cầu để bạn giúp nhé: Lý do ở phường nơi mình đang làm việc chuẩn bị chia đất dịch vụ phải tổ chức bốc thăm, xếp yêu cầu cho bốc thăm trên máy tính bằng cách bấm phím để chọn. dữ liệu là một danh sách các lô đất được đánh số ký hiệu riêng. mình phải lập chương trình làm sao đảm bảo sự công bằng và minh bạch để trong danh sách khoảng 3000 lô đất ai bấm được lô nào thì được chia lô đó. mình đã làm theo kiểu cho danh sách vào trong vòng lặp do while rồi, đã chạy thử thấy cũng ok nhưng chưa yên tâm, muốn xin cao kiến của sư phụ

Gửi bạn 1 ví dụ sử dụng hàm Songaunhien ở trên, bạn có thể thay đổi để phù hợp với mục đích của bạn


**********

*Tao table tam
CLOSE TABLES ALL
CREATE TABLE Test ;
(MaSo I,;
Ten C(20))
FOR i=1 TO 20
APPEND BLANK
REPLACE MaSo WITH i,;
Ten WITH "Ky hieu :"+ALLTRIM(STR(RAND()*10000))
ENDFOR
CLEAR
* Chon record tu table
stt=1
DO WHILE RECCOUNT()>0
SELECT Test
nCauHoiduocChon=songaunhien(1,RECCOUNT())
GO RECORD nCauHoiduocChon
?STT,[/],MaSo,[ : ]
??TEn
DELETE
PACK
WAIT WINDOW "Record ke tiep"
stt=stt+1
ENDDO

WAIT WINDOW NOWAIT "Da xong"
*-------------------
FUNCTION SoNgauNhien
PARAMETERS nTuSo, nDenSo
=RAND(-1)
RETURN INT((RAND()*(nDenSo-nTuSo+1)+nTuSo))

*************


Ngoài ra có thể dùng MẢNG thay việc dùng TABLE.

tamdn
12-04-2010, 23:10
vd hay qua. xin cam on su phu tayngangvfp. Nho doan code su phu cho Toi da lam duoc chuong trinh nhu mong muon roi

dung_kg
14-04-2010, 11:17
Cùng 1 field trong report mình có liên kết nhiều trường của table, nhưng không biết cách xuống dòng như thế nào?
Cho hỏi lệnh xuống dòng trong filed là gì? Mong giúp đỡ!

hoangpnt349
14-04-2010, 14:10
Cùng 1 field trong report mình có liên kết nhiều trường của table, nhưng không biết cách xuống dòng như thế nào?
Cho hỏi lệnh xuống dòng trong filed là gì? Mong giúp đỡ!

Nếu bạn muốn mỗi trường của table là 1 dòng thì trong field của report bạn dùng công thức cộng chuỗi:
truong1 + chr(13) + chr(10) + truong2 + chr(13) + chr(10) + ... + truongn

Nếu bạn muốn tự động xuống dòng khi đủ độ dài trong field của report thì click chuột phải lên field của report >> Properties >> General >> Stretch with overflow.

anmilan
14-04-2010, 14:54
chào bạntayngangvfp, mình muốn hỏi bạn một việc sau:
mình có một file dữ liệu tailieu.dbf,mình muốn viết một đoạn code để in dữ liệu từ trang n đến m nào đó thì như thế nào? Rất mong bạn sớm chỉ dẫn!

hanoihostel
14-04-2010, 15:07
ngày trước mình cũng thích lập trình lắm, chẳng hiểu sao, dòng đời đưa đầy mình lại làm marketing trực tuyến, híc, lắm lúc dỗi thời gian, ôn lại tí nhưng thấy cũng chẳng làm được gì nếu không liên tục ôn luyện, có lẽ phải bỏ mất một nghề mà mình đã bỏ nhiều thời gian rèn luyện, phí quá :D

luu_luu
14-04-2010, 15:39
chào bạntayngangvfp, mình muốn hỏi bạn một việc sau:
mình có một file dữ liệu tailieu.dbf,mình muốn viết một đoạn code để in dữ liệu từ trang n đến m nào đó thì như thế nào? Rất mong bạn sớm chỉ dẫn!
bạn muốn in lại từ trang 5 đến trang 10
REPORT FORM <REPORT NAME> RANGE 5,10 TO PRINTER

danngudien
16-04-2010, 20:34
Viết code như thế nào để biết tên các files chứa trong thư mục hiện hành, các Bác giúp với!
Cám ơn

tayngangvfp
17-04-2010, 10:17
Viết code như thế nào để biết tên các files chứa trong thư mục hiện hành, các Bác giúp với!
Cám ơn

nSoFile=ADIR(aMangTenFile,"*.*")
for i=1 to nSoFile
?aMangTenFile(i,1)
endfor

stocksky
22-04-2010, 00:30
IF luu1==1
IF EMPTY(thisform.text1.Value)
MESSAGEBOX("Vui long nhap ma chuc vu",32+0)
thisform.text1.SetFocus
RETURN
ENDIF
SELECT dm_cv
LOCATE FOR ALLTRIM(ma_cv)==ALLTRIM(thisform.text1.Value)
IF FOUND()
MESSAGEBOX("ma chuc vu da ton tai",32+0)
thisform.text1.SetFocus
RETURN
ENDIF
IF EMPTY(thisform.text2.Value)
MESSAGEBOX("Vui long nhap ten chuc vu",32+0)
thisform.text1.SetFocus
RETURN
ENDIF

SELECT dm_cv
APPEND BLANK
replace ma_cv WITH ALLTRIM(thisform.text1.Value)
replace ten_cv WITH ALLTRIM(thisform.text2.Value)
replace pccv WITH thisform.text3.Value

thisform.Refresh
thisform.them.Enabled=.t.
ELSE
x=RECNO()
IF (ALLTRIM(thisform.text1.Value))<> ALLTRIM(ma_cv)
SELECT dm_cv
LOCATE FOR ALLTRIM(ma_cv)==ALLTRIM(thisform.text1.Value)
IF FOUND()
MESSAGEBOX("ma da co nhap lai",32)
RETURN
ELSE
GO x
REPLACE ma_cv WITH ALLTRIM(thisform.text1.Value), ten_cv WITH ALLTRIM(thisform.text2.value), pccv WITH thisform.text3.value
ENDIF
ELSE
REPLACE ten_cv WITH ALLTRIM(thisform.text2.value)
ENDIF
thisform.sua.Enabled= .T.
ENDIF

thisform.text1.Enabled=.f.
thisform.text2.Enabled=.f.
thisform.text3.Enabled=.f.
thisform.text1.value=''
thisform.text2.value=''
thisform.text3.value=''
this.Enabled= .F.
Sua giup minh voi doan code nay ghi loi la "data type mismatch" pccv la kieu numberic

hoangpnt349
22-04-2010, 08:13
IF luu1==1
IF EMPTY(thisform.text1.Value)
MESSAGEBOX("Vui long nhap ma chuc vu",32+0)
thisform.text1.SetFocus
RETURN
ENDIF
SELECT dm_cv
LOCATE FOR ALLTRIM(ma_cv)==ALLTRIM(thisform.text1.Value)
IF FOUND()
MESSAGEBOX("ma chuc vu da ton tai",32+0)
thisform.text1.SetFocus
RETURN
ENDIF
IF EMPTY(thisform.text2.Value)
MESSAGEBOX("Vui long nhap ten chuc vu",32+0)
thisform.text1.SetFocus
RETURN
ENDIF

SELECT dm_cv
APPEND BLANK
replace ma_cv WITH ALLTRIM(thisform.text1.Value)
replace ten_cv WITH ALLTRIM(thisform.text2.Value)
replace pccv WITH thisform.text3.Value

thisform.Refresh
thisform.them.Enabled=.t.
ELSE
x=RECNO()
IF (ALLTRIM(thisform.text1.Value))<> ALLTRIM(ma_cv)
SELECT dm_cv
LOCATE FOR ALLTRIM(ma_cv)==ALLTRIM(thisform.text1.Value)
IF FOUND()
MESSAGEBOX("ma da co nhap lai",32)
RETURN
ELSE
GO x
REPLACE ma_cv WITH ALLTRIM(thisform.text1.Value), ten_cv WITH ALLTRIM(thisform.text2.value), pccv WITH thisform.text3.value
ENDIF
ELSE
REPLACE ten_cv WITH ALLTRIM(thisform.text2.value)
ENDIF
thisform.sua.Enabled= .T.
ENDIF

thisform.text1.Enabled=.f.
thisform.text2.Enabled=.f.
thisform.text3.Enabled=.f.
thisform.text1.value=''
thisform.text2.value=''
thisform.text3.value=''
this.Enabled= .F.
Sua giup minh voi doan code nay ghi loi la "data type mismatch" pccv la kieu numberic

Bạn thử thay dòng:
replace pccv WITH thisform.text3.Value
-> replace pccv WITH CAST(thisform.text3.Value AS Numeric)
REPLACE ma_cv WITH ALLTRIM(thisform.text1.Value), ten_cv WITH ALLTRIM(thisform.text2.value), pccv WITH thisform.text3.value
-> REPLACE ma_cv WITH ALLTRIM(thisform.text1.Value), ten_cv WITH ALLTRIM(thisform.text2.value), pccv WITH CAST(thisform.text3.Value AS Numeric)

pso
22-04-2010, 10:56
đặt thuộc tính value của text3 là 0

mrvip08
22-04-2010, 22:56
em có cài đặt foxpro bản 9.0 nhưng ko hiểu sao sau khi tạo bảng dữ liệu,sau đó em lưu bảng dữ liệu lại thì ko hiện ra dòng :'Input data records now'..để lưu bảng dữ liệu vào .......đồng thời sau đó em đánh lệnh display lên để hiện bảng dữ liệu để nhập đữ liệu cho bảng thì nó không hiện lên bảng đữ liệu đã khởi tạo...vậy là sao hả các bác......

katori89
23-04-2010, 23:02
các bạn ơi...giúp mình vs!
mình có 1 bài về foxpro..tạo 1 bảng dữ liệu về quản lý xe máy trên project gồm tên chủ xe,số cmt,hộ khẩu thường trú,nơi cấp,ngày cấp,loại xe,số khung,nhãn hiệu,màu sơn,biển số,ngày cấp...sau đó tạo form tìm kiếm tất cả các dữ liệu trên.nhưng mình k viết được câu lệnh cho nút command tìm kiêm:(...các bạn giúp mình nhé:(

pso
24-04-2010, 14:07
các bạn ơi...giúp mình vs!
mình có 1 bài về foxpro..tạo 1 bảng dữ liệu về quản lý xe máy trên project gồm tên chủ xe,số cmt,hộ khẩu thường trú,nơi cấp,ngày cấp,loại xe,số khung,nhãn hiệu,màu sơn,biển số,ngày cấp...sau đó tạo form tìm kiếm tất cả các dữ liệu trên.nhưng mình k viết được câu lệnh cho nút command tìm kiêm:(...các bạn giúp mình nhé:(

mDieuKien=""
mWhere=""
bt1=thisform.txtchuxe.Value && ví dụ dzậy
bt2=thisform.txtcmnd.value
.....
mDieuKien=mDieuKien+iif(!empty(bt1)," AND chuxe Like '%"+bt1+"%'",iif(!empty(bt2)," AND socmnd=bt2",iif(....,"")) && chuxe,socmnd là tên field
mDieuKien=iif(left(mDieuKien,4)=" AND",substr(mDieuKien,5),mDieuKien)
mWhere=iif(!empty(mDieuKien)," WHERE "+mDieuKien
select * from bangDL &mWhere into table KQ

trungnguyen159
28-04-2010, 13:04
tình hình là thế này ạ,e học ở DH ktqd,trường em tổ chức thi trăc nghiệm trên máy tính sư dụng foxpro.Nhờ các bác phen này tìm giúp e cách lay CSDL ra hoăc có thể xuất ra file .doc dc ko ạ!!!!thank các bác nhiu`

bluett
28-04-2010, 16:18
Mình có 1 bảng dữ liệu khách hàng, giờ muốn trích ra những khách hàng sinh vào tháng 5, vậy phải dùng lệnh nào ạ? Câu lệnh trích xuất 'tháng' trong trường "ngày sinh" như thế nào ạ? Cảm ơn rất nhiều

pso
29-04-2010, 07:54
Mình có 1 bảng dữ liệu khách hàng, giờ muốn trích ra những khách hàng sinh vào tháng 5, vậy phải dùng lệnh nào ạ? Câu lệnh trích xuất 'tháng' trong trường "ngày sinh" như thế nào ạ? Cảm ơn rất nhiều

select * from khachhang where month(ngaysinh)=5 into cursor KQ

ducnmqb
30-04-2010, 15:29
Các bạn cho mình hỏi:
Mình có 01 file giaban.dbf, khi dùng lệnh SELECT:
SELECT * FROM C:\GIABAN
USE
USE C:\GIABAN
Đến lệnh này thì báo lỗi file GIABAN.DBF dang sử dụng.
Có cách nào để đóng file GIABAN sau câu lệnh SELECT không?
Xin cám ơn

tayngangvfp
01-05-2010, 09:00
Các bạn cho mình hỏi:
Mình có 01 file giaban.dbf, khi dùng lệnh SELECT:
SELECT * FROM C:\GIABAN
USE
USE C:\GIABAN
Đến lệnh này thì báo lỗi file GIABAN.DBF dang sử dụng.
Có cách nào để đóng file GIABAN sau câu lệnh SELECT không?
Xin cám ơn


SELECT * FROM C:\GIABAN
USE IN GiaBan
USE C:\GIABAN

icanvn
03-05-2010, 09:18
Anh em nào có thể thay đổi cái nút "Yes, No" trong messagebox thanh chữ tiếng việt là "Có,Không" được không?
Xin chỉ cho tôi biết với.

Xin cam ơn!

Còn nữa, ai có code về máy tính tay kiểu như CASIO không cho mình xin với

Minh1947
03-05-2010, 13:40
có ai chỉ mình cách tạo chẽk bõ trong grid không?

[=========> Bổ sung bài viết <=========]

Có ai giúp mình Tạo Checkbox trong grid của FoxPro 9 ?

luu_luu
04-05-2010, 08:27
Mình dung vfp để kết xuất dữ liệu sau đó muốn dùng winrar đẻ nén dữ liệu này nhưng không biết goi winrar như thế nào trong vfp. Bạn nào biết chỉ mình với.
Mail: giapdv74@yahoo.com.vn

[=========> Bổ sung bài viết <=========]

Mình dung vfp để kết xuất dữ liệu sau đó muốn dùng winrar đẻ nén dữ liệu này nhưng không biết goi winrar như thế nào trong vfp. Bạn nào biết chỉ mình với.
dùng dấu chấm than hay RUN là được nhưng phải chắc là bạn có bản winrar chạy trên DOS vì mình xài 7Z nên muốn nén thì phải dùng 7Z trên DOS chứ không dùng giao diện được thí dụ trong chương trình FOX bạn muốn nén thì phát lệnh !7z *.dbf <tên tập tin nén kể cả đường dẫn>

[=========> Bổ sung bài viết <=========]


có ai chỉ mình cách tạo chẽk bõ trong grid không?

[=========> Bổ sung bài viết <=========]

Có ai giúp mình Tạo Checkbox trong grid của FoxPro 9 ?
trứớc tiên bạn phải có GRID, thí dụ bạn muốn tạo checkbox trong column2, mở FORM, gọi from controls, bạn bấm phím phải vào GRID chọn EDIT, qua form controls click vào checkbox, qua GRID click vào column2, là bạn đã có checkbox trong column2 của GRID, sau đó bấm phím phải vào GRID chọn properties, tìm đến column2, tìm current control xổ xuống chọn checkbox...là được

tamhoat
05-05-2010, 17:57
Xin hoi cac bac, co lenh nao dung de copy mot Table tren word tu Workbook sang workbook khac khong, xin cam on

haquocquan
05-05-2010, 23:51
Các pro cho xin câu lệnh set thư mục mặc định với thư mục của file fox được chạy.
Ví dụ: file fox tại c:\vfp\vfp9.exe
Tất cả các thao tác (chạy file prg) đều thực tại thư mục c:\vfp
copy all to hc.dbf thì file hc.dbf sẽ nằm trong thư mục c:\vfp\

ngthva
06-05-2010, 08:17
Các bạn cho mình hỏi có phần mềm nào để chuyển trực tiếp hình ảnh quay camera đang giảng dạy tại hội trường lên webside không? để học sinh học trực tuyến đó.

tamhoat
06-05-2010, 08:59
*----------
haquocquan
Set thư mục mặc định.
Các pro cho xin câu lệnh set thư mục mặc định với thư mục của file fox được chạy.
Ví dụ: file fox tại c:\vfp\vfp9.exe
Tất cả các thao tác (chạy file prg) đều thực tại thư mục c:\vfp
copy all to hc.dbf thì file hc.dbf sẽ nằm trong thư mục c:\vfp\
*-----------------
Theo e hieu y cua bac haquocquan thi dung lenh :
set defaul to c:\vfp\

haquocquan
06-05-2010, 23:11
*----------
Theo e hieu y cua bac haquocquan thi dung lenh :
set defaul to c:\vfp\
Nhưng mình muốn, mỗi khi copy chương trình sang một thư mục khác, không phải đặt lại set default to ..., mà chương trình tự lấy thư mục hiện tại của file vfp9.exe làm thư mục mặc định

ngthva
07-05-2010, 08:46
Các bạn cho mình hỏi:
Mình có một form Quản lý học sinh, trong form có 1 grid (chứa danh sách học sinh các lớp) và 1 combo box (chứa fields tên các lớp). Bây giờ mình muốn khi chọn tên 1 lớp trong combo box thì trên grid chỉ hiển thị danh sách của 1 lớp đó mà thôi. Mong các bạn giúp đỡ

icanvn
07-05-2010, 13:31
Các bạn cho mình hỏi:
Mình có một form Quản lý học sinh, trong form có 1 grid (chứa danh sách học sinh các lớp) và 1 combo box (chứa fields tên các lớp). Bây giờ mình muốn khi chọn tên 1 lớp trong combo box thì trên grid chỉ hiển thị danh sách của 1 lớp đó mà thôi. Mong các bạn giúp đỡ

Set filter to alltrim(tenlop) = alltrim(thisform.combo.value)
thisform.represh

[=========> Bổ sung bài viết <=========]


Nhưng mình muốn, mỗi khi copy chương trình sang một thư mục khác, không phải đặt lại set default to ..., mà chương trình tự lấy thư mục hiện tại của file vfp9.exe làm thư mục mặc định

Dùng câu lệnh này nè
SET DEFAULT TO SYS(5) + SYS(2003)

tranty
07-05-2010, 22:42
mình mới học về visual FroxPro
Mình không có tài liệu ghi rõ về VF. Ai có tài liệu về VF thì cho minh với,
nhất là tai liệu về code?

haquocquan
07-05-2010, 22:55
Làm thế nào để lấy dữ liệu ngày hoạt động cuối cùng của các khách hàng. Cụ thể:
Tôi có banhang.dbf lưu toàn bộ các thông tin về bán hàng gồm các fields:
ngaymua, sohd, makh, soluong, sotien, ngaytra, nguoiban, masp,...
Tôi muốn tạo một bảng lọc ra tất cả các thông tin về ngày mua hàng cuối cùng của các khách hàng.
Chẳng hạn:
ngaymua sohd makh soluong sotien, nguoiban
05/12/09 001 kha 20 5.000 thanh
05/12/09 004 khb 20 5.000 thanh
10/12/09 006 kha 40 10.000 Van
11/12/09 008 khb 24 6.000 Nga
11/12/09 010 khc 15 6.000 Nga
Tôi muốn tạo ra một bảng như thế này:
10/12/09 006 kha 40 10.000 Van
11/12/09 008 khb 24 6.000 Nga
11/12/09 010 khc 15 6.000 Nga
Các PRO chỉ giúp nhé

tayngangvfp
08-05-2010, 10:27
Làm thế nào để lấy dữ liệu ngày hoạt động cuối cùng của các khách hàng. Cụ thể:
Tôi có banhang.dbf lưu toàn bộ các thông tin về bán hàng gồm các fields:
ngaymua, sohd, makh, soluong, sotien, ngaytra, nguoiban, masp,...
Tôi muốn tạo một bảng lọc ra tất cả các thông tin về ngày mua hàng cuối cùng của các khách hàng.
Chẳng hạn:
ngaymua sohd makh soluong sotien, nguoiban
05/12/09 001 kha 20 5.000 thanh
05/12/09 004 khb 20 5.000 thanh
10/12/09 006 kha 40 10.000 Van
11/12/09 008 khb 24 6.000 Nga
11/12/09 010 khc 15 6.000 Nga
Tôi muốn tạo ra một bảng như thế này:
10/12/09 006 kha 40 10.000 Van
11/12/09 008 khb 24 6.000 Nga
11/12/09 010 khc 15 6.000 Nga
Các PRO chỉ giúp nhé

SET ENGINEBEHAVIOR 70
SELE MAX(Ngaymua),SoHD,MaKhach,Soluong,SoTien,NguoiBan FROM ...... GROUP BY MaKH

ngthva
10-05-2010, 08:44
Được gửi bởi ngthva View Post
Các bạn cho mình hỏi:
Mình có một form Quản lý học sinh, trong form có 1 grid (chứa danh sách học sinh các lớp) và 1 combo box (chứa fields tên các lớp). Bây giờ mình muốn khi chọn tên 1 lớp trong combo box thì trên grid chỉ hiển thị danh sách của 1 lớp đó mà thôi. Mong các bạn giúp đỡ
Set filter to alltrim(tenlop) = alltrim(thisform.combo.value)
thisform.represh

Trước hết cho mình cảm ơn bạn, do câu hỏi của mình không rõ, ý cuả mình là mình có 2 tập tin dbf (1 là filed malop, tenlop và 1 là CSDL gồm malop, tenlop và các fields khác thông tin về học sinh), mình tạo 1 form trong đó grid là danh sách các lớp (tập tin học sinh) và 1 combo box tập tin mã của các lớp,sau này dùng để đăng ký. Ý mình : tìm lớp trên combo box (tập tin ma lop) và danh sách (tập tin thông tin hs) sẽ được hiển thị tại grid, chỉ riêng cái lớp mà mình chọn thôi. Mong bạn thông cảm và giúp đỡ. Chào bạn.

icanvn
10-05-2010, 11:15
Được gửi bởi ngthva View Post
Các bạn cho mình hỏi:
Mình có một form Quản lý học sinh, trong form có 1 grid (chứa danh sách học sinh các lớp) và 1 combo box (chứa fields tên các lớp). Bây giờ mình muốn khi chọn tên 1 lớp trong combo box thì trên grid chỉ hiển thị danh sách của 1 lớp đó mà thôi. Mong các bạn giúp đỡ
Set filter to alltrim(tenlop) = alltrim(thisform.combo.value)
thisform.represh

Trước hết cho mình cảm ơn bạn, do câu hỏi của mình không rõ, ý cuả mình là mình có 2 tập tin dbf (1 là filed malop, tenlop và 1 là CSDL gồm malop, tenlop và các fields khác thông tin về học sinh), mình tạo 1 form trong đó grid là danh sách các lớp (tập tin học sinh) và 1 combo box tập tin mã của các lớp,sau này dùng để đăng ký. Ý mình : tìm lớp trên combo box (tập tin ma lop) và danh sách (tập tin thông tin hs) sẽ được hiển thị tại grid, chỉ riêng cái lớp mà mình chọn thôi. Mong bạn thông cảm và giúp đỡ. Chào bạn.

Không biết có phải ý bạn là như thế này ko?
Bạn download về xem thử
http://www.mediafire.com/?oknhmziijhd

ngthva
10-05-2010, 14:25
Rất cám ơn bạn, đúng đây là cái form mà tôi đang khựng lại. Chúc bạn khỏe

nglth
10-05-2010, 17:09
Chào tayngang và mọi người
Mình sử dụng VFP7 để viết 1 chức năng import file Excel thành .dbf. File excel khoang 30-50 ngàn dòng. Ma lenh
IMPORT FROM "filename" TYPE XL8 SHEET "sheet1" chỉ import duoc file co 16348 row thôi.

[=========> Bổ sung bài viết <=========]

Phuong an: code lenh cat sheet lon thanh nhieu sheet nho 15000 dong. Import vao cac dbf tam roi appe theo thu tu.
Co cach nao de hon khong xin thinh giao moi nguoi.

tayngangvfp
11-05-2010, 07:59
Chào tayngang và mọi người
Mình sử dụng VFP7 để viết 1 chức năng import file Excel thành .dbf. File excel khoang 30-50 ngàn dòng. Ma lenh
IMPORT FROM "filename" TYPE XL8 SHEET "sheet1" chỉ import duoc file co 16348 row thôi.

[=========> Bổ sung bài viết <=========]

Phuong an: code lenh cat sheet lon thanh nhieu sheet nho 15000 dong. Import vao cac dbf tam roi appe theo thu tu.
Co cach nao de hon khong xin thinh giao moi nguoi.

Tôi không có VFP7 nên không thử được.
Bạn thử dùng cách truy xuất thông qua ODBC xem sao.

http://www.mediafire.com/?zzuijz23wwy

luu_luu
11-05-2010, 09:55
Tôi không có VFP7 nên không thử được.
Bạn thử dùng cách truy xuất thông qua ODBC xem sao.

http://www.mediafire.com/?zzuijz23wwy
thử đoạn này xem

CREATE CURSOR thtam (stt c(3) NULL ,htc2 c(30) NULL ,sl1 n(9) NULL ,sl2 n(9) NULL )
tenfile=GETFILE([xls])
IF !EMPTY((tenfile))
oexcel=CREATEOBJECT([excel.application])
oexcel.workbooks.open((tenfile))
WITH oexcel
* lay so lieu tu sheet 1
DO lay_so_lieu
* het lay so lieu tu sheet 1
ENDWITH
RELEASE oexcel

ENDIF

PROCEDURE lay_so_lieu
.Sheets("sheet1").Select
dong=thisform.txt_dong.Value
cot=thisform.txt_cot.Value
sodong=0
DO WHILE .t.
IF ISNULL(oexcel.cells(dong,cot).Value) AND ISNULL(oexcel.cells(dong,cot+1).Value) AND ;
ISNULL(oexcel.cells(dong,cot+2).Value) AND ISNULL(oexcel.cells(dong,cot+3).Value)
EXIT
ELSE
* stt dai ly cap 1
so_stt=TRANSFORM(.cells(dong,cot).Value,[@l 999])
* stt dai ly cap 1
* ho ten dai ly cap 2
so_htc2=.cells(dong,cot+1).Value
* het ho ten dai ly cap 2
* so luong 1
so_sl1=IIF(ISNULL(.cells(dong,cot+2).Value),0,.cel ls(dong,cot+2).Value)
* het so luong 5
* so luong 2
so_sl2=IIF(ISNULL(.cells(dong,cot+3).Value),0,.cel ls(dong,cot+3).Value)
* het so luong 10
INSERT INTO (ALIAS()) VALUES (so_stt,so_htc2,so_sl1,so_sl2)
sodong=sodong+1
ENDIF
dong=dong+1
ENDDO

nglth
11-05-2010, 10:11
Thx for support.
Nhờ mẫu file của bạn mình phát hiện ra la file Excel của mình có vấn đề.
Khi sử dụng Office2007 save as về file xls Office 97-2003 thì import bị lỗi exit VFP luon, còn save as về Office 95 thì chỉ còn 16384 dòng trên 1 sheet.
Do đó phải cài Office2003 thì ok.
PS: + example nut ODBC bị lỗi.
+ Tayngang có thể tạo 1 topic upload thư viện exam cho mọi người cùng tham khảo được không. Topic nhiều trang quá nên đọc hơi loãng.
+ Có thể send mình bộ VFP9 ko cài đặt.

hoanghanh80
11-05-2010, 10:18
Chao anh tayngangvfp anh vui lòng giúp em về lệnh trong fox nhé
em có 3 record được thể hiện trong một trường như sau:

AABBCCDD
HHGGFFJJ
WWBBCFFH
em muốn làm hai lệnh sau:
1/ Thay thế các record có ký tự là "AA" trong một trường đc chỉ ra thành "WW"
2/ COPY thành một table mới với điều kiện: Các record có ký tự là "BBC" trong một trường đc chỉ ra.

email của em là: hoanghanh80@gmail.com
Em Cám ơn anh tayngangvfp nhiều lắm lắm !

tayngangvfp
11-05-2010, 10:46
Chao anh tayngangvfp anh vui lòng giúp em về lệnh trong fox nhé
em có 3 record được thể hiện trong một trường như sau:

AABBCCDD
HHGGFFJJ
WWBBCFFH
em muốn làm hai lệnh sau:
1/ Thay thế các record có ký tự là "AA" trong một trường đc chỉ ra thành "WW"
2/ COPY thành một table mới với điều kiện: Các record có ký tự là "BBC" trong một trường đc chỉ ra.

email của em là: hoanghanh80@gmail.com
Em Cám ơn anh tayngangvfp nhiều lắm lắm !

1/ REPL Ten Truong With STRTRAN([Ten Truong],[AA], [WW])
2/ COPY TO .... FOR $ Ten Truong



[B]@nglth
M có 1 số vd tại:
http://vn.360plus.yahoo.com/tayngangvfp

sa_lem
12-05-2010, 23:57
Chào anh tayngangvfp. Giúp em với.
Em đang làm đồ án tốt nghiệp bằng VFP. Đang thiết kế báo cáo. Giờ em muốn xuất báo cáo đó ra file Excel thì làm như nào vậy anh? Cảm ơn anh nhiều.

anbinh22
13-05-2010, 09:44
Cái này không biêt hỏi ai?
Mình có 1 report đã xuất dữ liệu ra theo dạng như sau:

Đơn vị Sản phẩm Kỳ này Kỳ trước Tỷlệ % Kỳ này/Kỳ trước
CH số 2 Bao 50kg 120 100 120 %
Thùng 100kg 80 50 160 %
Tổng CH số 2 200 150 ***
CH số 3 Bao 50kg 130 100 130 %
Thùng 100kg 70 50 140 %
Tổng CH số 3 200 150 ***
TỔNG CỘNG 400 300 ***
--------------
Mình muốn hiển thị tỷ lệ % tại tổng nhóm CH số 2,CH số 3 và Tổng cộng (Vị trí mình đánh dấu ***).
Mình phải làm thế nào trong report ?
Mình dùng Fox 9.0.
Rất mong nhận được sự giúp đỡ từ các bạn.

stocksky
13-05-2010, 21:34
Cho mình hỏi công thức tính toán trong report thì không được dài quá đúng không?

[=========> Bổ sung bài viết <=========]

Mình tạo 1 bảng trung gian
SET SAFETY OFF
x1=ALLTRIM(thisform.combo1.value)
x2=ALLTRIM(thisform.text1.value)
x3=ALLTRIM(thisform.text2.value)


*SELECT t
*BROWSE last
IF thisform.optiongroup1.Value==1
select * FROM ;
qll!nhan_vien ;
FULL JOIN qll!bangchamcong;
ON nhan_vien.ma_nv=bangchamcong.ma_nv;
FULL JOIN qll!pck ;
ON nhan_vien.ma_nv = pck.ma_nv;
FULL JOIN qll!dm_khautru;
ON nhan_vien.ma_nv=dm_khautru.ma_nv;
FULL JOIN qll!tam_ung;
ON nhan_vien.ma_nv=tam_ung.ma_nv;
FULL JOIN qll!dm_pb;
ON nhan_vien.ma_pb=dm_pb.ma_pb;
FULL JOIN qll!dm_cv;
ON nhan_vien.ma_cv=dm_cv.ma_cv;
WHERE ALLTRIM(bangchamcong.nam)=x3 into table temp\t
SELECT t
DELETE ALL FOR ALLTRIM(t.thang_a)<>x2 OR ALLTRIM(t.thang_b)<>x2 OR ALLTRIM(t.thang_c)<>x2 OR ALLTRIM(t.thang_d)<>x2

replace ALL t.pck WITH 0 FOR EMPTY(t.pck)

SELECT t
* BROWSE last
REPORT FORM reports\bcltheopb PREVIEW FOR ALLTRIM(t.ma_pb_a)==ALLTRIM(thisform.combo1.Value)
Dòng phụ cấp khác có nhân viên có, có nhân viên ko,giờ phải làm sao để những nhân viên không nhập thì nó hiện trong report là 0

foxit
16-05-2010, 01:44
Chào anh tayngangvfp!
Anh vui lòng giúp em: Download IntallShield for vfp 9 ở đâu ạ

lambanvoitatca
16-05-2010, 10:21
E xin hỏi các các thủ, Em muốn làm 1 tiện ích nghe nhạc như là window media player thì làm như thế nào. Em biết là trong Fox cũng làm được.

ngthva
17-05-2010, 13:43
Các bạn chỉ giúp giùm:
Tôi chuyển dữ liệu từ fox sang excel2003, sau đó tôi vào word tạo mail merge (trộn thư tín)liên kết để in từng mẫu tin trên word và lấy dữ liệu từ file excel rất tốt.
Các bạn cho tôi hỏi có cách nào để nhập liệu trực tiếp từ mẫu đã trộn trên word và lưu vào file dữ liệu có sẵn trên excel không?
Nếu được thì phải làm cách nào?
Mong các bạn hỗ trợ giúp nhé! Cảm ơn nhiều.

luu_luu
18-05-2010, 08:17
Cái này không biêt hỏi ai?
Mình có 1 report đã xuất dữ liệu ra theo dạng như sau:

Đơn vị Sản phẩm Kỳ này Kỳ trước Tỷlệ % Kỳ này/Kỳ trước
CH số 2 Bao 50kg 120 100 120 %
Thùng 100kg 80 50 160 %
Tổng CH số 2 200 150 ***
CH số 3 Bao 50kg 130 100 130 %
Thùng 100kg 70 50 140 %
Tổng CH số 3 200 150 ***
TỔNG CỘNG 400 300 ***
--------------
Mình muốn hiển thị tỷ lệ % tại tổng nhóm CH số 2,CH số 3 và Tổng cộng (Vị trí mình đánh dấu ***).
Mình phải làm thế nào trong report ?
Mình dùng Fox 9.0.
Rất mong nhận được sự giúp đỡ từ các bạn.
thì bạn cứ gắn cộng thức kỳ này/kỳ trước vào tổng 2, tổng 3 và tổng

ngthva
18-05-2010, 09:16
Chào bạn ICanvn ơi! Bây giờ tôi muốn làm như thế này:
Tạo 1 form, trong form có 3 Pageframe, trong Page1, 2, 3 cùng 1 CSDL học sinh. Mỗi trang tôi tạo mục lọc gồm : (1 combo box, 1 text,)như vậy tôi phải thực hiện như thế nào vậy bạn, giúp giùm nhé! Cám ơn nhiều

foxit
18-05-2010, 09:34
Anh tayngangvfp ơi upload cái bản vfp9 sp2 + ****** key anh đang dùng cho em download với.
Cám ơn anh!

tayngangvfp
18-05-2010, 13:20
Anh tayngangvfp ơi upload cái bản vfp9 sp2 + ****** key anh đang dùng cho em download với.
Cám ơn anh!

Bạn download ở đây
http://www.microsoft.com/downloads/details.aspx?familyid=a28ddec6-ba3c-49d0-8176-8c0b3fca06d1&displaylang=en

[=========> Bổ sung bài viết <=========]


Chào anh tayngangvfp!
Anh vui lòng giúp em: Download IntallShield for vfp 9 ở đâu ạ

Hình như từ VFP7 thì không kèm theo Intallshield nữa.
Bạn dùng bản trong visualstudio 6.0 xem

foxit
18-05-2010, 14:30
Bạn download ở đây
http://www.microsoft.com/downloads/details.aspx?familyid=a28ddec6-ba3c-49d0-8176-8c0b3fca06d1&displaylang=en

[=========> Bổ sung bài viết <=========]



Hình như từ VFP7 thì không kèm theo Intallshield nữa.
Bạn dùng bản trong visualstudio 6.0 xem

Cám ơn anh!
Em có IntallShield for vfp 9 (IntallShield 5.0) rồi

icanvn
19-05-2010, 09:08
Chào bạn ICanvn ơi! Bây giờ tôi muốn làm như thế này:
Tạo 1 form, trong form có 3 Pageframe, trong Page1, 2, 3 cùng 1 CSDL học sinh. Mỗi trang tôi tạo mục lọc gồm : (1 combo box, 1 text,)như vậy tôi phải thực hiện như thế nào vậy bạn, giúp giùm nhé! Cám ơn nhiều

Ý của bạn là không tạo được combobox và textbox vào từng Page của Pageframe phải không?
Nếu đúng vậy thì bạn thực hiện các thao tác sau:

Trên Pageframe bạn click chuột phải chọn Edit , sau đó thả các combobox và textbox vào Page mà bạn muốn.

ngthva
19-05-2010, 13:08
Không phải bạn Icanvn ơi, tạo 1 combo box, 1 text trong Pageframe,Page1,2,3 thì mình tạo được, ý của mình là đoạn code mà bạn gởi cho mình chạy demo thử rất tốt trên 1 form, 1 grid độc lập không có Pageframe. Nhưng khi mình tạo 1 form trong form có Pageframe, trong Pageframe có grid và lấy đoạn code của bạn nhúng vào thì form không chạy để lọc chọn các lớp học được. Nhờ bạn giúp nhé, Cám ơn bạn rất nhiều.

icanvn
19-05-2010, 13:47
Không phải bạn Icanvn ơi, tạo 1 combo box, 1 text trong Pageframe,Page1,2,3 thì mình tạo được, ý của mình là đoạn code mà bạn gởi cho mình chạy demo thử rất tốt trên 1 form, 1 grid độc lập không có Pageframe. Nhưng khi mình tạo 1 form trong form có Pageframe, trong Pageframe có grid và lấy đoạn code của bạn nhúng vào thì form không chạy để lọc chọn các lớp học được. Nhờ bạn giúp nhé, Cám ơn bạn rất nhiều.

http://www.mediafire.com/?igmkry55422
Bạn xem lại thử

ngthva
19-05-2010, 14:35
Được gửi bởi ngthva
Không phải bạn Icanvn ơi, tạo 1 combo box, 1 text trong Pageframe,Page1,2,3 thì mình tạo được, ý của mình là đoạn code mà bạn gởi cho mình chạy demo thử rất tốt trên 1 form, 1 grid độc lập không có Pageframe. Nhưng khi mình tạo 1 form trong form có Pageframe, trong Pageframe có grid và lấy đoạn code của bạn nhúng vào thì form không chạy để lọc chọn các lớp học được. Nhờ bạn giúp nhé, Cám ơn bạn rất nhiều.

http://www.mediafire.com/?igmkry55422
Bạn xem lại thử

Rất cám ơn bạn, để mình test lại. Chúc bạn khoẻ

trieuthanh48
20-05-2010, 22:42
anh chị ơi cho em hỏi 1 chút nhé!! em đang làm report, muốn lấy dữ liệu từ hai bảng. Em không tạo bảng trung gian mà index và set relation theo khóa.Vậy tại sao khi em cho hiện báo cáo mà nó chỉ ra bản ghi đầu tiên thôi!! có anh chị nào bít thì chỉ em với!! em đang cần lắm!! em cảm ơn mọi người nhiều nhiều. nick yahoo của em thanh_hvtc_2006!!!

[=========> Bổ sung bài viết <=========]

ah, em còn 1 cái nữa,khi em tiến hành build thành chương trình thì tất cả các image(logo công ty của em) đều mất hết, thay vào đó là image mặc định của fox!! Em phải sửa thế nào bây giờ ạh.help me!!!!!

pso
21-05-2010, 11:14
Bạn nào cho mình một CT demo. một form nhập liệu một nhiều (gồm các text và một grid) gồm các chức năng, Thêm, sửa, xóa, Lưu. CSDL là SQL và chương trình có kiểm tra trùng khi nhập 1 hồ sơ 2 lần

stocksky
23-05-2010, 18:12
chào bạn tayngang. cho mình hỏi trong blog của bạn có bài "Thêm chức năng autocomplete cho combobox". Bạn có thể hướng dẫn cụ thể cách làm không

ngthva
28-05-2010, 09:13
Chào bạn "Tayngangvfp" code Sử dụng tính năng Autofiter + Grid Color trong csdl fox9.0 mà bạn cung cung cấp cho diên đàn để chia sẻ với anh em, tôi sử dụng rất tốt. Nhưng có điều là tại sao khi chọn field hệ số (có 3 chữ số thập phân td: "4.650")thì chỉ cho ra các hàng trắng không có dữ liệu. Rất mong được bạn trả lời. Cám ơn

[=========> Bổ sung bài viết <=========]

Chào bạn IcanVn code bạn gởi cho tôi chạy rất ổn định. Cám ơn bạn nhiều lắm. Chúc khoẻ

tayngangvfp
28-05-2010, 13:59
Chào bạn "Tayngangvfp" code Sử dụng tính năng Autofiter + Grid Color trong csdl fox9.0 mà bạn cung cung cấp cho diên đàn để chia sẻ với anh em, tôi sử dụng rất tốt. Nhưng có điều là tại sao khi chọn field hệ số (có 3 chữ số thập phân td: "4.650")thì chỉ cho ra các hàng trắng không có dữ liệu. Rất mong được bạn trả lời. Cám ơn
[color=red]
....


Cái Grid Color ở đâu nhỉ? M không nhớ đã đăng nó ở chỗ nào nữa? Bạn nói rõ hơn nhé

[=========> Bổ sung bài viết <=========]


chào bạn tayngang. cho mình hỏi trong blog của bạn có bài "Thêm chức năng autocomplete cho combobox". Bạn có thể hướng dẫn cụ thể cách làm không

Trong ví dụ đó có sourcecode kèm theo mà, bạn xem trong đó nhé

ngthva
28-05-2010, 15:20
Grid của VFP là một control dùng thể hiện và nhập liệu khá tốt. Bằng việc thêm một số tính năng cho nó, sẽ làm cho việc dùng Grid thêm hiệu quả. Tham khảo và download tại:

http://vfpx.codeplex.com/Wiki/View.aspx?title=VFP%20Grid%20ManyHeader
Đăng ngày: 07:10 14-10-2009 Thư mục: VFP

Đây là nội dung mà bạn đã đăng trong blog của bạn.

tayngangvfp
28-05-2010, 15:45
Grid của VFP là một control dùng thể hiện và nhập liệu khá tốt. Bằng việc thêm một số tính năng cho nó, sẽ làm cho việc dùng Grid thêm hiệu quả. Tham khảo và download tại:

http://vfpx.codeplex.com/Wiki/View.aspx?title=VFP%20Grid%20ManyHeader
Đăng ngày: 07:10 14-10-2009 Thư mục: VFP

Đây là nội dung mà bạn đã đăng trong blog của bạn.

uh, nhưng cái link này là của tác giả, còn của M thì đã cải tiến một chút rồi. Tuy nhiên do viết trong 1 class lớn (đủ thứ hầm bà lằng+liên quan các control khác) nên chưa tách riêng ra để share được. Vậy bạn hỏi cái "field hệ số..." là ở chỗ nào?

ngthva
28-05-2010, 15:56
Chào bạn "tayngangvfp" tôi tạo autofillter trong grid xong, trong CSDL có field hệ số (3 chữ số: 4.650) các cột khác đều lọc ra được riêng chỉ có cột hệ số là không lọc gì cả, tôi chẳng hiểu sao? nhờ bạn giúp.

[=========> Bổ sung bài viết <=========]

Chào bạn "tayngangvfp" tôi tạo autofillter trong grid xong, trong CSDL có field hệ số (3 chữ số: 4.650) các cột khác đều lọc ra được riêng chỉ có cột hệ số là không lọc gì cả, tôi chẳng hiểu sao? nhờ bạn giúp.
Đây là bảng mẫu của bạn.
Gủi bạn tham khảo:
http://www.mediafire.com/file/lwt1kx...+GridColor.rar

tayngangvfp
28-05-2010, 17:45
Chào bạn "tayngangvfp" tôi tạo autofillter trong grid xong, trong CSDL có field hệ số (3 chữ số: 4.650) các cột khác đều lọc ra được riêng chỉ có cột hệ số là không lọc gì cả, tôi chẳng hiểu sao? nhờ bạn giúp.



Do sử dụng hàm STR() để tạo chuỗi lọc nên nó đã làm tròn những phần lẻ từ số lẻ thứ 3 => lọc sai
Đây là bản đã sửa lại
http://www.mediafire.com/file/wztnmlrk2lm/autofilter+GridColor_28_5_2010.rar

pso
01-06-2010, 11:27
Anh Luu_Luu giúp mình cái dụ in hóa đơn hôm trưc đi. Mình đã tạo khổ giấy hóa đơn là 21cm X 14cm. khi thiết kế report đã chọn đúng khổ giấy này, nhưng khi phát lệnh in thì máy in không dừng lại khi in xong mà kéo luôn 1 tờ nữa mới dừng, giống như in khổ A4

luu_luu
02-06-2010, 08:14
Anh Luu_Luu giúp mình cái dụ in hóa đơn hôm trưc đi. Mình đã tạo khổ giấy hóa đơn là 21cm X 14cm. khi thiết kế report đã chọn đúng khổ giấy này, nhưng khi phát lệnh in thì máy in không dừng lại khi in xong mà kéo luôn 1 tờ nữa mới dừng, giống như in khổ A4
văn phòng mình dùng giấy đặt theo mẫu 1/2 A4, và khi in xong thì máy in kéo trang đúng đường biên xé trang và kô kéo thêm trang nào nữa cả, có thể gửi mẫu report và table cho mình thử kô? taolao_q@yahoo.com.vn

xuanvtvp87
02-06-2010, 08:56
AI làm giúp mình bài này với thaks nhiều lun, ùi đi uống cafe với mình lun:D hj hj

[=========> Bổ sung bài viết <=========]

Thaks nhìu làm xong đi cafe với mình nhé:D
tạo câu1.dbf có cấu trúc { stt,sbd,hoten,gioitinh,diem_KK }
câu2.dbf có cấu trúc { sbd,diem_toan,diem_van,tong_diem,ket_qua }
Viết chương trình thực hiện các yêu cầu sau (tệp là câu3.prg)
-điền thứ tự các bản ghi bắt đầu từ 1vào trường stt
- Điền vào các trường Tong_diem, ket_qua theo công thức
tong_diem=diem_toan+diemvan+diemKK
Kết quả là Đ nếu tổng k nhỏ hơn 15 và điểm văn và toán phải lớn hơn 0

xsieuquay89x
03-06-2010, 20:08
co ai chỉ cho mình biết mình sai chổ nào hok?
http://www.mediafire.com/?omvm2ro21yw

pso
04-06-2010, 08:25
co ai chỉ cho mình biết mình sai chổ nào hok?
http://www.mediafire.com/?omvm2ro21yw
không có file quan_ly_ban_hang_app.vcx

ngthva
04-06-2010, 14:17
Do sử dụng hàm STR() để tạo chuỗi lọc nên nó đã làm tròn những phần lẻ từ số lẻ thứ 3 => lọc sai
Đây là bản đã sửa lại
http://www.mediafire.com/file/wztnml..._28_5_2010.rar

Cám ơn bạn tayngangvfp tôi đã test thử và chạy rất tốt, luôn tiện đây bạn cho tôi hỏi: Tôi có 1 grid nằm trong form (trong CSDL tôi có tạo 1 filed hình cá nhân và đã nhúng hình vào CSDL) trong form mỗi lần xem hình tôi phải kích đôi mouse thì "GEN" mới mở hình ra. Bạn cho hỏi làm thế nào để khi ta đưa mouse đến tên người nào thì hình người đó tự hiện lên hay không? Bạn giúp nhé!

xsieuquay89x
04-06-2010, 15:34
không có file quan_ly_ban_hang_app.vcx

file đó khởi tạo sao? khi em ínert vào trong frmdmvattu,frmdmkho,frmdmkh thì nó cho nhưng mà sau khi ínert xong nó lại ko hiện lên grid. nút delete cũng hok delete dc trong database.anh nào có thể chỉ giúp em với hjx

tayngangvfp
05-06-2010, 08:58
Do sử dụng hàm STR() để tạo chuỗi lọc nên nó đã làm tròn những phần lẻ từ số lẻ thứ 3 => lọc sai
Đây là bản đã sửa lại
http://www.mediafire.com/file/wztnml..._28_5_2010.rar

Cám ơn bạn tayngangvfp tôi đã test thử và chạy rất tốt, luôn tiện đây bạn cho tôi hỏi: Tôi có 1 grid nằm trong form (trong CSDL tôi có tạo 1 filed hình cá nhân và đã nhúng hình vào CSDL) trong form mỗi lần xem hình tôi phải kích đôi mouse thì "GEN" mới mở hình ra. Bạn cho hỏi làm thế nào để khi ta đưa mouse đến tên người nào thì hình người đó tự hiện lên hay không? Bạn giúp nhé!

Bạn xem ví dụ này:


http://c.upanh.com/upload/7/696/H90.11909302_1_1.jpg

http://www.mediafire.com/file/kgkt3jo5z0m/grid_image.rar

xsieuquay89x
05-06-2010, 09:03
không có file quan_ly_ban_hang_app.vcx

mình đã thêm vào rùi nhưng vẫn bị lỗi ah....có bạn nào giúp mình với........mình đang cần gắp lắm

[=========> Bổ sung bài viết <=========]

anh taynganvfp help me

xuanvtvp87
05-06-2010, 22:23
Làm thế nào để lấy dứ liệu chẳng hạn:
cập nhật số báo danh từ Table1 sang Table2
Table1 (STT, SBD)
Table2( SBD, HOTEN)

hongquangtn
06-06-2010, 21:49
xin giup ve GRID
cac ban cho hỏi chút. Trong Grid làm thế nào để có hàng tổng cộng luôn nằm ở dòng cuối cùng của grid.
rất mong được sự giúp đỡ của các bạn

xsieuquay89x
06-06-2010, 23:37
làm thể nào để tính tồn đầu của 1 tháng khi mà em có 1 table(soluongnhap,soluongxuat,ngaynhap).tình hàng tồn kho nó...các bro giúp em với

manhtoan68
07-06-2010, 10:09
Bác tayngangvfp ơi,e nhờ bác chút dc k ạ.
e vừa ra trường,đang thử việc ở bưu điện,
cơ quan nó đưa ra tài liệu như thế này http://www.mediafire.com/?knmycjmkznw
nó yêu cầu e
1>lọc các công ty làm về Gỗ-Đồ Gỗ,Oto-cho thuê
2,viết Form cho phép tra cứu theo ma_so,ten_cq,tên phân loại
E học chuyên ngành mạng mà bây h phải làm về lập trình nên chậm quá
các bác giúp e với nhá,càng chi tiết càng tốt ạ,cơ quan e dùng VFP6 e đội ơn các bác,nick e là manhtoan872005.mail la manhtoan872005@gmail.com

tayngangvfp
07-06-2010, 10:26
xin giup ve GRID
cac ban cho hỏi chút. Trong Grid làm thế nào để có hàng tổng cộng luôn nằm ở dòng cuối cùng của grid.
rất mong được sự giúp đỡ của các bạn

Có 1 ví dụ ở đây:
http://www.universalthread.com/ShowHeaderDownload.aspx

hongquangtn
07-06-2010, 15:22
Quote:
Được gửi bởi hongquangtn
xin giup ve GRID
cac ban cho hỏi chút. Trong Grid làm thế nào để có hàng tổng cộng luôn nằm ở dòng cuối cùng của grid.
rất mong được sự giúp đỡ của các bạn

Có 1 ví dụ ở đây:
http://www.universalthread.com/ShowHeaderDownload.aspx

cam on Tayngang nhieu. tuy nhien no o muc nao vay, minh xemchi co 2 muc lien quan den Grid nhung chua thu duoc, ban co the noi ro hon o muc nao de do mat cong tim.
thank

[=========> Bổ sung bài viết <=========]

Quote:
Được gửi bởi hongquangtn
xin giup ve GRID
cac ban cho hỏi chút. Trong Grid làm thế nào để có hàng tổng cộng luôn nằm ở dòng cuối cùng của grid.
rất mong được sự giúp đỡ của các bạn

Có 1 ví dụ ở đây:
http://www.universalthread.com/ShowHeaderDownload.aspx
Ban tay ngang- khong biet co phai muc nay khong?
Grid footer class with subtotals
minh dang xem thu, thank

[=========> Bổ sung bài viết <=========]

Có 1 ví dụ ở đây:
http://www.universalthread.com/ShowHeaderDownload.aspx
gui ban Tayngang,mình đã down duoc ví dụ về đúng với yêu cầu, tuy nhiên trong ví dụ, minh không tìm thấy phần liên kết từ Grid dữ liệu với class gridfooter (tìm các mục load,active,init.. của các đối tượng đều khong thấy), nên không thể dùng sang form của mình đựoc, bạn có thể giúp mình xem làm cach nào để gắn phần gridfooter vào grid của mình.
cám ơn nhiều

tayngangvfp
07-06-2010, 20:34
Quote:
....mình đã down duoc ví dụ về đúng với yêu cầu, tuy nhiên trong ví dụ, minh không tìm thấy phần liên kết từ Grid dữ liệu với class gridfooter (tìm các mục load,active,init.. của các đối tượng đều khong thấy), nên không thể dùng sang form của mình đựoc, bạn có thể giúp mình xem làm cach nào để gắn phần gridfooter vào grid của mình.
cám ơn nhiều

Bạm xem các properties

cSourceGrid=Tên của grid dữ liệu
cSumColumns = tên các cột sẽ tính tổng

hongquangtn
08-06-2010, 10:31
Bạm xem các properties

cSourceGrid=Tên của grid dữ liệu
cSumColumns = tên các cột sẽ tính tổng

Cam ơn Tay ngang nhiều.mình đã làm được

xuanvtvp87
09-06-2010, 10:12
mình cho 1 bảng tên table1 (STT,SBD)
table2(SBD, HOTEN)
Nhập dữ liệu vào bảng table1 (STT,SBD)
vậy CODE thế nào để cập nhật SBD từ table1 vào table2
Mình cảm ơn nhiều

robotfpt
09-06-2010, 10:57
mình cho 1 bảng tên table1 (STT,SBD)
table2(SBD, HOTEN)
Nhập dữ liệu vào bảng table1 (STT,SBD)
vậy CODE thế nào để cập nhật SBD từ table1 vào table2
Mình cảm ơn nhiều

Thường người ta xây dựng SBD và HOTEN vào cùng một bảng chứ chẳng ai tách ra thành 2 bảng như bạn đâu. Nếu có bảng BANGDIEM(SBD,DIEM) và TEN(SBD,HOTEN,DIEM) thì có thể lấy điểm từ bảng BANGDIEM sang bảng TEN thông qua lệnh SET RELATION kết nối 2 bảng thông qua khóa SBD

xuanvtvp87
11-06-2010, 19:27
cho Tệp tên là:Cau4a1( STT (INDEX), SBD,HOTEN,GIOI_TINH,DIEM_KK)
Tệp 2 tên là Cau4a2 (SBD (INDEX), DIEM_TOAN,DIEM_VAN,TONG_DIEM, KET_QUA)
Câu hỏi: Viết chương trình tên cau4a.prg điền vào trường cau4a2 SBD
SBD lấy số liệu của tệp Cau4a1
THAKS BẠN!

robotfpt
14-06-2010, 11:01
USE cau4a1 IN 0
USE cau4a2 IN 0

SELECT a.*, b.diem_toan, b.diem_van, b.tong_diem, b.ket_qua ;
FROM cau4a1 a LEFT JOIN cau4a2 b ON a.sbd = b.sbd ;
INTO TABLE cau4a
BROWSE

USE IN cau4a1
USE IN cau4a2

xuanvtvp87
15-06-2010, 22:30
cũng cảm ơn bạn nhưng ý mình k phải vậy?
viết chương trình sao cho SBD (Cau4a1) cập nhật sang SBD (cau4a2)đó
có nghĩa là nhập SBD ở bảng 1 ( cau4a1 ) ùi viết chương trình thì SBD đó sẽ tự sang SBD (cau4a2)
Bạn giúp mình với nha! THAKS BAN

danngudien
15-06-2010, 22:38
Cam ơn nhieu bai nay rat hay

tongocbao
16-06-2010, 10:41
Mình đang tập với bé VFP này ! nhưng mổi lần mình chỉnh sửa 1 form thì no lại ra cau thông báo "memo file D:/.... invalid visual foxpro", nếu mình lịch ok thì vang ra khõi VFP lun. Bạn nào biêt cách khác phục dùm mình với.(tại nhiều trang quá nên mình chưa đọc hết. nếu câu hõi của mình đã có người tra lời rồi thì các bác mob thông cam nha)

ngthva
17-06-2010, 09:34
Cám ơn bạn tayngang đã giúp. Tôi đã thực hiện được rồi và chương trình chạy rất ổn.
luôn tiện bạn cho hỏi:
viết đoạn code như thế nào để đọc file excel có sẵn, bạn giúp nhé!

robotfpt
17-06-2010, 15:49
cũng cảm ơn bạn nhưng ý mình k phải vậy?
viết chương trình sao cho SBD (Cau4a1) cập nhật sang SBD (cau4a2)đó
có nghĩa là nhập SBD ở bảng 1 ( cau4a1 ) ùi viết chương trình thì SBD đó sẽ tự sang SBD (cau4a2)
Bạn giúp mình với nha! THAKS BAN

Bạn cho ví dụ cụ thể đi

xuanvtvp87
17-06-2010, 20:46
Cho cơ sở dữ liệu Tuyển sinh bao gồm 2 tệp dữ liệu sau:
-> Tệp cau4a1.dbf ( STT, SBD (INDEX), HOTEN )
-> Tệp cau4a2.dbf ( SBD (INDEX), HOTEN, DIEM_VAN, DIEM_TOAN )
Nhập vào thông tin 5 thí sinh Tệp cau4a1 ( STT, SBD, HOTEN)
Viết chương trình thực hiện yêu cầu ( tệp chương trình là cau4a.prg )
điền vào SBD, HOTEN của Tệp cau4a2 theo yêu cầu
SBD,HOTEN lấy số liệu của tệp cau4a1 ( có nghĩa là viết chương trình cập nhật dữ liệu SBD, HOTEN từ cau4a1 vào Tệp cau4a2 )
---------
Bạn giúp mình nha ! thaks

robotfpt
18-06-2010, 08:35
USE cau4a1 IN 0
USE cau4a2 IN 0

SELECT cau4a1
SCAN
SCATTER MEMVAR
INSERT INTO cau4a2(sbd,hoten) VALUES(M.sbd, M.Hoten)
ENDSCAN

USE IN cau4a1
USE IN cau4a2

luu_luu
18-06-2010, 10:00
Cám ơn bạn tayngang đã giúp. Tôi đã thực hiện được rồi và chương trình chạy rất ổn.
luôn tiện bạn cho hỏi:
viết đoạn code như thế nào để đọc file excel có sẵn, bạn giúp nhé!
mình có copy đoạn mã đọc dữ liệu excel sang 1 cursors tam tại trang 62, bạn xem và biến đổi một chút có thể dùng được

ngthva
18-06-2010, 13:19
Cám ơn bạn Luu_Luu rất nhiều để mình copy về xem sao, Chúc bạn khoẻ.

xuanvtvp87
18-06-2010, 21:54
Cảm ơn bạn rất nhiều về bài viết! bạn biết có sách gì để học tốt FOXPRO k bạn ? mình mún biết thêm chút về FOX

[=========> Bổ sung bài viết <=========]

K được rồi bạn ơi! nếu như cách của bạn thì khi sửa SBD bảng cau4a1 khác trước -thì khi đó SBD sẽ đc thêm vào tệp cau4a2, vậy thì k đúng rồi, khi sửa SBD ở cau4a1 và chạy chương trình thì tệp cau4a2 SBD sẽ đc sửa theo như SBD tệp cau4a1
-> cách làm của bạn là thêm dữ liệu mất ùi chứ k phải cập nhật thông tin từ tệp này sang tệp kia
Mong bạn giúp đỡ

tongocbao
19-06-2010, 10:37
Các bạn có thể cho mình hỏi :
- Trong VFP khi ta tạo datbase, khóa chính(primary key) có thuộc tính tự tăng(identity) như bên QSL sever ko vây ?.mình tìm mãi ma ko thấy
- Nếu không có thì cac ban biết cách nào đễ khắc phuc đươc không ?

xuanvtvp87
20-06-2010, 12:33
Bạn giúp mình với
Bạn làm cũng đc nhưng của bạn là thêm vào Tệp cau4a2 ùi
nếu mình thay đổi ở cau4a1 nó sẽ thêm vào và tạo ra nhiều dữ liệu
Ý mình là SBD cau4a2 lấy dữ liệu SBD cau4a1( khi sửa thì nó sẽ như cau4a1) k thêm

[=========> Bổ sung bài viết <=========]

Mình nghĩ phải dùng lệnh REPLACE
....
SCAN
TONG=TS.SBD
REPLACE DIEM.SBD WITH (TONG)
ENDSCAN
nhưng mình dùng thế này nó chỉ duyệt 1 SBD đầu tiên thui ah
có gì bạn PMM qua nick mình cùng trao đổi
Y!! thanchet_yeutiennu_067

aukey2006vn
20-06-2010, 17:02
Bạn ơi, tình hình là như này, trước tôi học csdl trên access mà nay có người bạn nhờ giải bài CSDL trên FoxPro. Để giải được bài này chắc phải mất cả tháng nên nhờ bạn giải dùm được không? nếu được bạn có thể gửi bài cho mình theo email này nha: aukey2006vn@gmail.com Cám ơn nhiều.
Đây là đề bài:
Trang 1:
http://cA2.upanh.com/8.483.12700202.HUK0/DSC00229.jpg
Trang 2:
http://cA1.upanh.com/8.484.12700729.KUX0/DSC00230.jpg

xuanvtvp87
20-06-2010, 22:50
Mình nghĩ phải dùng lệnh REPLACE
....
SCAN
TONG=TS.SBD
REPLACE DIEM.SBD WITH (TONG)
ENDSCAN
nhưng mình dùng thế này nó chỉ duyệt 1 SBD đầu tiên thui ah
có gì bạn PMM qua nick mình cùng trao đổi
Y!! thanchet_yeutiennu_067

luu_luu
22-06-2010, 08:12
Các bạn có thể cho mình hỏi :
- Trong VFP khi ta tạo datbase, khóa chính(primary key) có thuộc tính tự tăng(identity) như bên QSL sever ko vây ?.mình tìm mãi ma ko thấy
- Nếu không có thì cac ban biết cách nào đễ khắc phuc đươc không ?
chỉ có trong FOX9 thôi bạn,
thí dụ:
CREATE TABLE THUCTAP (STT_ID INT AUTOINC,HOTEN C(50))
APPEND BLANK
APPEND BLANK
BROWSE

xuanvtvp87
22-06-2010, 16:46
Ui các bạn đâu hết ùi?
Giúp mình bài cập nhật dữ liệu từ trường của bảng này sang trường table khác trong FOX6.0 đi
VD:
Tệp cau4a1( STT, SBD (INDEX))
Tệp cau4a2(SBD (INDEX), HOTEN, GIOITINH)
Viết chương trình điền vào trường SBD của tệp cau4a2 theo yêu cầu
- SBD lấy số liệu của tệp cau4a1 ( k phải thêm từ cau4a1( nếu thêm khi chạy chương trình thì nó tạo ra nhiều SBD ở cau4a2- mà là cập nhật khi chạy chương trình nếu sửa cau4a1 hay chạy chương trình thì SBD cập nhật từ SBD cau4a1)
THAKS CÁC BÁC

luu_luu
23-06-2010, 08:12
theo mình hiểu thì khi hiệu chỉnh SBD của cau4a1 thì sẽ cập nhật sang SBD cau4a2 đúng kô?
- trước tiên là bạn tạo một aray a_cau4a1 từ cau4a1
- bắt đầu hiệu chỉnh SBD bất kỳ của cau4a1, sau khi hiệu chỉnh, duyệt tập tin cau4a1 và so sánh với array a_cau4a1 thông qua STT, nếu SBD của file cau4a1 & a_cau4a1 khác nhau,tạo biến mSBDmoi=cau4a1.SBD, mở file cau4a2, thay thế SBD của cau4a2 với mSBDmoi với điều liện cau4a2.SBD=a_cau4a1(?,?)

robotfpt
23-06-2010, 09:15
Khi sửa cau4a1 thì sửa toàn bộ ở cau4a1 rồi mới update sang cau4a2 hay sửa bản ghi nào ở cau4a1 lập tức update sang cau4a2?

xuanvtvp87
23-06-2010, 09:47
Khi sửa dữ liệu SBD ở cau4a1 rồi chạy chương trình thì SBD cau4a2 sẽ sửa theo như thế bạn àh,( SBD cau4a2 cập nhật SBD cau4a1)
Nếu dùng INSERT INTO thì mỗi lần bạn chạy chương trình thì lại thêm vào cau4a2 ùi ( VD SBD cau4a1 chỉ có 01 - nếu mỗi lần chạy chương trình thì SBD cau4a2 tăng SBD đó lên ùi )
-> SBD cau4a1 như thế nào thì cột SBD cau4a2 như vậy khi nào SBD cau4a1 thêm hay sửa thì khi chạy chương trình cột SBD cau4a2 lại cập nhật theo
VD ( SBD cau4a1( 01-02-03)-> SBD cau4a2( 01-02-03))
khi sửa SBD cau4a1 (02-01-03) -> SBD cau4a2( 02-01-03)
Mong bạn giúp

tayngangvfp
23-06-2010, 10:19
Khi sửa dữ liệu SBD ở cau4a1 rồi chạy chương trình thì SBD cau4a2 sẽ sửa theo như thế bạn àh,( SBD cau4a2 cập nhật SBD cau4a1)
Nếu dùng INSERT INTO thì mỗi lần bạn chạy chương trình thì lại thêm vào cau4a2 ùi ( VD SBD cau4a1 chỉ có 01 - nếu mỗi lần chạy chương trình thì SBD cau4a2 tăng SBD đó lên ùi )
-> SBD cau4a1 như thế nào thì cột SBD cau4a2 như vậy khi nào SBD cau4a1 thêm hay sửa thì khi chạy chương trình cột SBD cau4a2 lại cập nhật theo
VD ( SBD cau4a1( 01-02-03)-> SBD cau4a2( 01-02-03))
khi sửa SBD cau4a1 (02-01-03) -> SBD cau4a2( 02-01-03)
Mong bạn giúp

Theo m hiểu thì bạn muốn làm như sau:
1. Khi thêm 1 SBD mới vào cau4a1 thì nó sẽ tự động thêm vào cau4a2=> dùng cách insert như các bạn đã gợi ý làm ở trên.
2. Khi sửa SBD trng cau4a1 thì SBD tương ứng trong cau4a2 cũng được sửa theo => có vài cách làm:
a/ Làm như bạn Luu_luu gợi ý
b/ Viết code để kiểm tra và sửa SBD trong cau4a2 mỗi khi sửa SBD cau4a1: reple cau4a2.SBD with cau4a1.SBD for cau4a2.SBD=[SBD cũ]
c/Nếu các table trên nằm trong 1 datbase thì dùng các rule của database để thực hiện. Cách này (rule for uppdate, rule for delete, rule for insert) là dễ và an toàn nhất. Bạn xem ở mục Referential Integrity Builder

xuanvtvp87
23-06-2010, 10:36
- Dùng Insert k đc rồi bạn ah` nó là thêm ùi
VD Tệp 1- cau4a1 STT (01-02-03) SBD (A-B-C)
Tệp 2- cau4a2 SBD(lấy từ SBD cau4a1) HOTEN( NV-NT-HK)
chẳng hạn
nếu dùng Insert thì khi mỗi lần chạy chương trình thì lại thêm từ cau4a1 vào cau4a2 mình cho chạy 3 lần
-> cau4a2 sai < SBD(A_-B-C-A-B-C-A-B-C) HOTEN(NV-NT-HK)>

ý mình là khi chạy chương trình nhiu lần đi nữa thì SBD cau4a2 như cau4a1
chạy ctrinh 3 lần vẫn là cau4a2 <SBD(A-B-C) HOTEN(...)> khi sửa thì SBD cau4a2 sửa theo
Bạn Tayngang và Luu có nick chát k mình gửi bài mình các bạn sửa giúp mình 1 ý đó đc ko?
Thaks các bạn nhìu đã góp ý
thanchet_yeutiennu_067

luu_luu
23-06-2010, 15:13
- Dùng Insert k đc rồi bạn ah` nó là thêm ùi
VD Tệp 1- cau4a1 STT (01-02-03) SBD (A-B-C)
Tệp 2- cau4a2 SBD(lấy từ SBD cau4a1) HOTEN( NV-NT-HK)
chẳng hạn
nếu dùng Insert thì khi mỗi lần chạy chương trình thì lại thêm từ cau4a1 vào cau4a2 mình cho chạy 3 lần
-> cau4a2 sai < SBD(A_-B-C-A-B-C-A-B-C) HOTEN(NV-NT-HK)>

ý mình là khi chạy chương trình nhiu lần đi nữa thì SBD cau4a2 như cau4a1
chạy ctrinh 3 lần vẫn là cau4a2 <SBD(A-B-C) HOTEN(...)> khi sửa thì SBD cau4a2 sửa theo
Bạn Tayngang và Luu có nick chát k mình gửi bài mình các bạn sửa giúp mình 1 ý đó đc ko?
Thaks các bạn nhìu đã góp ý
thanchet_yeutiennu_067
taolao_q@yahoo.com.vn

xuanvtvp87
24-06-2010, 09:06
Tớ mail bác ùi đó giúp tớ nhé hj
giúp xong đi uống cafe với tớ:D

xcode
24-06-2010, 09:07
Chẳng biết hiện giờ còn bao nhiêu nơi sử dụng Foxpro nhỉ :D

foxit
24-06-2010, 14:53
Chẳng biết hiện giờ còn bao nhiêu nơi sử dụng Foxpro nhỉ :D

Trên thế giới hay Việt Nam?
Trước mình cũng lập trình C#, VB, Access...
Nhưng về dữ liệu thì mấy ngôn ngữ trên chỉ là mốt, chứ thực ra hít khói FoxPro...

xuanvtvp87
25-06-2010, 08:45
Ui k ai giúp mình làm để hoàn thiện bài kia hả - hj`

chip44
25-06-2010, 11:49
Mình đang tập với bé VFP này ! nhưng mổi lần mình chỉnh sửa 1 form thì no lại ra cau thông báo "memo file D:/.... invalid visual foxpro", nếu mình lịch ok thì vang ra khõi VFP lun. Bạn nào biêt cách khác phục dùm mình với.(tại nhiều trang quá nên mình chưa đọc hết. nếu câu hõi của mình đã có người tra lời rồi thì các bác mob thông cam nha)

Vào Tool - Options - File Locations xóa hết các đường dẫn đi là ok

fastnet911233
26-06-2010, 06:23
các bạn giúp mình với, làm sao xóa những record trùng trong một file dbf mà chỉ giữ lại record đầu tiên

xuanvtvp87
26-06-2010, 20:48
Cho cơ sở dữ liệu gồm 2 tệp như sau:
- Tệp hanghoa.dbf

Mahang (index)
Tenhang
Donvitinh
Dongia
Ngaynhap
Slnhap
slxuat
ngayxuat
- Tệp tonkho.dbf

Mahang (index)
Tenhang
ngaytonkho
sltonkho
tientonkho
Trong đó:
*, Ngaytonkho tính từ thời điểm nhập đến ngày hiện tại các măt hàng xuất chưa hết.
*, Tientonkho =dongia*soluongtonkho
Từ dữ liệu của tệp hanghoa.dbf viết chương trình cập nhật đầy đủ các thôgn tin vào tệp tồn kho.dbf( tệp chương trình là cau4c1.prg)
Ui ai giúp mình bài này với

danngudien
26-06-2010, 22:37
tôi đang chạy một form tự nhiên mất điện, sau đó khởi động lại và chạy lại form thì nó hiển thị thông báo " Invalid seetk ofset" thế là xong không mở được? bạn nào có cách xử lý để lại form không? giúp với nhé

tongocbao
27-06-2010, 14:46
Cám ơn ban chip44 ! mình đã khắc phục dươc lỗi rồi. Mình đã tạo lai cái project cua minh tren ỗ C thay vi mình hay dung ỗ e và lõi khong phac sinh nữa
Dù sao cũng cám ơn bạn nha


Các bạn có thể cho mình hỏi :
- Trong VFP khi ta tạo datbase, khóa chính(primary key) có thuộc tính tự tăng(identity) như bên QSL sever ko vây ?.mình tìm mãi ma ko thấy
- Nếu không có thì cac ban biết cách nào đễ khắc phuc đươc không ?

tuanmh
27-06-2010, 17:42
Cty V6 muốn tuyển 02 nhân viên lập trình với ngôn ngữ Visual FoxPro 9.0 và CSDL SQL Server bạn nào biết fox liên hệ
Phone 0936 976 976

[=========> Bổ sung bài viết <=========]

Công ty phần mềm V6 cần tuyển lập trình Visual fox để viết theo yêu cầu khách hàng dựa trên sản phẩm V6 Accounting đã bán từ năm 2004

www.v6corp.com

luu_luu
29-06-2010, 07:49
các bạn giúp mình với, làm sao xóa những record trùng trong một file dbf mà chỉ giữ lại record đầu tiên
use <dbf>
index on <maso> to idx_file UNIQ
copy to tam
zap
appe from tam

xuanvtvp87
29-06-2010, 15:09
AI giúp mình bài trên kia nữa đi
àh cho mình hỏi ý này nữa
bạn nào giúp mình viết câu lệnh
*Tệp thisinh.dbf(SBD, HOTEN,NGAY_SINH,GIOI_TINH,DIEM_VAN)
*Tệp thisinh2.dbf( SBD,TONG_DIEM,KET_QUA)
ĐƯA ra màn hình danh sách các thí sinh có GIOI_TINH là nam( tuổi nhỏ hơn 17 -tuổi đc tính theo năm) KET_QUA là Đ danh sách đc sắp xếp theo DIEM_VAN từ cao xuống thấp- CÁC thong tin đưa ra bao gồm SBD, HOTEN,GIOI_TINH, DIEM_VAN, TỔNG_ĐIỂM,KẾT_QUẢ
THANKS

anphabreak
01-07-2010, 14:41
Các bạn cho tôi hỏi vấn đề về font chữ trong source code?
Tôi muốn tất cả các cửa sổ code mở ra sẽ có font là VK Sans Serif thì làm thế nào?
Cám ơn các bạn.

hoangnnm
01-07-2010, 16:03
Các bạn cho tôi hỏi vấn đề về font chữ trong source code?
Tôi muốn tất cả các cửa sổ code mở ra sẽ có font là VK Sans Serif thì làm thế nào?
Cám ơn các bạn.

Tools -> Options -- > IDE --> chọn Type là Program files, sau đó chọn Font --> Set as Default --> Ok .

xuanvtvp87
01-07-2010, 20:34
AI cho mình hỏi làm thế nào để lọc đc người " Nữ" hiển thị ra màn hình
mình dùng
WHERE GIOI_TINH="F";
nó báo lỗi như ko hỉu vì GIOI_TINH đặt khóa LOGICAL T OR F ùi

HELP ME!!!!!!!