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

H_BimBim_H
16-09-2009, 14:21
Xin chào các bạn. Mình có một vấn đề mong các bạn giúp đỡ. Chả là, mình đang viết 2 chương trình:
Chương trình 1 (CT1): Được viết bằng VFP+SQL
Chương trình 2 (CT2): Được viết bằng C#+SQL

Hai chương trình đó đều thực hiện trên 1 DATABASE. Vấn đề ở đây mình gặp phải là: Mình phải lưu và view ảnh trên CT1, cũng chính ảnh đó mình phải view được trên CT2.

Nếu chỉ lưu và view ảnh tại CT1 thì mọi việc OK.
Nếu chỉ lưu và view ảnh tại CT2 thì mọi việc cũng OK.

Các bạn có hiểu biết về vấn đề này, mong nói cho mình biết nhé.
Xin cảm ơn.

yang hui
23-09-2009, 22:59
Tôi muốn gộp dữ liệu của các bản ghi có cùng : ngay_ctu, So_ctu, Ma_ctu của file LKE.DBF sang tạo thành file mới là LKE_TH.DBF

Tôi đã sử dụng câu lệnh là :

SELECT ma_ctu, so_ctu, ngay_ctu, Dien_giai, Tk_no,TK_co, sum (So_tienN) as So_tienN,sum (So_tienC) as So_tienC,...v.v,;
from LKE Group BY Ngay_ctu, Ma_Ctu, So_ctu INTO TABLE p_tmp+[LKE_TH.dbf]

Với câu lệnh trên thì cộng được các dữ liệu kiểu số, còn các dữ liệu kiểu ký tự thì làm như thế nào để chúng cộng được với nhau ? đặt lệnh SUM cho trường kiểu ký tự thì ko được /

Mọi người giúp với nhé. Lâu quá ko làm nên quên mất.
Cám ơn nhiều !

Trong Fox, bạn muốn cộng các dữ liệu kiểu ký tự (mà các ký tự đó là 0,1,2 ...9) thì bạn phải đổi từ ký tự - C (Character) ra kiểu số - N (Numeric) bằng hàm VAL(). Ví dụ của bạn nếu Field So_tienC là kiểu C thì bạn phải viết lệnh là " ..., Sum (VAL(So_tienC)) as So_tienC, ..."

tayngangvfp
01-10-2009, 12:11
Em moi hoc foxpro nen co 1 so dieu em chua hieu ro lam mong cac anh chi chi? dum em cac van de sau day :
Sau mỗi lần tắt máy rồi mở lại Fox 9.0 thì cửa sổ command này luôn đầy những lệnh đã gõ từ những lần trước? Em khong xoa duoc
Sao mà em tạo thì chỉ ra quan hệ 1-1 thôi. không biết trong quá trình tạo bảng có sai khóa không.

Fox luôn ghi nhận những lệnh bạn gõ trong cửa sổ command và lưu nó vào file:
_command.prg. Để xoá nội dung những lệnh này bạn có thể bấm chuột phải vào cửa sổ command và chọn Clear. Để xem File này bạn có thể dùng lệnh sau trong cửa sổ command (VFP9):
MODIFY COMMAND HOME(7)+"_command.prg"

vuna
02-10-2009, 16:25
Mình đang quan tâm đến Fox, cũng mới tham gia thôi.

TAYNGANG CHUYEN CHO MINH CODE CHUYEN TCVN3 SANG UNICODE NHE!
EMAIL: NGANHVUVN@YAHOO.COM
CAM ON BAN NHIEU !

minhthuc6868
03-10-2009, 14:06
Có báo nào chỉ giúp em về Microsoft Visual FoxPro 8.0 với em muốn sửa file có đuôi mở rộng là .fxp mà không làm sao xem được bác nào biết chỉ dùng em với nhé. em cảm ơn.

alone_night
03-10-2009, 20:44
Có báo nào chỉ giúp em về Microsoft Visual FoxPro 8.0 với em muốn sửa file có đuôi mở rộng là .fxp mà không làm sao xem được bác nào biết chỉ dùng em với nhé. em cảm ơn.

Làm sao mà sửa được file fxp, nó đã biên dịch sang mã trung gian của VF. Chỉ các file prg, mpr... là sửa được thôi.

P/S: Có bác nào mở topic khác về Visual Foxpro
Topic của bác phongtt dài quá rồi, những người mới ko theo dõi hết

minhthuc6868
05-10-2009, 20:08
Cho em hỏi có cách nào chuyển file FXP sang file prg rồi sửa rồi lại chuyển sang file fxp không ạ xin các huỳnh chỉ em chi tiết với em cảm ơn

tungvv
07-10-2009, 08:58
Cho em hỏi có cách nào chuyển file FXP sang file prg rồi sửa rồi lại chuyển sang file fxp không ạ xin các huỳnh chỉ em chi tiết với em cảm ơn
Bạn có thể dùng PM Refox để dịch ngược *.fxp thành *.prg. Tuy nhiên nếu file *.fxp đã bị người ta Brand khi biên dịch thì ko thể dịch ngược lại được. Thông thường khi cung cấp PM cho bạn, người SX đã sử dụng các biện pháp để người khác ko thể dịch ngược được rồi.

minhthuc6868
08-10-2009, 11:56
Bác cho em xin nick downlaod PM Refox + key em cảm ơn

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

Bác hướng dan em tí nhé

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

Bác tungvv oi cho em địa chỉ Email của bác em gửi file bac dịch hộ em với nhé

ngoisaochieu04
08-10-2009, 16:59
Chào các bác.
Các bác cho mình hỏi chút nha.
Mình có một Field kiểu hình ảnh. nếu nạp dữ liệu ảnh vào trực tiếp thì không vấn đề gì.
Mình muốn nhập ảnh vào thông qua Form thì làm thế nào(Khi Click vào Button Nạp ảnh thì hiển thị ra một đường dẫn tới file ảnh)?. mình đã đọc một số sách mà vẫn chưa thấy. mong các bác giúp đỡ cho. cám ơn các bác nhiều.
Nếu được mong các bác gửi trực tiếp qua địa chỉ Mail: ngoisaochieu04@gmail.com

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


1/Một cách dễ nhất là dùng textbox và chức năng AutoComplete của nó. Bạn tìm hiểu các thuộc tính:AutoComplete,AutoCompSource,AutoCompTable. Tuy nhiên chỉ dùng được với VFP9. Cách này nên dùng theo kiểu tạo mới bảng "AutoCompTable" mỗi khi chạy chương trình (dùng lệnh Sele disting ....)

2/Viết code để giả lập 1 popup (từa tựa như ô search của google) cho textbox hoặc combobox. Cách này khá phức tạp vì phải giải quyết 1 loạt vấn đề: chọn dữ liệu theo điều kiện (co thể dùng select ....), hiển thị dữ liệu trên popup (....) mà không làm mất focus của textbox hay combobox (có thể dùng lệnh Define Popup....),Tính toán vị trí và kích thước phù hợp cho popup, chuyển focus sang popup khi người dùng bấm phím xuống,Gán giá trị cho textbox hay combobox khi người dùng chọn 1 mục trên danh sách popup, dấu popup khi người dùng rời textbox hay combobox,v/v..... !!!

Bạn để lại Email hoặc liên hệ với mình qua mail: ngoisaochieu04@gmail.com
mình gửi ví dụ cho. Trong ví dụ bạn sẽ tìm kiếm được dữ liệu mà không cần chính xác tuyệt đối

tayngangvfp
09-10-2009, 07:16
Chào các bác.
Các bác cho mình hỏi chút nha.
Mình có một Field kiểu hình ảnh. nếu nạp dữ liệu ảnh vào trực tiếp thì không vấn đề gì.
Mình muốn nhập ảnh vào thông qua Form thì làm thế nào(Khi Click vào Button Nạp ảnh thì hiển thị ra một đường dẫn tới file ảnh)?. mình đã đọc một số sách mà vẫn chưa thấy. mong các bác giúp đỡ cho. cám ơn các bác nhiều.



Field kiểu hình ảnh bạn nói có phải là Field General?
KHông biết có phải ý bạn là code ntn để khi click vào button "nạp ảnh" thì sẽ nạp ảnh được chọn vào General Filed đó? Nếu vậy thì bạn tham khảo code sau

*****************
* Trong event Click của button nạp ảnh

tHinh=GETPICT()
IF !EMPTY(tHinh)
APPEND GENERAL FieldHinhAnh FROM [&tHinh]
ENDIF

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

Tuy nhiên việc lưu ảnh = field General có nhiều hạn chế.

ngoisaochieu04
09-10-2009, 16:17
Cảm ơn bác tayngangvfp đã mách bảo. cách của bác đưa ra cũng rất hay, nhưng em thấy không hiển thị hình ảnh trên form được. bác đã có lòng thì giúp em luôn cái được không. hình ảnh nạp vào rồi, em muốn hiển thị được trên form. bác giúp em với nha.

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

à các bác cho mình hỏi thêm câu nữa:
Có thể tạo ra một form chứa pass. chỉ nhữnng ai có pass thì mới được vào sửa mã code của chương trình trong Fox9 không?
minh thấy trong lập trình VBA có cái đó, thấy rất hay. mình không biết trong Fox9 thì có làm được không, và nếu có thì làm thế nào?

hongviet1974
09-10-2009, 23:00
Mình đang dùng Refox MMII để bảo mật thấy rất tốt, mình cũng chưa thử với Refox XI+. Bạn gửi cho mình Refox XI+ để mình thử, còn nếu bạn thử Refox MMII thì mình gửi cho

Gửi bạn: VuNhatVan

Bạn có thể gửi cho mình Refox MMII được không , mình cần nó để bảo mật code.

Xin cảm ơn nhiều, mail : Hongviet1974@gmail.com

tayngangvfp
10-10-2009, 06:49
Cảm ơn bác tayngangvfp đã mách bảo. cách của bác đưa ra cũng rất hay, nhưng em thấy không hiển thị hình ảnh trên form được. bác đã có lòng thì giúp em luôn cái được không. hình ảnh nạp vào rồi, em muốn hiển thị được trên form. bác giúp em với nha.

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

à các bác cho mình hỏi thêm câu nữa:
Có thể tạo ra một form chứa pass. chỉ nhữnng ai có pass thì mới được vào sửa mã code của chương trình trong Fox9 không?
minh thấy trong lập trình VBA có cái đó, thấy rất hay. mình không biết trong Fox9 thì có làm được không, và nếu có thì làm thế nào?

1/Việc lưu dữ liệu hình ảnh và việc hiển thị nó trên form làm 2 vấn đề khác nhau nhé bạn! Tuỳ thuộc vào lưu hình như thế nào mà có cách hiển thị tương ứng.
Đối với cách lưu vào filed general như của bạn, Để hiển thỉ làm như sau: thêm 1 oleboundcontrol vào form. Thiết lập thuộc tính oleboundcontrol.ControlSource=[Tên field hình]. Mỗi lần record thay đổi thì thực hiện oleboundcontrol.Refresh


2/Fox không làm như vậy được

zenq
11-10-2009, 09:05
Bạn cần tài liệu về visual foxpro thì ghé vào trang này nhé
www.tapchilaptrinh.com
-------------------------------
software development - Lotus vinasoft

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

Các bác nào quan tâm đên Visual Fox ghé trang này nha, all about fox

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

bác nào quan tâm đến Visual fox mời ghé thăm - tapchilaptrinh.com

tungvv
11-10-2009, 16:05
Bác tungvv oi cho em địa chỉ Email của bác em gửi file bac dịch hộ em với nhé

Bạn cứ gửi thử xem nhé, hi vọng là có thể giúp được: tungvv@gmail.com

hoangpnt349
12-10-2009, 13:29
Tôi muốn gộp dữ liệu của các bản ghi có cùng : ngay_ctu, So_ctu, Ma_ctu của file LKE.DBF sang tạo thành file mới là LKE_TH.DBF

Tôi đã sử dụng câu lệnh là :

SELECT ma_ctu, so_ctu, ngay_ctu, Dien_giai, Tk_no,TK_co, sum (So_tienN) as So_tienN,sum (So_tienC) as So_tienC,...v.v,;
from LKE Group BY Ngay_ctu, Ma_Ctu, So_ctu INTO TABLE p_tmp+[LKE_TH.dbf]

Với câu lệnh trên thì cộng được các dữ liệu kiểu số, còn các dữ liệu kiểu ký tự thì làm như thế nào để chúng cộng được với nhau ? đặt lệnh SUM cho trường kiểu ký tự thì ko được /

Mọi người giúp với nhé. Lâu quá ko làm nên quên mất.
Cám ơn nhiều !

Hi tungvv
Câu lệnh SQL của bạn cần chỉnh sửa cú pháp lại một tý: Đối với các câu SELECT có group dữ liệu thì trong mệnh đề group by bạn phải liệt kê đầy đủ các field không group.
SELECT ma_ctu, so_ctu, ngay_ctu, Dien_giai, Tk_no,TK_co, sum (So_tienN) as So_tienN,sum (So_tienC) as So_tienC,...v.v,;
from LKE Group BY ma_ctu, so_ctu, ngay_ctu, Dien_giai, Tk_no, TK_co INTO TABLE p_tmp+[LKE_TH.dbf]

nhatientri
12-10-2009, 23:27
Mình đang làm bài tập về Fox và gặp 1 vấn đề như sau, trên form của mình có các textbox và 1 grid đã gắn dữ liệu, khi mình dùng lệnh delete for ... để xóa 1 bản ghi và pack... thì grid không thể cập nhập lại được. các bạn xem frmcnncc trong project của mình nhé, thank
SET DELETED ON
DELETE FOR thisform.combo1.value= tbncc.mancc
thisform.Refresh
thisform.grid1.Refresh
thisform.grid1.DoScroll(2)
USE IN tbncc
PACK tbncc
thisform.Refresh
thisform.grid1.Refresh

tayngangvfp
13-10-2009, 08:02
Mình đang làm bài tập về Fox và gặp 1 vấn đề như sau, trên form của mình có các textbox và 1 grid đã gắn dữ liệu, khi mình dùng lệnh delete for ... để xóa 1 bản ghi và pack... thì grid không thể cập nhập lại được. các bạn xem frmcnncc trong project của mình nhé, thank
SET DELETED ON
DELETE FOR thisform.combo1.value= tbncc.mancc
thisform.Refresh
thisform.grid1.Refresh
thisform.grid1.DoScroll(2)
USE IN tbncc
PACK tbncc
thisform.Refresh
thisform.grid1.Refresh

Do bạn dùng PACK nên bị vậy=> đừng dùng PACK trong Form. Chỉ nên set delete off để khỏi thấy mấy cái record bị xoá. Sau khi thoát c/t hãy PACK

THaNGa
13-10-2009, 12:27
Mình để set delete on tức là khi đánh dấu xóa thì các record bị xóa nó ẩn luôn đi, mình đã thử để pack ở sau thisform.realease đã xóa được nhưng vẫn báo lỗi file in use
thisform.Release
pack tênbang
cái này mình viết ở sự kiện click của nút thoát,
hay vậy thì làm cách nào hả bạn,hay là viết lệnh pack ở sự kiện nào trong form nhỉ
mình để pack ở sự kiện detroy của form cũng không được,

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

Cho mình hỏi thêm à có thể bỏ qua lỗi đó bằng cách gõ lệnh vào sự kiện error của form đựoc không, cụ thể phải làm sao?

tayngangvfp
13-10-2009, 13:43
Mình để set delete on tức là khi đánh dấu xóa thì các record bị xóa nó ẩn luôn đi, mình đã thử để pack ở sau thisform.realease đã xóa được nhưng vẫn báo lỗi file in use
thisform.Release
pack tênbang
cái này mình viết ở sự kiện click của nút thoát,
hay vậy thì làm cách nào hả bạn,hay là viết lệnh pack ở sự kiện nào trong form nhỉ
mình để pack ở sự kiện detroy của form cũng không được,

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

Cho mình hỏi thêm à có thể bỏ qua lỗi đó bằng cách gõ lệnh vào sự kiện error của form đựoc không, cụ thể phải làm sao?

Muốn Pack và khỏi bị vậy thì close table đó lại trước, sau đó PACK.

Việc Pack dữ liệu sẽ phát sinh vấn đề khi viết c/t có nhiều người dùng đồng thời. Vì khi pack table phải mở ở chế độ Exclusive. Vậy nên thiết kế sao cho hạn chế việc phải PACK ở mức ít nhất (hoặc định kỳ 5,10 ngày dùng 1 thủ tục duyệt qua toàn bộ table trong datbase và PACK để dọn dẹp).

nhatientri
13-10-2009, 14:40
Thank bạn, mình đã pack được rùi. Mình đang gặp trở ngại trong lệnh update update sach set soluong=soluong+thisform.text.value
nhưng khi chạy báo lỗi alias text1 is not found
mình đã để text1 là numeric, và đã thử dùng biến chung gian nhưng cũng không được.
vậy muốn sửa bản ghi trong form thì phải làm thế nào?

luutieuthu
13-10-2009, 16:25
hixhix! Mình cũng đang học VFP, mới chỉ học đến tạo form thôi mà mình đã khôg biết phải làm thế nào. Khi mình tạo 1 form để nhập danh mục tài khoản kế toán, mình chỉ nhập được duy nhất bản ghi đầu tiên khi tệp danh mục đó còn trống, nhưng khi nhập đến bản thứ 2 thì chương trình lại báo lỗi "file in use" khi bắt đầu chạy chương trình và khi chọn lưu thì nó báo lỗi: "uniqueness of Index SOHIEU is violated" và không thể ghi thêm vào được. Mặc dù mình đã có câu lệnh CLOSE ALL ở tất cả các nút lệnh và phần load form rồi nhưng sao vẫn xuất hiện lỗi đó vậy?

nhatientri
14-10-2009, 04:58
hixhix! Mình cũng đang học VFP, mới chỉ học đến tạo form thôi mà mình đã khôg biết phải làm thế nào. Khi mình tạo 1 form để nhập danh mục tài khoản kế toán, mình chỉ nhập được duy nhất bản ghi đầu tiên khi tệp danh mục đó còn trống, nhưng khi nhập đến bản thứ 2 thì chương trình lại báo lỗi "file in use" khi bắt đầu chạy chương trình và khi chọn lưu thì nó báo lỗi: "uniqueness of Index SOHIEU is violated" và không thể ghi thêm vào được. Mặc dù mình đã có câu lệnh CLOSE ALL ở tất cả các nút lệnh và phần load form rồi nhưng sao vẫn xuất hiện lỗi đó vậy?
Bạn thử xem trong form có dùng lệnh use không, kiểm tra lại các bản ghi trong bảng của bạn đi, sohieu bạn để khóa primary nên khi nhập trùng nhau thì nó báo lỗi này

hoangpnt349
14-10-2009, 10:55
Thank bạn, mình đã pack được rùi. Mình đang gặp trở ngại trong lệnh update update sach set soluong=soluong+thisform.text.value
nhưng khi chạy báo lỗi alias text1 is not found
mình đã để text1 là numeric, và đã thử dùng biến chung gian nhưng cũng không được.
vậy muốn sửa bản ghi trong form thì phải làm thế nào?

Nguyên nhân báo lỗi: Trong câu lệnh update, "thisform." được hiểu như là 1 alias. Bạn nên thay biến thisform.text.value thành 1 biến trung gian, ví dụ: wSoluong.
Chúc bạn thành công.

luutieuthu
14-10-2009, 20:18
Mình đã thử đặt lại khóa là reguler nhưng vẫn hiện dòng thông báo trên.
Vấn đề là mình đang cần tạo một cơ sở dữ liệu như thế này:http://i303.photobucket.com/albums/nn130/hanhtrinhcuasoi/2-1.jpg
Vì vậy mình cần phải đặt sohieutk làm khóa chính, nhưng làm thế nào để khi lưu không bị hiện lỗi trên được vậy?
Mình viết code của phần lưu như thế này nhé:
Sự kiện click:
code:
append blank
replace tentk with thisform.tentk.valule && mình đặt name của text theo tên trường
replace captk with thisform.captk.valule
replace loaitk with thisform.loaitk.valule
replace sohieutk with thisform.sohieutk.valule
thisform.refresh
browse
Các bạn xem hộ mình có gì sai với.
Thanks!

nhatientri
14-10-2009, 22:23
Thank bạn, mình đã sử dụng được lệnh update. bây giờ ở form tìm kiếm của mình có 1 textbox để nhập giá trị tìm kiếm và 1 grid.
Mình muốn là khi mình nhập 1 kí tự 'A' chẳng hạn, thì grid sẽ liệt kê tất cả những người có tên là A.
Mình đã thử với sự kiện interactionChange của textbox
set filter to this.value $ tbsv.ten thì nó lại lọc những người có tên tận cũng là 'A' vậy thì làm thế nào.

tayngangvfp
15-10-2009, 07:38
Thank bạn, mình đã sử dụng được lệnh update. bây giờ ở form tìm kiếm của mình có 1 textbox để nhập giá trị tìm kiếm và 1 grid.
Mình muốn là khi mình nhập 1 kí tự 'A' chẳng hạn, thì grid sẽ liệt kê tất cả những người có tên là A.
Mình đã thử với sự kiện interactionChange của textbox
set filter to this.value $ tbsv.ten thì nó lại lọc những người có tên tận cũng là 'A' vậy thì làm thế nào.

Bạn sửa lại lệnh trên một chút:

set filter to UPPER(LEFT(tbsv.ten,LEN(ALLTRIM(thisform.text1.val ue))))=UPPER(ALLTRIM(thisform.text1.value))

*Grid.refresh

nhatientri
15-10-2009, 11:55
Đa tạ bạn tayngangvfp nhìu nhìu nhé.
cho mình hỏi tiếp.Mình có 1 from để in hóa đơn, trong form mình nhập các thông tin nhứ sohd,makh,tên hàng... khi nhập mình lưu thông tin vào 2 table là "hóa đơn", và "chi tiết bán".
Trên form có nút lưu và in hóa đơn, khi tích vào thì lưu thông tin vào 2 bảng cái này mình đã làm được, sau khi lưu là in hóa đơn, hóa đơn mình
thiết kế bằng label cái này cũng đã được.khi mình gọi label ra: label form ten_label. sau khi tắt cái label thì nó lại báo lỗi file in use, vì sau đó mình có lệnh SET FILTER TO thisform.text1.text=tbctban.sohd để mình sau khi in xong hóa đơn thì có thể in tiếp 1 hóa đơn mới.
Bạn jup mình nhé, thanks nhìu nhìu...

tayngangvfp
15-10-2009, 12:37
Đa tạ bạn tayngangvfp nhìu nhìu nhé.
cho mình hỏi tiếp.Mình có 1 from để in hóa đơn, trong form mình nhập các thông tin nhứ sohd,makh,tên hàng... khi nhập mình lưu thông tin vào 2 table là "hóa đơn", và "chi tiết bán".
Trên form có nút lưu và in hóa đơn, khi tích vào thì lưu thông tin vào 2 bảng cái này mình đã làm được, sau khi lưu là in hóa đơn, hóa đơn mình
thiết kế bằng label cái này cũng đã được.khi mình gọi label ra: label form ten_label. sau khi tắt cái label thì nó lại báo lỗi file in use, vì sau đó mình có lệnh SET FILTER TO thisform.text1.text=tbctban.sohd để mình sau khi in xong hóa đơn thì có thể in tiếp 1 hóa đơn mới.
Bạn jup mình nhé, thanks nhìu nhìu...

Lỗi này xảy ra khi bạn dùng lệnh có liên quan đến việc mở file .dbf (USE, PACK, ZAP,.......) mà file này đã được mở trước đó rồi. Vậy phải có code cụ thể thì mới biết cách xử lý được.

luutieuthu
15-10-2009, 23:11
Hix, sao chẳng ai ngó ngàng gì đến câu hỏi của mình nhỉ? :(

nhatientri
16-10-2009, 00:33
command1.click()
INSERT INTO tbhdban(sohd,makh,ngayban,tongtien);
values(thisform.text1.Text,thisform.combo1.Text,th isform.text2.Value,thisform.text3.value)
LABEL FORM e:\nhom7\lb_hoadon.lbx FOR sohd=ALLTRIM(thisform.text1.Text) preview
Tức là khi mình nhập dữ liệu vào bảng mình in hoad đơn lun,nhưng vẫn không dùng lệnh for để lọc được(label hiện lên xong tắt lun),khi bỏ for đi thì nó hiển thị tất cả các record kể cả record mình vừa nhập.Tại sao lại như thế nhỉ.bạn xử lý jups mình nhé, thank bạn nhiều.
Bạn có thể cho mình PhoneNuber và Y!M không để tiện hỏi.mình chỉ phiền bạn đến thứ 7 thui vì thứ 7 là mình phải nộp bài rùi.
Project của mình đây. bạn xem frmhdban nhé
http://www.mediafire.com/?hygmxgoztry

linhberos
16-10-2009, 00:56
Các bạn cho mình hỏi với. Mình muốn chèn nhiều bản ghi cùng một lúc trong VB 6.0 thì làm như thế nào nhỉ. Mình đã dùng câu lệnh lặp nhưng mà không được. Bạn nào có cách nào chỉ cho mình với

tayngangvfp
16-10-2009, 06:50
...... đến bản thứ 2 thì chương trình lại báo lỗi "file in use" khi bắt đầu chạy chương trình và khi chọn lưu thì nó báo lỗi: "uniqueness of Index SOHIEU is violated" và không thể ghi thêm vào được. Mặc dù mình đã có câu lệnh CLOSE ALL ở tất cả các nút lệnh và phần load form rồi nhưng sao vẫn xuất hiện lỗi đó vậy?
...
Mình viết code của phần lưu như thế này nhé:
Sự kiện click:
code:
append blank
replace tentk with thisform.tentk.valule && mình đặt name của text theo tên trường
replace captk with thisform.captk.valule
replace loaitk with thisform.loaitk.valule
replace sohieutk with thisform.sohieutk.valule
thisform.refresh
browse
Các bạn xem hộ mình có gì sai với.
Thanks!


1/Lỗi "uniqueness of Index SOHIEU is violated" có thể là do lệnh Append Blank vì có thể trước đó đã có một record "trắng" rồi. Bạn kiểm tra lại xem.
2/Lỗi "file in use": tức bảng đã được mở rồi. Còn muốn biết chính xác thì phải xem code


@nhatientri
Bạn sửa lại đoạn code trong Click.


INSERT INTO tbhdban(sohd,makh,ngayban,tongtien);
values(thisform.text1.Text,thisform.combo1.Text,th isform.text2.Value,thisform.text3.value)
REQUERY([vInHoaDon])
tSoHoaDon= ALLTRIM(thisform.text1.Value)
LABEL FORM D:\downloads\Nhom7\Nhom7\lb_hoadon.lbx FOR ALLTRIM(vInHoaDon.sohd)=tSoHoaDon preview
......

aaa_vfp
16-10-2009, 09:18
Em là người mới học VFP nên cũng chưa rành nhờ các anh chị giúp đở.
Em có 1 bảng Hanghoa(mahh,tenhh). khi nhập liệu thì có 1 số mahh bị trùng nhau, giờ em muốn liệt kê tất cả các mahh giống nhau đó ra hiển thị trên Gird.
Anh chị nào có thể giúp em được không a. Xin chân thành cảm ơn.

tayngangvfp
17-10-2009, 01:41
Em là người mới học VFP nên cũng chưa rành nhờ các anh chị giúp đở.
Em có 1 bảng Hanghoa(mahh,tenhh). khi nhập liệu thì có 1 số mahh bị trùng nhau, giờ em muốn liệt kê tất cả các mahh giống nhau đó ra hiển thị trên Gird.
Anh chị nào có thể giúp em được không a. Xin chân thành cảm ơn.

Bạn dùng đoạn code sau để lọc record trùng

SELECT mahh, COUNT(mahh) as trung FROM hanghoa GROUP BY mahh HAVING COUNT(mahh)>1 INTO CURSOR TrungMaHH

sau đó tạo 1 grid để hiển thị

Grid.recordsource=TrungMaHH

luutieuthu
17-10-2009, 09:29
@ tayngangvfp: thanks bạn, mình đã làm được rùi, chỉ cần xóa cái bản ghi trống là được. Hi.(mà cái nút thanks ở đâu ấy nhỉ?)
À, tiện đây cho mình hỏi luôn: mình muốn khi click chuột vào ô text thì các dòng chữ trong ô đó bị bôi đen để khỏi mất công xóa, vậy mình phải viết code cho text như thế nào nhỉ?

aaa_vfp
17-10-2009, 20:40
Bạn dùng đoạn code sau để lọc record trùng

SELECT mahh, COUNT(mahh) as trung FROM hanghoa GROUP BY mahh HAVING COUNT(mahh)>1 INTO CURSOR TrungMaHH

sau đó tạo 1 grid để hiển thị

Grid.recordsource=TrungMaHH

Xin cảm ơn anh tayngangvfp nhiều!
Em sẽ làm thử xem sao. Có gì trở ngại thì nhờ anh chỉ giáo tiếp.

nhatientri
17-10-2009, 21:04
Mình đang làm 1 report thống kê 10 người mua hàng nhiều nhất hàng tháng, mình tạo 1 view gồm sốhd,mã kh, tênkh,ngày mua, tháng, năm, mã sách, số lượng... report mình group theo năm, tháng, mãkh. nó chỉ thống kê được khách hàng đã mua bao nhiêu trong tháng thui, làm sao để được 10 khách mua nhiều nhất hàng tháng??. Mình đã thử group ở view và chọn top 10 nhưng không được.

alone_night
19-10-2009, 15:18
Mình đang làm 1 report thống kê 10 người mua hàng nhiều nhất hàng tháng, mình tạo 1 view gồm sốhd,mã kh, tênkh,ngày mua, tháng, năm, mã sách, số lượng... report mình group theo năm, tháng, mãkh. nó chỉ thống kê được khách hàng đã mua bao nhiêu trong tháng thui, làm sao để được 10 khách mua nhiều nhất hàng tháng??. Mình đã thử group ở view và chọn top 10 nhưng không được.

Thế này nhé
giả sử có bảng khachhang (makh, soluong)



select 0
use khachhang
index on makh order tag makh
total to maxsell on makh
select 0
use maxsell
select top 10 from maxsell order by soluong desc into cursor temp
browse

chudongchinho
22-10-2009, 15:03
Vấn đề chuyển đổi giữa các loại Font = VFP cũng đã được bàn luận ở trong các chủ để trước đây. Việc dùng VFP để chuyển thì tốc độ không được nhanh như các PM chuyển đổi phổ biến. Tuy nhiên có còn hơn không, và quan trọng là chủ động được trong c/t của mình !!!

Tôi có viết 1 class ví dụ về việc này. Nhưng không hiểu sao không up lên Megaupload được !
Vậy bạn nào có nhu cầu, để lại địa chỉ email để mình gửi.

Chúc thành công.

Bạn có thể cho mình xin cái class chuyển chuỗi từ ABC sang Unicode được không ?
Xin gửi vào chudongchinho@yahoo.com
Cám ơn rất nhiều.

tang_bn
24-10-2009, 10:07
Chào các bạn.
Mình cũng mới học Foxpro được mấy tháng,mình đang làm 1 form cập nhật thông tin sản phẩm. minh có tao 1 Fiedl ảnh sản phẩm nhưng mà nó lại không cho nhập đường dẫn ảnh. có bạn nào biết thì giúp mình với.
Mình cảm ơn trước nhé.

tayngangvfp
24-10-2009, 10:41
.....
À, tiện đây cho mình hỏi luôn: mình muốn khi click chuột vào ô text thì các dòng chữ trong ô đó bị bôi đen để khỏi mất công xóa, vậy mình phải viết code cho text như thế nào nhỉ?

Bạn đặt thuộc tính (của tetbox): SelectOnEntry= .T.



@chudongchinho
Đã gửi, hy vọng nó phần nào có ích cho bạn


@tang_bn

Để lưu đường dẫn ảnh, bạn phải dùng field kiểu character hoặc memo

hmncminh
24-10-2009, 11:08
Bạn nào giúp mình đoạn lệnh để kết nối từ VFP7.0 vào CSDL Oracle với (hình như là qua ODBC). Tên database là qlt, đặt trên máy chủ server3. Mình làm theo hướng dẫn dùng lệnh create connection nhưng chưa được. Sau khi kết nối được thì chỉ cách mình truy xuất như thế nào, thanks nhìu.

dungnc74
24-10-2009, 16:07
Các bạn cho mình hỏi, mình có một Textbox dữ liệu nhập là date() khi nhập vào ngày ví dụ là 22/10/2009, mình chỉ nhập 22/10 rồi Enter sau đó quay lại để nhập ngày khác ví dụ 23/10/2009 thì con trỏ không về vị trí đầu tiên (|22/10/2009) ma nó nhảy đến đúng vị trí lần trước Khi mình ấn Enter (22/10|/2009). Vậy phải làm sao để con trỏ quay về vị trí đầu của Textbox

alone_night
24-10-2009, 23:02
Các bạn cho mình hỏi, mình có một Textbox dữ liệu nhập là date() khi nhập vào ngày ví dụ là 22/10/2009, mình chỉ nhập 22/10 rồi Enter sau đó quay lại để nhập ngày khác ví dụ 23/10/2009 thì con trỏ không về vị trí đầu tiên (|22/10/2009) ma nó nhảy đến đúng vị trí lần trước Khi mình ấn Enter (22/10|/2009). Vậy phải làm sao để con trỏ quay về vị trí đầu của Textbox

chỉ bằng cách............................................. .

Bạn đặt thuộc tính (của tetbox): SelectOnEntry= .T.

dungnc74
25-10-2009, 08:52
chỉ bằng cách............................................. .

Làm như vậy thì nó bôi đen textbox, mình muốn con trỏ ở vị trí đầu của textbox thôi {|22/10/2009}

kudomt
25-10-2009, 09:57
Xin chào các anh chị !

Hiện em đang bị vướng 1 chỗ như thế này, mong các anh chị giúp đỡ em với .

Em muốn thế này : Có 1 table trong table có 2 cột : tên và command

Em tạo 1 form, trong form add 1 grid, trong grid có 1 cột, trong cột có 1 commandbutton (thay vì là textbox như grid bình thường).

EM muốn khi chạy form, commandbutton (Nút) sẽ có caption là các record của field tên trong table, khi click thì nó thực hiện công việc trong field command của table !

Nhưng em làm mãi chẳng được, mong các cao thủ giúp em với !

Em xin cảm ơn !

alone_night
25-10-2009, 10:37
Làm như vậy thì nó bôi đen textbox, mình muốn con trỏ ở vị trí đầu của textbox thôi {|22/10/2009}

:) Bạn có thể làm cách này, ở tình huống GotFocus của TextBox
thêm vào KEYBOARD '{HOME}'

dungnc74
25-10-2009, 21:18
:) Bạn có thể làm cách này, ở tình huống GotFocus của TextBox
thêm vào KEYBOARD '{HOME}'

Xin cảm ơn bạn, tớ làm được rồi.

mhd_pc
26-10-2009, 14:12
Cho mình hỏi:
1. Bạn nào biết đoạn code của VisualFox6 chuyển một chuỗi định dạng font TCVN3 thành font VNI chỉ mình với.

Mình đọc trong forum thấy các bạn có class chuyển font, bạn nào có vui lòng gởi cho mình với, email: maihoangde_pc@yahoo.com

2. Sử dụng "report form namereport noconsole to printer prompt". Có cách nào kiểm soát được dữ liệu muốn in đã được in thành công không?
ví dụ: in một báo cáo, cái báo cáo này được in ra giấy thì mình díable nút in, còn nếu vì lý do nào đó (đang in máy in mất điện, cable bị rút ra, ...) thì enable nút in để cho in lại.

Chân thành Cám ơn.

hmncminh
26-10-2009, 14:15
sao ko có ai trả lời vậy, có ai giúp mình với
--------------------------------------------------------------------------
Bạn nào giúp mình đoạn lệnh để kết nối từ VFP7.0 vào CSDL Oracle với (hình như là qua ODBC). Tên database là qlt, đặt trên máy chủ server3. Mình làm theo hướng dẫn dùng lệnh create connection nhưng chưa được. Sau khi kết nối được thì chỉ cách mình truy xuất như thế nào, thanks nhìu.

tayngangvfp
26-10-2009, 19:08
Xin chào các anh chị !

Hiện em đang bị vướng 1 chỗ như thế này, mong các anh chị giúp đỡ em với .
Em muốn thế này : Có 1 table trong table có 2 cột : tên và command
Em tạo 1 form, trong form add 1 grid, trong grid có 1 cột, trong cột có 1 commandbutton (thay vì là textbox như grid bình thường).
EM muốn khi chạy form, commandbutton (Nút) sẽ có caption là các record của field tên trong table, khi click thì nó thực hiện công việc trong field command của table !
Nhưng em làm mãi chẳng được, mong các cao thủ giúp em với !
Em xin cảm ơn !

Bạn thử code sau xem sao

************
Public oform
oform=Createobject("VDButtonInGrid")
oform.Show

Define Class VDButtonInGrid As Form
Height = 230
Width = 500
autocenter=.T.
Caption=[TayngangVFP : Vi du ve dynamic caption cua Button.]

Add Object myGrid As Grid With ;
Left = 50, Height = 200, Width = 350, Top =20,;
ColumnCount = 1, RowHeight = 30, DeleteMark=.F.,SplitBar=.F.

Procedure Load
Create Cursor Cur_Command (Ten C(30), Lenh C(100))

Insert Into Cur_Command Values ([Thong bao],[MESSAGEBOX("Hello !!!"+CHR(13)+"Ban cam thay the nao?",0+32,"Button in Grid")])
Insert Into Cur_Command Values ([Getpic],[GETPICT()])
Insert Into Cur_Command Values ([Brow Folder],"GETDIR([],[Brow],[Chon folder],16)")
Insert Into Cur_Command Values ([Modify command],[MODIFY COMMAND ?])
GO TOP
Endproc

Procedure Init
With This.myGrid
With .Columns(1)
.Header1.Caption = 'Command'
.AddObject('myCustom','ButtonControls')
.CurrentControl = 'myCustom'
.Sparse = .F.
.Width=300
.myCustom.Visible = .T.
Endwith
Endwith
Endproc
Enddefine

Define Class buttoncontrols As Container
Width = 280
Height = 31
BackStyle = 0
BorderWidth = 0
Anchor= 15
Name = "buttoncontrols"
Add Object Lenh As CommandButton With ;
Left = 0, Height = 30, Width = 275, Caption = "0",Anchor= 15

Procedure BackStyle_access
Lparameters vNewVal
IF this.Lenh.Caption<>ALLTRIM(Ten)
this.Lenh.Caption=ALLTRIM(Ten)
ENDIF
Return This.BackStyle
ENDPROC

Procedure Lenh.MouseDown
LPARAMETERS nButton, nShift, nXCoord, nYCoord
this.Caption=ALLTRIM(Ten)
ENDPROC

Procedure Lenh.MouseEnter
LPARAMETERS nButton, nShift, nXCoord, nYCoord
this.Caption=ALLTRIM(Ten)
ENDPROC

Procedure Lenh.Click
this.Caption=ALLTRIM(Ten)
EXECSCRIPT(Lenh)
ENDPROC

Enddefine

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

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


Cho mình hỏi:
1. Bạn nào biết đoạn code của VisualFox6 chuyển một chuỗi định dạng font TCVN3 thành font VNI chỉ mình với.

Mình đọc trong forum thấy các bạn có class chuyển font, bạn nào có vui lòng gởi cho mình với, email: maihoangde_pc@yahoo.com

2. Sử dụng "report form namereport noconsole to printer prompt". Có cách nào kiểm soát được dữ liệu muốn in đã được in thành công không?
ví dụ: in một báo cáo, cái báo cáo này được in ra giấy thì mình díable nút in, còn nếu vì lý do nào đó (đang in máy in mất điện, cable bị rút ra, ...) thì enable nút in để cho in lại.

Chân thành Cám ơn.

1.Đã gửi class chuyển font. Nếu để chuyển từ VNI/ABC<->UNICODE thì chỉ sử dụng được khi dùng VFP9. Còn nếu chỉ chuyển đổi VNI<->ABC thì VFP6 cũng được.
2.Theo m thì không có cách nào như vậy. Vì m thấy Word hay Excel cũng không có chức năng này

dungnc74
26-10-2009, 20:35
Gửi Tayngangvfp:
Mình có đọc bài viết của bạn: Thay thế toolbar printpreview mặc định của VFP bằng Class printpreview tự tạo nhưng chưa biết sử dụng. Mình chạy thử file Test.prg thì thấy báo lỗi dòng: DO (_REPORTPREVIEW) WITH Preview_Container là: Variable _REPORTPREVIEW is not found
Nhờ bạn hướng dẫn

tayngangvfp
26-10-2009, 20:45
Gửi Tayngangvfp:
Mình có đọc bài viết của bạn: Thay thế toolbar printpreview mặc định của VFP bằng Class printpreview tự tạo nhưng chưa biết sử dụng. Mình chạy thử file Test.prg thì thấy báo lỗi dòng: DO (_REPORTPREVIEW) WITH Preview_Container là: Variable _REPORTPREVIEW is not found
Nhờ bạn hướng dẫn

Class đó m dùng với VFP9. Có thể bạn dùng VFP6 nên bị lỗi. Nếu cần dùng với VFP6 thì m sẽ gửi 1 class khác.

dungnc74
26-10-2009, 20:57
Class đó m dùng với VFP9. Có thể bạn dùng VFP6 nên bị lỗi. Nếu cần dùng với VFP6 thì m sẽ gửi 1 class khác.

Bạn gửi cho mình nhé, mình dùng VFP6. Địa chỉ của mình: vanchi174@yahoo.com.vn. Thank!

mhd_pc
27-10-2009, 07:23
Bạn thử code sau xem sao
1.Đã gửi class chuyển font. Nếu để chuyển từ VNI/ABC<->UNICODE thì chỉ sử dụng được khi dùng VFP9. Còn nếu chỉ chuyển đổi VNI<->ABC thì VFP6 cũng được.
2.Theo m thì không có cách nào như vậy. Vì m thấy Word hay Excel cũng không có chức năng này

Sau khi tải thư viện bạn gởi cho mình, mình làm như sau: (code viết trong VFP6)
1. Tạo 2 tetbox với trường name: txtabc2vni & txtabc2vni2
2. Click "View Classes" add thuvienfont.vcx, nó hiện lên class ChuyenDoiFont, mình click và cho vào Form.
3. Tạo Method ABC2VNI:
PARAMETERS cChuoi_Abc
RETURN thisform.chUYENDOIFONT.abc2vni(cChuoi_Abc)
4. Tạo một button:
tUni=thisform.abc2vni(ALLTRIM(thisform.txtabc2vni. Value))

=SYS(3101,65001)
thisform.txtabc2vni2.value=tUni
thisform.Refresh
=SYS(3101,0)

---> kết quả OK.


Cám ơn bạn rất nhiều.

kudomt
27-10-2009, 08:40
Bạn thử code sau xem sao

************
Public oform
oform=Createobject("VDButtonInGrid")
oform.Show

Define Class VDButtonInGrid As Form
Height = 230
Width = 500
autocenter=.T.
Caption=[TayngangVFP : Vi du ve dynamic caption cua Button.]

Add Object myGrid As Grid With ;
Left = 50, Height = 200, Width = 350, Top =20,;
ColumnCount = 1, RowHeight = 30, DeleteMark=.F.,SplitBar=.F.

Procedure Load
Create Cursor Cur_Command (Ten C(30), Lenh C(100))

Insert Into Cur_Command Values ([Thong bao],[MESSAGEBOX("Hello !!!"+CHR(13)+"Ban cam thay the nao?",0+32,"Button in Grid")])
Insert Into Cur_Command Values ([Getpic],[GETPICT()])
Insert Into Cur_Command Values ([Brow Folder],"GETDIR([],[Brow],[Chon folder],16)")
Insert Into Cur_Command Values ([Modify command],[MODIFY COMMAND ?])
GO TOP
Endproc

Procedure Init
With This.myGrid
With .Columns(1)
.Header1.Caption = 'Command'
.AddObject('myCustom','ButtonControls')
.CurrentControl = 'myCustom'
.Sparse = .F.
.Width=300
.myCustom.Visible = .T.
Endwith
Endwith
Endproc
Enddefine

Define Class buttoncontrols As Container
Width = 280
Height = 31
BackStyle = 0
BorderWidth = 0
Anchor= 15
Name = "buttoncontrols"
Add Object Lenh As CommandButton With ;
Left = 0, Height = 30, Width = 275, Caption = "0",Anchor= 15

Procedure BackStyle_access
Lparameters vNewVal
IF this.Lenh.Caption<>ALLTRIM(Ten)
this.Lenh.Caption=ALLTRIM(Ten)
ENDIF
Return This.BackStyle
ENDPROC

Procedure Lenh.MouseDown
LPARAMETERS nButton, nShift, nXCoord, nYCoord
this.Caption=ALLTRIM(Ten)
ENDPROC

Procedure Lenh.MouseEnter
LPARAMETERS nButton, nShift, nXCoord, nYCoord
this.Caption=ALLTRIM(Ten)
ENDPROC

Procedure Lenh.Click
this.Caption=ALLTRIM(Ten)
EXECSCRIPT(Lenh)
ENDPROC

Enddefine

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


Mình đã làm được rồi :D

Rất cảm ơn bạn tayngangvfp và các bạn đã quan tâm, giúp đỡ !

Một lần nữa mình xin cảm ơn các bạn !

Chúc các bạn luôn thành công !

dungnc74
27-10-2009, 09:17
Tayngangvfp đã gửi cho mình Class printpreview chưa vậy? sao không nhận được?

kudomt
27-10-2009, 10:30
@tayngangfvp và các bạn :

Các bạn có thể vui lòng cho mình hỏi :
- Nếu muốn lấy giá trị của caption của button trong grid trên thì nó là giá trị nào ? Vì mình thực hiện : LOCATE FOR ALLTRIM(thisform.myGrid.column1.myCustom.caption)= =ALLTRIM(ten) thì nó báo property CAPTION is not found !
- Nếu mình thêm 1 column nữa trong grid ví dụ là enable và trong column này là 1 check, vậy làm sao định controlsource của nó là cur_command.enable được, để nó tự check true/false ?
- Làm sao để làm cho chiều cao của grid sẽ tự động thay đổi và grid điền đầy đủ các giá trị , tức là ko có scrol bar đứng và vẫn thấy tất cả các command trong grid trên !
- ... Sau khi có phát sinh sẽ hỏi tiếp, mong các bạn không phiền :D

Rất mong được sự giúp đỡ của bạn tayngangvfp và các bạn !

Chân thành cảm ơn !:D

mhd_pc
27-10-2009, 13:53
Mình có viết đoạn code chuyển font TCVN3 sang Không Dấu như sau:
&&-----------------------
Parameter strTCVN
strTCVN3 = [¸µ¶·¹¨¾»¼½Æ©ÊÇÈÉË¡¢ÐÌÎÏѪ ÕÒÓÔÖ£ãßáâä«èåæçé¬íêëì Ý×ØÜÞýúûüþ®§óïñ­òôøõö÷ù¦]
strKD = [aaaaaaaaaaaaaaaaaAAeeeeeeeeeeeEoooooooooooooooooOO iiiiiyyyyydDuuuuuuuuuuuU]
local nViTri, i, lenStr, cMotKytu, strReturn

strReturn = ''
lenStr = Len(AllT(strTCVN))
If lenStr = 0 Then
return strReturn
EndIf

&& Convert TCVN3 string to KD
For i = 1 to lenStr
cMotKyTu=SUBSTR(strTCVN,i,1)
nViTri=AT(cMotKyTu,strTCVN3)

IF nViTri>0
strReturn=strReturn + RTRIM(SUBSTR(strKD,nViTri,1))
ELSE
strReturn = strReturn + cMotKyTu
ENDIF
EndFor
Return strReturn
&&-----------------------

Mình chưa test kỹ nhưng chắc là OK.

tayngangvfp
27-10-2009, 17:45
.....
- Nếu muốn lấy giá trị của caption của button trong grid trên thì nó là giá trị nào ? Vì mình thực hiện : LOCATE FOR ALLTRIM(thisform.myGrid.column1.myCustom.caption)= =ALLTRIM(ten) thì nó báo property CAPTION is not found !
- Nếu mình thêm 1 column nữa trong grid ví dụ là enable và trong column này là 1 check, vậy làm sao định controlsource của nó là cur_command.enable được, để nó tự check true/false ?
- Làm sao để làm cho chiều cao của grid sẽ tự động thay đổi và grid điền đầy đủ các giá trị , tức là ko có scrol bar đứng và vẫn thấy tất cả các command trong grid trên !


1/myCustom.Lenh.caption
2/m chưa hiểu ý bạn
3/ Height của Grid= (Số dòng x Row Height) + Header Height: như vậy chỉ cần biết là có bao nhiêu dòng thì sẽ tính được chiều cao (tuy nhiên phục thuộc vào Height của Form)


@dungnc74
Đã gửi class cho VFP6

dungnc74
27-10-2009, 22:19
Cám ơn bạn Tayngangvfp, Class này vẫn báo lối "_Pagetotal is not found", nếu thay _Pagetotal= 1 số nào đó thì chạy được. Vậy là sao?

tayngangvfp
28-10-2009, 07:08
Cám ơn bạn Tayngangvfp, Class này vẫn báo lối "_Pagetotal is not found", nếu thay _Pagetotal= 1 số nào đó thì chạy được. Vậy là sao?

Class nay m viet =vfp6 sau đó chắc có chỉnh sửa lại khi dùng VFP9 nên bị vậy! Để m test lại và gửi sau. Tạm thời bạn có thể dùng bằng cách đặt _Pagetotal = 100

kudomt
28-10-2009, 13:29
1/myCustom.Lenh.caption
2/m chưa hiểu ý bạn
3/ Height của Grid= (Số dòng x Row Height) + Header Height: như vậy chỉ cần biết là có bao nhiêu dòng thì sẽ tính được chiều cao (tuy nhiên phục thuộc vào Height của Form)



@tayngangvfp :

1. OK
3. OK
2. Ý mình là thế này : thay vì lúc đầu ý của mình là :


Mình tạo 1 form, trong form add 1 grid, trong grid có 1 cột, trong cột có 1 commandbutton (thay vì là textbox như grid bình thường).

Mình muốn khi chạy form, commandbutton (Nút) sẽ có caption là các record của field tên trong table, khi click thì nó thực hiện công việc trong field command của table !

Cái này làm được rồi .
Bây giờ ý mình là :



Mình tạo 1 form, trong form add 1 grid, trong grid có 3 cột, trong cột 1 có commandbutton (thay vì là textbox như grid bình thường), cột 2 là textbox như bình thường, cột 3 là 1 checkbox.

Mình muốn khi chạy form, commandbutton (Nút) sẽ có caption là các record của field tên trong table, khi click thì nó thực hiện công việc trong field command của table, textbox thể hiện 1 field của table, checkbox cũng thể hiện 1 field có giá trị .t./.f. của table !


Ý mình là vậy đó, mong bạn xem giúp :D khi bạn rãnh nhé :D

Cảm ơn bạn !

dungnc74
29-10-2009, 21:29
Các bạn cho hỏi có thể tạo một Grid nhập dữ liệu có hai cửa sổ như lệnh :
Brow lock 2 không?

lovefoxsql
30-10-2009, 16:49
Các bạn cho hỏi có thể tạo một Grid nhập dữ liệu có hai cửa sổ như lệnh :
Brow lock 2 không?

Lâu lắm không vào ddth VFP các bác hoạt động vẫn sôi nổi quá !

dungnc74 :
bạn dùng 2 thuộc tính sau của Grid để thực hiện: Panel, Partition
Ví dụ :
THISFORM.GridName.Partition=200
THISFORM.GridName.Panel=1

dungnc74
30-10-2009, 20:55
Lâu lắm không vào ddth VFP các bác hoạt động vẫn sôi nổi quá !

dungnc74 :
bạn dùng 2 thuộc tính sau của Grid để thực hiện: Panel, Partition
Ví dụ :
THISFORM.GridName.Partition=200
THISFORM.GridName.Panel=1

Xin cảm ơn bạn rất nhiều.

luutieuthu
01-11-2009, 17:54
Hix, cho mình hỏi chút, làm sao để gõ được nội dung dài vào textbox mà không phải kéo dài (rộng) text box đó? (Tức là làm cho chữ chạy sang trái ấy):(

dungnc74
01-11-2009, 20:26
Hix, cho mình hỏi chút, làm sao để gõ được nội dung dài vào textbox mà không phải kéo dài (rộng) text box đó? (Tức là làm cho chữ chạy sang trái ấy):(

Bạn đặt thuộc tính MaxLength của Texbox = 255 là được

ngoisaochieu04
02-11-2009, 10:10
Chào các bác!
Mình có vấn đề này mong các bác xem giải quyết gumf với:
Mình tạo ra một Report, trên report đó có rất nhiều trang. bây giờ minh muốn chỉ in những trang cần thiết thì có cách nào không, chứ nếu cứ thế click nút lệnh Print thì máy sẽ in tất cả các trang mất.

lovefoxsql
02-11-2009, 11:43
Chào các bác!
Mình có vấn đề này mong các bác xem giải quyết gumf với:
Mình tạo ra một Report, trên report đó có rất nhiều trang. bây giờ minh muốn chỉ in những trang cần thiết thì có cách nào không, chứ nếu cứ thế click nút lệnh Print thì máy sẽ in tất cả các trang mất.

Thông thường bạn nên làm 1 form chuyên điều khiển in trong đó có các option để có thể lựa chọn như Output (Preview, Printer, Excel file ...), Số bản in, Từ trang ... đến trang.

Bạn tham khảo đoạn code sau :

PRINTJOB
FOR iii = 1 TO _Copies
REPORT FORM (_ReportName) TO PRINTER NOCONSOLE RANGE _FromPage , _ToPage
ENDFOR
ENDPRINTJOB

kudomt
02-11-2009, 11:55
Chào các bác!
Mình có vấn đề này mong các bác xem giải quyết gumf với:
Mình tạo ra một Report, trên report đó có rất nhiều trang. bây giờ minh muốn chỉ in những trang cần thiết thì có cách nào không, chứ nếu cứ thế click nút lệnh Print thì máy sẽ in tất cả các trang mất.

Mình xin đưa ra ý tưởng này, mong có thể giúp được bạn :
- Đầu tiên, hãy cho dữ liệu ra (Xem) report để xem mỗi trang trong report có bao nhiêu record.
- Muốn in trang nào thì tính số record cần thể hiện.

Ví dụ :
- Xem report, và xác định mỗi trang có 30 record,
- Làm 1 text chứa số trang cần in (giống như word) ví dụ 1,3,5,10,20
- Tìm cách lấy từng số trong text đó
- Ví dụ bạn muốn in trang 1 và trang 3, tức là bạn sẽ cho thể in (in) các record từ 1 đến 30 và từ 30 đến 90. Bạn chỉ cần làm sao để copy các record từ 1 đến 30 (trang 1) và từ 30 đến 90 (trang 3) đến 1 table tạm.
- Làm 1 nút in, In reprort từ table tạm .
Thực hiện lệnh do while để làm việc này.

Chỉ là ý tưởng, mình cũng chưa nghĩ ra code để thực hiện được, mong bạn thông cảm !

Tiểu Lê
02-11-2009, 16:45
cho mình hỏi các viết report của VF với. Đề bài cho một danh mục cán bô, giờ phải tạo report theo NƠILAMVIEC, mình không biết phải làm thế nào cả, đây là bài kiểm tra, và tất cả phải làm trên....giấy :(
Mọi người chỉ giúp nhanh được khôgn ạ

dungnc74
02-11-2009, 17:23
Chào các bác!
Mình có vấn đề này mong các bác xem giải quyết gumf với:
Mình tạo ra một Report, trên report đó có rất nhiều trang. bây giờ minh muốn chỉ in những trang cần thiết thì có cách nào không, chứ nếu cứ thế click nút lệnh Print thì máy sẽ in tất cả các trang mất.

Vấn đề này hôm trước Tayngangvfp Đã trả lời cho tớ rồi.

@Tayngangvfp
Tiện đây cho tớ hỏi, khi in xong tớ vẫn muốn hiện report để có thể tiếp tục in thì làm thế nào? vì Class của bạn in xong nó thoát luôn report.

tayngangvfp
03-11-2009, 15:23
@kudomt

***********
Public oform
oform=Createobject("VDButtonInGrid")
oform.Show

Define Class VDButtonInGrid As Form
Height = 230
Width = 900
autocenter=.T.
Caption=[TayngangVFP : Vi du ve dynamic caption cua Button.]

Add Object myGrid As Grid With ;
Left = 50, Height = 200, Width = 850, Top =20,;
ColumnCount = 3, RowHeight = 30, DeleteMark=.F.,SplitBar=.F.

Procedure Load
Create Cursor Cur_Command (Ten C(30), Lenh C(100),GhiChu C(30),TinhTrang L)

Insert Into Cur_Command Values ([Thong bao],[MESSAGEBOX("Hello !!!"+CHR(13)+"Ban cam thay the nao?",0+32,"Button in Grid")],[Hoi nguoi dung],.T.)
Insert Into Cur_Command Values ([Getpic],[GETPICT()],[Hinh nao?],.F.)
Insert Into Cur_Command Values ([Brow Folder],"GETDIR([],[Brow],[Chon folder],16)",[Tim file],.T.)
Insert Into Cur_Command Values ([Modify command],[MODIFY COMMAND ?],[Edit command],.T.)
GO TOP
Endproc

Procedure Init
With This.myGrid
With .Columns(1)
.Header1.Caption = 'Command'
.AddObject('myCustom','ButtonControls')
.CurrentControl = 'myCustom'
.Sparse = .F.
.Width=300
.myCustom.Visible = .T.
Endwith
With .Columns(2)
.Header1.Caption = 'Ghi chu'
.Sparse = .F.
.Width=300
.Controlsource=[GhiChu]
Endwith

With .Columns(3)
.Header1.Caption = 'Tinh trang'
TRY
.AddObject('chkTinhTrang','checkbox')
CATCH WHEN .T.

ENDTRY
.chkTinhTrang.Caption=[]
.CurrentControl = 'chkTinhTrang'
.Sparse = .F.
.Width=40
.Controlsource=[TinhTrang]
Endwith

Endwith
Endproc
Enddefine

Define Class buttoncontrols As Container
Width = 280
Height = 31
BackStyle = 0
BorderWidth = 0
Anchor= 15
Name = "buttoncontrols"
Add Object Lenh As CommandButton With ;
Left = 0, Height = 30, Width = 275, Caption = "0",Anchor= 15

Procedure BackStyle_access
Lparameters vNewVal
IF this.Lenh.Caption<>ALLTRIM(Ten)
this.Lenh.Caption=ALLTRIM(Ten)
ENDIF
Return This.BackStyle
ENDPROC

Procedure Lenh.MouseDown
LPARAMETERS nButton, nShift, nXCoord, nYCoord
this.Caption=ALLTRIM(Ten)
ENDPROC

Procedure Lenh.MouseEnter
LPARAMETERS nButton, nShift, nXCoord, nYCoord
this.Caption=ALLTRIM(Ten)
ENDPROC

Procedure Lenh.Click
this.Caption=ALLTRIM(Ten)
EXECSCRIPT(Lenh)
ENDPROC

Enddefine

***********


@ dungnc74

Có thể dùng 1 vòng lặp để thực hiện lệnh REPORT FORM ......

M đã gửi lại class dùng cách này. Bạn chỉnh sửa lại theo ý bạn muốn

dungnc74
03-11-2009, 21:10
Cảm ơn Tayngangvfp nhé

sweetboy2805
06-11-2009, 10:50
Chào các bạn, mình có 1 vấn đề mong các bạn giúp đỡ.

Mình cần đọc 1 file text(.txt) để đưa dữ liệu vào bảng dbf. Mình đã làm đc rồi, nhưng có cái dở là mỗi lần chạy thì phải chọn file text để import vào. Bây giờ mình muốn gán mắc định 1 file text đã biết trước thì có cách nào ko ? Ví dụ như tên file text là : abc.txt

Đây là đoạn code đọc file text qua dbf mình viết , các bạn xem rồi giúp mình nhé. Cám ơn mọi người.

create table docdl(coder c(18))
lctenfile=getfile("txt")
append from (lctenfile) delimited with _
clos all

longhg
06-11-2009, 14:40
Tôi là Long. Tôi đang copy chương trình tính lương dùng phần mềm cài trên visua fox. Nhưng khi chạy trên máy thì báo lỗi Win 32. Vậy để chạy được chương trình trên tôi phải làm gì? Có ai giúp tôi . Xin cảm ơn
Đ/c: Mail: Longdaohuu@gmai.com. ĐT 091.2819.289

dungnc74
06-11-2009, 16:54
@ Longhg
Cái này phải thực tế mới biết được. Bạn có thể gửi để tôi test thử

aaa_vfp
07-11-2009, 15:49
Chào các Bác, Mong các Bác giúp dùm
-Trong Visual Fox làm sao để ComboBox tự dộng hiện danh sách khi con trỏ chỉ đến.
-Mình gõ 1 ký tu dau "VD : chu M" thì ComboBox tu dong hien danh sách và con tro chi den nhóm MA_VT có ký tu dau là chu "M" sau dó mình ENTER thì MA_VT dó duoc lay vào ComboBox
Mình đang cần gấp mong các Huynh giúp dùm

khoa140809
08-11-2009, 11:05
Nhờ các chuyên gia FOXPRO giúp đỡ em chút:
Em có một file ảnh đuôi .jpg, các anh chị có cách nào chuyển thành đuôi .bmp không ? (dùng code của foxpro để chuyển)

thieucuong
08-11-2009, 12:50
Xin chào!
Em đang cần Code Foxpro làm trò chơi ô chữ cho lớp. mong được sự giúp đỡ. cảm ơn rất nhiều. nếu được xin gửi vào mail langtustc@gmail.com. cảm ơn.

darshana
08-11-2009, 13:57
Chào các bạn, mình có 1 vấn đề mong các bạn giúp đỡ.

Mình cần đọc 1 file text(.txt) để đưa dữ liệu vào bảng dbf. Mình đã làm đc rồi, nhưng có cái dở là mỗi lần chạy thì phải chọn file text để import vào. Bây giờ mình muốn gán mắc định 1 file text đã biết trước thì có cách nào ko ? Ví dụ như tên file text là : abc.txt

Đây là đoạn code đọc file text qua dbf mình viết , các bạn xem rồi giúp mình nhé. Cám ơn mọi người.

create table docdl(coder c(18))
lctenfile=getfile("txt")
append from (lctenfile) delimited with _
clos all

Bạn chỉ cần gán lctenfile bằng đường dẫn thôi mà.
Ví dụ:
create table docdl(coder c(18))
lctenfile="C:\abc.txt"
append from (lctenfile) delimited with _
clos all
Hoặc nếu để file text trong cùng thư mục ứng dụng thì tìm cách lấy được đường dẫn đó là ok thôi.

tayngangvfp
09-11-2009, 10:19
Chào các Bác, Mong các Bác giúp dùm
-Trong Visual Fox làm sao để ComboBox tự dộng hiện danh sách khi con trỏ chỉ đến.
-Mình gõ 1 ký tu dau "VD : chu M" thì ComboBox tu dong hien danh sách và con tro chi den nhóm MA_VT có ký tu dau là chu "M" sau dó mình ENTER thì MA_VT dó duoc lay vào ComboBox
Mình đang cần gấp mong các Huynh giúp dùm

Bạn tham khảo:
http://vn.myblog.yahoo.com/tayngangvfp/article?mid=11



@khoa140809

Nhờ các chuyên gia FOXPRO giúp đỡ em chút:
Em có một file ảnh đuôi .jpg, các anh chị có cách nào chuyển thành đuôi .bmp không ? (dùng code của foxpro để chuyển)

http://www.mediafire.com/file/dikngnyn4m3/jpg2bmp.rar

tuan_tvkg
10-11-2009, 00:00
Copy File (...\abc.jpg) To (...\abc.bmp)

fanvsf
11-11-2009, 09:29
Chào bạn tayngangvsf
Bạn có thể gửi cho mình xin bộ chuyển đổi font sang Unicode được không? Địa chỉ của mình là :kieunt2004@yhaoo.com. Rất cảm ơn bạn
Mình có chút thắc mắc muốn hỏi các Pro : Khi truy xuất dữ liệu của MS SQL không hiểu sao rất chậm lúc đầu tiên load dữ liệu, mặc dù mới chỉ khoảng 1000 bản ghi thôi (mình chỉ load những field cần sử dụng thôi). Ai biết xin chỉ giùm. Xin cảm ơn

mhd_pc
11-11-2009, 15:04
Mình đang thử viết VFP xử lý file Excel, mình tạo RecordMacro trong Excel được như sau:

Sub Macro1()
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
Range("K:K,L:L,M:M,N:N,O:O").Select
Range("O1").Activate
Selection.NumberFormat = "#,##0.000"
ActiveWindow.LargeScroll ToRight:=-1
Range("A1").Select
End Sub

Mình chuyển vào code VFP như sau:

oExcel=CREATEOBJECT("Excel.Application")
oExcel.Workbooks.Open("C:\Test")
oExcel.ActiveWindow.ScrollColumn = 2
oExcel.ActiveWindow.ScrollColumn = 3
oExcel.Range("K:K,L:L,M:M,N:N,O:O").Select
oExcel.Range("O1").Activate
oExcel.Selection.NumberFormat = "#,##0.000"
oExcel.ActiveWindow.LargeScrollToRight=-1
oExcel.Range("A1").Select
oExcel.Cells.EntireColumn.AutoFit
oExcel.Visible = .T.
oExcel = null

Nó bị lỗi ở dòng lệnh: oExcel.ActiveWindow.LargeScrollToRight=-1, mình không biết trong VFP dòng lệnh này nó thay bằng dòng lệnh nào?
Có bạn nào biết chỉ mình với.

tayngangvfp
12-11-2009, 07:29
Mình đang thử viết VFP xử lý file Excel, mình tạo RecordMacro trong Excel được như sau:
......
Nó bị lỗi ở dòng lệnh: oExcel.ActiveWindow.LargeScrollToRight=-1, mình không biết trong VFP dòng lệnh này nó thay bằng dòng lệnh nào?
Có bạn nào biết chỉ mình với.

Bạn có thể dùng theo kiểu: LargeScroll(Down, Up, ToRight, ToLeft)
Như vậy có thể sửa thành:

oExcel.ActiveWindow.LargeScroll(,,-1,)

mhd_pc
12-11-2009, 08:25
Bạn có thể dùng theo kiểu: LargeScroll(Down, Up, ToRight, ToLeft)
Như vậy có thể sửa thành:

oExcel.ActiveWindow.LargeScroll(,,-1,)

Cám ơn bạn rất nhiều.

Nhân tiện cho mình hỏi: làm cách nào để biết được những mã lệnh này chuyển thành sử dụng đúng trong fox.
vd:
- Trong macro: xlCenter, xlLeft, xlRight
- Trong Fox sẽ là: 3, 2, 4

và còn nhiều như: xl3DColumn, xlRows, ...

sweetboy2805
12-11-2009, 16:00
Bạn chỉ cần gán lctenfile bằng đường dẫn thôi mà.
Ví dụ:
create table docdl(coder c(18))
lctenfile="C:\abc.txt"
append from (lctenfile) delimited with _
clos all
Hoặc nếu để file text trong cùng thư mục ứng dụng thì tìm cách lấy được đường dẫn đó là ok thôi.

Mình làm đc rồi, đơn giản thế ma` ko nghĩ ra. Cám ơn bạn nhiều.

tayngangvfp
12-11-2009, 17:26
Cám ơn bạn rất nhiều.

Nhân tiện cho mình hỏi: làm cách nào để biết được những mã lệnh này chuyển thành sử dụng đúng trong fox.
vd:
- Trong macro: xlCenter, xlLeft, xlRight
- Trong Fox sẽ là: 3, 2, 4

và còn nhiều như: xl3DColumn, xlRows, ...

1. Xem trong excel: Trong cửa sổ viết code (Microsoft Visual Basic..) của EXCEL, chọn menu View\Object browser (hoặc bấm F2) rồi nhập tên hằng cần tra cứu

2. Hoặc xem hay tạo 1 file ExcelConst.h từ đây:
http://fox.wikis.com/wc.dll?Wiki~ExcelConstants~VFP

mhd_pc
13-11-2009, 09:26
1. Xem trong excel: Trong cửa sổ viết code (Microsoft Visual Basic..) của EXCEL, chọn menu View\Object browser (hoặc bấm F2) rồi nhập tên hằng cần tra cứu

2. Hoặc xem hay tạo 1 file ExcelConst.h từ đây:
http://fox.wikis.com/wc.dll?Wiki~ExcelConstants~VFP

Thật là tuyệt, mình không viết macro nên không biết mấy cái này. Bây giờ tìm hiểu từ từ.

Cám ơn bạn rất nhiều.

lequang1965
13-11-2009, 13:20
Gửi Bạn TayngangVFP : Cho mình xin Class hoặc Code để chuyển Fonts từ VNI/ABC sang Unicode và ngược lại trong table ,mình rất cần.Xin cám ơn Bạn nhiều.Email của mình thieunc@yahoo.com.vn

ducminh1980
13-11-2009, 21:27
Co ai refox dum minh file datbase nay duoc ket noi voi sql ko?
link : http://www.2shared.com/fadmin/9126414/11f0190/DATA.zip.html

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

Co ai o HCM ranh ve foxpro 7 chi minh reox cai datbase voi
Hoc foxpro o dau vay cac ban

chip44
14-11-2009, 00:04
Bạn có thể chỉ cho mình cách nào để download 1 file trên mạng về 1 thư mục cụ thể trên máy tính bằng lệnh fox được không?
Đang cần phần này quá mà tìm mãi hổng ra.

lqtseas
14-11-2009, 00:15
cho xin tai lieu hoc VB nha cac ban............

camera quan sát (http://vantrung.com/cameraquansat.html) lđầu ghi hình camera (http://vantrung.com/daughihinhcamera.html) hệ thống báo cháy (http://vantrung.com/hethongbaochay.html) hệ thống báo trộm (http://vantrung.com/hethongbaotrom.html)

heihai
14-11-2009, 03:19
xin chào cả nhà
em đang học vfp và có một vấn đề mong dc mọi người giúp đỡ
Khi làm report nhập xuất vật tư em muốn có 2 biến x,y thể hiện từ ngày đến ngày nhưng khi viết code lại ko dc.do chưa hiểu lắm nên em ko biết mính sai ở chỗ nào cả.Mong dc mọi người giúp đỡ.Nếu ai có code chạy dc rồi thì cho em xin để tham khao nhé.thanks

ducminh1980
14-11-2009, 09:22
Co ai refox dum minh file datbase nay duoc ket noi voi sql ko?
link : http://www.2shared.com/fadmin/9126414/11f0190/DATA.zip.html

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

Co ai o HCM ranh ve foxpro 7 chi minh reox cai datbase voi
Hoc foxpro o dau vay cac ban
Refox DBC

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

Co ai refox dum minh file datbase nay duoc ket noi voi sql ko?
link : http://www.2shared.com/fadmin/912641.../DATA.zip.html

Co ai o HCM ranh ve foxpro 7 chi minh reox cai datbase voi
Hoc foxpro o dau vay cac ban

chinh9nt
15-11-2009, 07:42
Anh tayngangvfp kính mến,
Em mới thử voọc VFP, nhưng không biết cách chuyển từ DBF font TCVN3 sang Excel font Unicode.
Qua đọc các bài viết trong forum, thấy anh có công cụ này, vậy mong anh cho em xin và hướng dẫn em cách cài đặt với nhé.

Xin anh gửi về địa chỉ: laotan2002@yahoo.com
Trân trọng cám ơn anh!

Bạn cứ xuất ra excel dung TCVN3. sau đo dùng Unikey nào co phần công cụ chuyển mã (v/d: unikey 4.0 beta)
copy van ban vào clipboard ->chuột phải Unikey->công cu->mã file gốc->mã file đích->chuỷen mã từ clipboard->hoàn thành->past lại vào van ban.
chúc ban thành công

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

Không dám tự hào, chứ tin tưởng mình viết tốt visualfox; viết từ hồi foxdos, foxwin, giờ là visual fox
Dã làm nhiều phần mềm phục vu cho cong việc như:
*Bán hàng quét bằng mã vạch
*Kế toán nhập xuất
*Quản lý nhân sự
*phần mềm trắc nghiệm
+Toán , lý , hóa, sinh
+thi bằng lái xe moto, oto
+tìm hieu về Hồ chủ tịch
Ban nào quan tâm và chia sẽ thủ thuật, thuật giải, kĩ xảo thi kết ban
Xin chào cộng đồng foxpro

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


Em đã vào và chỉnh lại định dạng rồi nhưng chỉ được phiếu xuất thôi, phiếu nhập lại không được. Vì nhiều lần nhập bao nhiêu là xuất luôn bấy nhiêu, phiếu xuất và phiếu nhập thực tế được thiết kế là hoàn toàn gần như nhau. Cùng định dạng mà sao lại hiển thị không giống nhau nhỉ?

Nếu đã định dạng rồi mà vân chua được thì bạn kéo dai độ rộng của texbox đo dai ra them. OK.

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


Chào các bạn, mình có 1 vấn đề mong các bạn giúp đỡ.

Mình cần đọc 1 file text(.txt) để đưa dữ liệu vào bảng dbf. Mình đã làm đc rồi, nhưng có cái dở là mỗi lần chạy thì phải chọn file text để import vào. Bây giờ mình muốn gán mắc định 1 file text đã biết trước thì có cách nào ko ? Ví dụ như tên file text là : abc.txt

Đây là đoạn code đọc file text qua dbf mình viết , các bạn xem rồi giúp mình nhé. Cám ơn mọi người.

create table docdl(coder c(18))
lctenfile=getfile("txt")
append from (lctenfile) delimited with _
clos all

text file đo phải dặt vào thu muc theo set defa to. neu o thu muc khác ban phai ghi ro path theo ten file. OK.

luutieuthu
15-11-2009, 12:43
Các anh chị cho em hỏi là làm sao để khi lưu xong thì các text box,... trở về giá trị null được ạ?

chinh9nt
15-11-2009, 22:12
Muốn học foxpro tốt phải kiếm sách của Ông Văn Thông, viết kỹ lắm

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


Các anh chị cho em hỏi là làm sao để khi lưu xong thì các text box,... trở về giá trị null được ạ?

luu xong thi:
thisform.textbox.value=" "
thisform.refresh

luutieuthu
17-11-2009, 14:14
Cho em hỏi vấn đề này nữa, em muốn đưa giá trị của combo kiểu date vào trong bảng thì phải viết code như thế nào ạ? Em đã thử viết code:
Replace a.ngay with thisform.ngay.value
nhưng bị báo lỗi type mismatch
(cả ngay trong bảng a và ngay trong combo đều có kiểu date)

tayngangvfp
17-11-2009, 15:26
Cho em hỏi vấn đề này nữa, em muốn đưa giá trị của combo kiểu date vào trong bảng thì phải viết code như thế nào ạ? Em đã thử viết code:
Replace a.ngay with thisform.ngay.value
nhưng bị báo lỗi type mismatch
(cả ngay trong bảng a và ngay trong combo đều có kiểu date)

Combobox chỉ cho phép giá trị là kiểu chuỗi. Vì vậy câu lệnh trên sẽ lỗi.
Có thể thay bằng lệnh
Replace a.ngay with table_làm_recordsource_cho_combobox.Field_Ngày
nếu bạn đã dùng 1 table làm recordsource cho combobox

darshana
17-11-2009, 15:37
Cho em hỏi vấn đề này nữa, em muốn đưa giá trị của combo kiểu date vào trong bảng thì phải viết code như thế nào ạ? Em đã thử viết code:
Replace a.ngay with thisform.ngay.value
nhưng bị báo lỗi type mismatch
(cả ngay trong bảng a và ngay trong combo đều có kiểu date)

Là do thisform.ngay.value không phải kiểu date thôi. Để chuyển kiểu bạn dùng lệnh như sau: Replace a.ngay with CToD(thisform.ngay.value).
Mà chắc bạn mới học Fox à, bạn nên tìm hiểu về bug lỗi chương trình như vậy sẽ bạn sẽ không còn phải hỏi những lỗi như này nữa. Chúc bạn học tốt.

hoangpnt349
18-11-2009, 08:09
Bạn có thể chỉ cho mình cách nào để download 1 file trên mạng về 1 thư mục cụ thể trên máy tính bằng lệnh fox được không?
Đang cần phần này quá mà tìm mãi hổng ra.

Bạn dùng hàm sau đây để download file từ fpt, lưu ý: Bạn cần cài component ChilkatFtp "Free" để chạy được hàm này):
FUNCTION FtpDownload (pHostname, pUsername, pPassword, pRemoteFilename, pLocalFilename)
LOCAL ftpDownload, loFtp
ftpDownload = 0
loFtp = CREATEOBJECT("ChilkatFtp.ChilkatFtp")
loFtp.Hostname = pHostname
loFtp.Username = pUsername
loFtp.Password = pPassword

* Connect and login to the FTP server.
ftpDownload = loFtp.Connect()
IF ftpDownload<>1 THEN
RETURN ftpDownload
ENDIF

* Change to the remote directory where the file is located.
* This step is only necessary if the file is not in the root directory
* for the FTP account.
*!* ftpDownload = loFtp.ChangeRemoteDir("hoangpnt/accbank")
*!* IF ftpDownload <> 1 THEN
*!* RETURN ftpDownload
*!* ENDIF

* Download a file.
ftpDownload = loFtp.GetFile(pRemoteFilename, pLocalFilename)
IF ftpDownload <> 1 THEN
RETURN ftpDownload
ENDIF
loFtp.Disconnect()
RETURN ftpDownload

tungvv
18-11-2009, 16:24
Bạn dùng hàm sau đây để download file từ fpt, lưu ý: Bạn cần cài component ChilkatFtp "Free" để chạy được hàm này)

Bạn nói cụ thể về ChilkatFtp "Free" 1 chút đựoc ko, tìm trên mạng thấy có nhiều loại ChilkatFtp "Free" lắm, ko biết download cái nào. Tên đầy đủ của PM này là gì vậy ?

thuy219
19-11-2009, 00:07
các bác ơi ,em cần làm visual thiết kê 1 phần mềm kế toán quản lya công nợ phải trả.ai có tài liệu hay bit cách làm giúp em vơi.mail em:snow_winter21988@yahoo.com.vn.thanhkiu các bác nhìu

hoangpnt349
19-11-2009, 08:51
Bạn nói cụ thể về ChilkatFtp "Free" 1 chút đựoc ko, tìm trên mạng thấy có nhiều loại ChilkatFtp "Free" lắm, ko biết download cái nào. Tên đầy đủ của PM này là gì vậy ?

Gởi bạn link download ChilkatFtp "Free":
http://www.chilkatsoft.com/download/FtpActiveX.msi

vx_hoang
20-11-2009, 10:40
Tôi đang dùng bản Fox7, khi chuyển sang Fox9 các form nhập liệu 1 số font chữ hiển thị trên Header trong Grid bị mất font. Ví dụ chữ "Chi Tiết" thì chữ "ết" bị mất font. Tôi đang dùng font vn-sans-serif kiểu gõ ABC. Tôi thử sang kiểu gõ VNI và dùng Font VNI thì cũng chữ đó nhưng hiển thị lại ok. Nhờ các cao thủ hướng dẫn dùm cách xử lý. Thanks

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


Bạn dùng hàm sau đây để download file từ fpt, lưu ý: Bạn cần cài component ChilkatFtp "Free" để chạy được hàm này):
FUNCTION FtpDownload (pHostname, pUsername, pPassword, pRemoteFilename, pLocalFilename)
LOCAL ftpDownload, loFtp
ftpDownload = 0
loFtp = CREATEOBJECT("ChilkatFtp.ChilkatFtp")
loFtp.Hostname = pHostname
loFtp.Username = pUsername
loFtp.Password = pPassword

* Connect and login to the FTP server.
ftpDownload = loFtp.Connect()
IF ftpDownload<>1 THEN
RETURN ftpDownload
ENDIF

* Change to the remote directory where the file is located.
* This step is only necessary if the file is not in the root directory
* for the FTP account.
*!* ftpDownload = loFtp.ChangeRemoteDir("hoangpnt/accbank")
*!* IF ftpDownload <> 1 THEN
*!* RETURN ftpDownload
*!* ENDIF

* Download a file.
ftpDownload = loFtp.GetFile(pRemoteFilename, pLocalFilename)
IF ftpDownload <> 1 THEN
RETURN ftpDownload
ENDIF
loFtp.Disconnect()
RETURN ftpDownload


Tôi thử chạy nhưng không được, bạn có thể hướng dẫn cụ thể hơn đc k?

darshana
20-11-2009, 14:05
Đang cần gấp cái này có ai biết không nhỉ. Mình muốn xóa một thư mục mà trong đó có chứa các thư mục con và nhiều tệp khác nhau nữa. Mình đã thử dùng lệnh dos rd mà cũng không được, lệnh rd của fox thì không cho xóa nếu thư mục không rỗng, có cách nào khác ngoài cách viết prg để xóa từng tệp không nhỉ. Bạn tayngangvfp có biết không?

heihai
21-11-2009, 07:20
tay ngang ơi !!!giúp em với
em mới hoc vfp nên còn yếu lắm
cho em hỏi.Khi em thiết kế repor để chạy report tren form thì nó ko báo lỗi mà hiên ra các bảng trong datbase để bắt em chọn.Nhưng khi em chọn rồi nó ko chạy ra báo cáo mà lại quay lại datbase để lựa chọn lại
vậy là lỗi gì hả anh??và cách khắc phục thế nào ạ?
Mong anh giải đáp giúp em sớm nhe .thanks anh

tayngangvfp
21-11-2009, 11:47
Đang cần gấp cái này có ai biết không nhỉ. Mình muốn xóa một thư mục mà trong đó có chứa các thư mục con và nhiều tệp khác nhau nữa. Mình đã thử dùng lệnh dos rd mà cũng không được, lệnh rd của fox thì không cho xóa nếu thư mục không rỗng, có cách nào khác ngoài cách viết prg để xóa từng tệp không nhỉ. Bạn tayngangvfp có biết không?

Có thể dùng Scrip

oFileSystem = CREATEOBJECT("Scripting.FileSystemObject")
?oFileSystem.DeleteFolder("d:\Ten_Folder",.T.)

The Old Man
21-11-2009, 15:11
Trong Foxpro nói chung muốn tìm nhanh thì người ta dùng index dể seek theo thứ tự lớn nhỏ hay ABC ngược suôi (descending/ascending). Chuyện này ai dùng Foxpro củng biết.

Nhưng nay có tôi có một thắc mắc là nếu muốn Seek và list nhanh chữ cuối của một field. Ví dụ cho là chử trong tự diển tôi muốn tìm và list thứ tự tất cả các từ mà tận cùng là ion (như là nation, ration, infection, portion, provision, supervision v.v (chữ dài ngắn khác nhau).

Thì cách nào lẹ nhất? Đương nhiên là không thể dùng LOCATE FOR vì nó rất chậm và phải đi hết tất cả records của database.

nguyenvuhoang
22-11-2009, 06:25
Bác Tom, cháu học foxpro từ năm 1998 và sau đó thì bỏ mà theo nghề IT- network nên kiến thức củng không còn nhiều. ý tưởng của cháu là dùng index kết hợp với các ffuntion trích chuỗi như left, right subtrim... được không bác ?
giả sử: index on right(manv,3) tag manv
cái này là cháu muốn hỏi bác vì hơn chục năm rồi cháu không đụng tới con cáo nữa

tranthanhha102
22-11-2009, 06:45
Xin hỏi khi tôi là nó báo lỗi (Invalid Data Source) là sao:
Xin cảm ơn mọi người

darshana
22-11-2009, 08:53
Có thể dùng Scrip

oFileSystem = CREATEOBJECT("Scripting.FileSystemObject")
?oFileSystem.DeleteFolder("d:\Ten_Folder",.T.)

Hay quá cảm ơn bạn nhé.

The Old Man
22-11-2009, 12:38
Bác Tom, cháu học foxpro từ năm 1998 và sau đó thì bỏ mà theo nghề IT- network nên kiến thức củng không còn nhiều. ý tưởng của cháu là dùng index kết hợp với các ffuntion trích chuỗi như left, right subtrim... được không bác ?
giả sử: index on right(manv,3) tag manv
cái này là cháu muốn hỏi bác vì hơn chục năm rồi cháu không đụng tới con cáo nữa

Index on right(alltrim(manv),3)
Cách đó chỉ tìm được 3 chữ như ion nếu tìm tận cùng bằng 4 chữ như tion thì không được. Rồi tìm tận cùng bằng 5 chữ v.v. thì lại phải index lại sao?
Cách của bạn chỉ giải quyết cho 3 chữ nhưng không được với 4,5,6 chữ v.v

hoangpnt349
24-11-2009, 10:00
Tôi thử chạy nhưng không được, bạn có thể hướng dẫn cụ thể hơn đc k?

Gởi bạn file demo về hàm FtpDownload:
http://techratio.net/hoangpnt/library/ftpdownload.zip

dungnt.pro
25-11-2009, 11:25
Hiện tại mình đang làm chương trình quản lý kế toán bằng Foxpro 8.0. Mình có gặp phải 2 vấn đề sau mong các bạn giúp mình giải quyết:
1. Khi mất điện đột ngột hay mất kết nối đột ngột (Máy bị shutdown, mất điện, người dùng tắt nóng máy tính...). Các table trong database bị lỗi.
2. Mình muốn tại một máy tính: Khi "đang" chạy chương trình rồi thì khi người dùng chạy tiếp (Click tiếp vào biểu tượng ICON của phần mềm) thì sẽ đưa ra cảnh báo "Chương trình đang chạy. Hãy kiểm tra lại", sau đó thoát ngay tiến trình mới đang chạy, giữ nguyên chương trình cũ.

Cảm ơn các bạn trước nhé.

tayngangvfp
25-11-2009, 16:01
Hiện tại mình đang làm chương trình quản lý kế toán bằng Foxpro 8.0. Mình có gặp phải 2 vấn đề sau mong các bạn giúp mình giải quyết:
1. Khi mất điện đột ngột hay mất kết nối đột ngột (Máy bị shutdown, mất điện, người dùng tắt nóng máy tính...). Các table trong database bị lỗi.
2. Mình muốn tại một máy tính: Khi "đang" chạy chương trình rồi thì khi người dùng chạy tiếp (Click tiếp vào biểu tượng ICON của phần mềm) thì sẽ đưa ra cảnh báo "Chương trình đang chạy. Hãy kiểm tra lại", sau đó thoát ngay tiến trình mới đang chạy, giữ nguyên chương trình cũ.

Cảm ơn các bạn trước nhé.

1.Chỉ có cách: luôn sao lưu dữ liệu khi bắt đầu chạy (hay khi kết thúc) c/t. Nếu có sự cố như vậy xảy ra thì dùng bản sao lưu này cập nhật lại.


2.Có rất nhiều cách bạn tham khảo ở đây:
http://fox.wikis.com/wc.dll?Wiki~ControllingTheNumberOfApplicationInsta nces

http://www.berezniker.com/content/pages/visual-foxpro/check-if-exe-running-and-optionally-terminate-it

http://www.winnersoft.coolfreepages.com/vfp/desktop1.htm

dungnt.pro
26-11-2009, 11:36
Em có xem chương trình bảo mật dữ liệu share.
EM hỏi chút: Tên đăng nhập, PassWord là tên, pass đăng nhập vào phần mềm hay vào máy server(Chắc là vào máy server)? Làm thế nào để lấy được PassWord hay là dựa vào tên đăng nhập. Mà hàm sys(0) lấy được tên máy và user hiện tại đang chạy chương trình. Làm sao để lấy được tên đăng nhập vào server và pass nữa chứ?

tayngangvfp
26-11-2009, 12:55
Em có xem chương trình bảo mật dữ liệu share.
EM hỏi chút: Tên đăng nhập, PassWord là tên, pass đăng nhập vào phần mềm hay vào máy server(Chắc là vào máy server)? Làm thế nào để lấy được PassWord hay là dựa vào tên đăng nhập. Mà hàm sys(0) lấy được tên máy và user hiện tại đang chạy chương trình. Làm sao để lấy được tên đăng nhập vào server và pass nữa chứ?

Tên đăng nhập, pass: là tên 1 người trên máy làm server. Tên này do mình đặt => chắc chắn biết tên và pass. Bạn xem kỹ lại phần đó nhé.

dungnt.pro
26-11-2009, 13:26
Tên đăng nhập, pass: là tên 1 người trên máy làm server. Tên này do mình đặt => chắc chắn biết tên và pass. Bạn xem kỹ lại phần đó nhé.

Vâng cái đó em hiểu. Vì anh đã tạo bảng Path.dbf để lưu trữ các user có quyền truy cập dữ liệu share rồi. Nhưng mà ý em là: Em ngồi trên máy có tên DUNGNT, máy chủ có tên là SERVER. Tên cho phép em truy nhập vào dữ liệu share là TIENDUNG, pass= 123456 chẳng hạn. Thì khi đó có phải em mapnetwork để có thể dùng chung phần mềm (dữ liệu share) đồng thời từ máy DUNGNT em phải vào Start\Run gõ \\SERVER và đánh tên đăng nhập TIENDUNG + PASS thì mới dùng được phần mềm. Vậy em làm thế nào để lấy được đích xác Tên đang nhập vào server là TIENDUNG và PASS=12345 vì tại máy DUNGNT có thể đăng nhập được vào server bằng 1 tên khác.

Hay chương tình tên là cách không cần vào Start\Run mà chạy từ chương triìn FOX sau đó có cửa sổ nhập Servername, Username, Pass hả anh? Anh giải thích rõ giúp em với. Vì em thấy cái này rất hay nhưng mà em chưa hiểu hết thì phải. Cảm ơn anh nhiều.

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

Mình đang dùng đoạn code này để kiểm tra xem file VFP8.exe có đang chạy hay không? Nếu đang chạy thì không cho chạy thêm một lần nữa.

Khi gọi chương trình này thì có hiện tượng xảy ra là báo Attemping to lock ... Esc to Cancel. Nhấn cancel báo File is User by ather user..

Code:

* Mail prog
DO Check_FileRunning("vfp8.exe")
*End main


PROCEDURE Check_FileRunning
*Then just copy the following code and add it at the end of your main.prg.
******************************************
PARAMETERS myApp

=ddesetoption("SAFETY",.F.)
ichannel = DDEINITIATE(myapp,"ZOOM")
IF ichannel =>0
=DDETERMINATE(ichannel)
MESSAGEBOX("Chuong trinh dang chay tren may cua ban roi. Khong duoc chay 2 chuong trinh cung luc."+CHR(13)+"Chuong trinh nay se thoat ra.",0+16,[Thong bao])
QUIT
ENDIF
=DDESETSERVICE(myapp,"define")
=DDESETSERVICE(myapp,"execute")
=DDESETTOPIC(myapp,"","ddezoom")
RETURN
******************************************
PROCEDURE ddezoom
PARAMETER ichannel,saction,sitem,sdata,sformat,istatus
ZOOM WINDOW SCREEN MAX
RETURN
************************************************** ********
** EOF
************************************************** ********

Thanks.

tungvv
26-11-2009, 16:32
Gởi bạn file demo về hàm FtpDownload:
http://techratio.net/hoangpnt/library/ftpdownload.zip

Tôi đã xem ví dụ của bạn, nhưng làm mãi mà vẫn nhận được kết quả thất bại, trong lúc truy cập trực tiếp bằng các PM ftp đang tốt. Bạn cho hỏi cụ thể mấy biến sau đây nhé :
wHostname = ghi đủ cả "ftp://www.izs.gov.vn" hay chỉ ghi "www.izs.gov.vn"
( Tôi sử dụng user và password riêng, đang hoạt động tôt, giả sử hots của tôi là ftp://www.izs.gov.vn)

wRemoteDir= ghi đủ cả "ftp://www.izs.gov.vn/data" hay chỉ ghi "data/"
( giả sử địa chỉ thư mục chứa file cần download là www.izs.gov.vn/data)
Đã thử nhiều cách nhưng ko sao download được.
Bạn giúp tối với nhé.

sweetboy2805
27-11-2009, 10:14
Chào anh em. Mình lại có 1 vấn đề cần anh em giúp đỡ. Mình vừa viết xong cái chương trình quản lý thiết bị máy tính cho các phòng ban. Khi chạy nó ra giao diện như thế này.

http://i188.photobucket.com/albums/z74/sweetboy2805/background.jpg

Nó hiện ra tới 2 thanh taskbar ở bên trên trông rất chuối. Có cách nào chỉ để hiện một thanh taskbar được ko ? Mình mò mãi mà ko ra :(

aaa_vfp
27-11-2009, 11:11
1.Chỉ có cách: luôn sao lưu dữ liệu khi bắt đầu chạy (hay khi kết thúc) c/t. Nếu có sự cố như vậy xảy ra thì dùng bản sao lưu này cập nhật lại.


2.Có rất nhiều cách bạn tham khảo ở đây:
http://fox.wikis.com/wc.dll?Wiki~ControllingTheNumberOfApplicationInsta nces

http://www.berezniker.com/content/pages/visual-foxpro/check-if-exe-running-and-optionally-terminate-it

http://www.winnersoft.coolfreepages.com/vfp/desktop1.htm

1. Mình nghĩ phải có cách nào đó chứ như thế thì không ổn rồi. Giả sử như bắt đầu buổi sáng làm việc mình sao lưu dữ liệu rồi tiếp tục nhập liệu đến gần trưa và chưa kịp sao lưu thì bị sự cố mất điện đột ngột thì hóa ra công từ sáng đến gần trưa la vô ích rồi.

tayngangvfp
27-11-2009, 11:25
1. Mình nghĩ phải có cách nào đó chứ như thế thì không ổn rồi. Giả sử như bắt đầu buổi sáng làm việc mình sao lưu dữ liệu rồi tiếp tục nhập liệu đến gần trưa và chưa kịp sao lưu thì bị sự cố mất điện đột ngột thì hóa ra công từ sáng đến gần trưa la vô ích rồi.

Đó là 1 trong những nhược điểm của Fox. Nên kết hợp VFP+SQL thì hay nhất

The Old Man
27-11-2009, 11:38
Coi trong Foxpro có funct Tableupdate(.t.) commits data vào table.

trichpha
27-11-2009, 16:56
1. Mình nghĩ phải có cách nào đó chứ như thế thì không ổn rồi. Giả sử như bắt đầu buổi sáng làm việc mình sao lưu dữ liệu rồi tiếp tục nhập liệu đến gần trưa và chưa kịp sao lưu thì bị sự cố mất điện đột ngột thì hóa ra công từ sáng đến gần trưa la vô ích rồi.

Bạn có thể sử dụng lệnh Flush bố trí ở sự kiện sau khi nhập xong giá trị cho một đối tượng nào đó.Tôi thường để ở Lost forcus và trước đó có giám sát việc thay đổi giá trị ở InteractiveChange

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


Đó là 1 trong những nhược điểm của Fox. Nên kết hợp VFP+SQL thì hay nhất

Tôi thấy tayngangvfp là người khá nhiệt tình trong chuyên mục này. Đáng khâm phục.

Tôi đang chuyển CSDL VFP sang SQL server và gặp vấn đề về mã tiếng Việt ở VFP và SQL server. Mặc dù, đã thấy một số member xin tayngangvfp code convert giữa TCVN và Unicode, nhưng tôi xin hỏi ngoài cách đó,liệu có cách nào khác nhanh hơn không?

kazumareika
28-11-2009, 09:26
Mình có một form thế này
http://i630.photobucket.com/albums/uu24/Greend_Cat/Untitled-1-1.jpg
Tất cả các nút lệnh đều được rồi chỉ duy có nút "Hủy" là bó tay. (Giả sử mình ấn nút xóa, nó sẽ bôi đen một dòng, sau đó ấn nút "Ghi" nó sẽ xóa dòng đấy đi) = Mình dịnh để nút "Hủy" sẽ remove cái bôi đen nhưng kẹt cứng ở câu lệnh....Help

darshana
28-11-2009, 10:52
Mình có một form thế này
http://i630.photobucket.com/albums/uu24/Greend_Cat/Untitled-1-1.jpg
Tất cả các nút lệnh đều được rồi chỉ duy có nút "Hủy" là bó tay. (Giả sử mình ấn nút xóa, nó sẽ bôi đen một dòng, sau đó ấn nút "Ghi" nó sẽ xóa dòng đấy đi) = Mình dịnh để nút "Hủy" sẽ remove cái bôi đen nhưng kẹt cứng ở câu lệnh....Help

Bạn dùng lệnh recal ở record đấy nhé.

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


Chào anh em. Mình lại có 1 vấn đề cần anh em giúp đỡ. Mình vừa viết xong cái chương trình quản lý thiết bị máy tính cho các phòng ban. Khi chạy nó ra giao diện như thế này.

http://i188.photobucket.com/albums/z74/sweetboy2805/background.jpg

Nó hiện ra tới 2 thanh taskbar ở bên trên trông rất chuối. Có cách nào chỉ để hiện một thanh taskbar được ko ? Mình mò mãi mà ko ra :(

Bạn đặt các thuộc tính cho form main như sau: Caption=none, Controbox=.F., Maxbotton=.F., Minbotton =.F. như thế sẽ không còn 2 thanh taskbar nữa.
Ngoài ra bạn nên đóng các thanh toolbar hệ thống đi tham khảo đoạn code sau nhé:


*-- Luu trang thai cua all Visual FoxPro toolbars vao this.aToolBars[12,2]
*-- Releases all Visual FoxPro toolbars
LOCAL i

SET SYSMENU OFF

DIMENSION this.aToolBars[12,2]
this.aToolBars[1,1] = "Form Designer"
this.aToolBars[2,1] = "Standard"
this.aToolBars[3,1] = "Layout"
this.aToolBars[4,1] = "Query Designer"
this.aToolBars[5,1] ="View Designer"
this.aToolBars[6,1] = "Color Palette"
this.aToolBars[7,1] = "Form Controls"
this.aToolBars[8,1] = "Database Designer"
this.aToolBars[9,1] = "Report Designer"
this.aToolBars[10,1] = "Report Controls"
this.aToolBars[11,1] ="Print Preview"
this.aToolBars[12,1] = "Command"

FOR i = 1 TO ALEN(this.aToolBars, 1)
this.aToolBars[i,2] = WVISIBLE(this.aToolBars[i,1])
IF this.aToolBars[i,2]
HIDE WINDOW (this.aToolBars[i,1])
ENDIF
ENDFOR

vx_hoang
28-11-2009, 12:51
Mình đang dùng đoạn code này để kiểm tra xem file VFP8.exe có đang chạy hay không? Nếu đang chạy thì không cho chạy thêm một lần nữa.

Khi gọi chương trình này thì có hiện tượng xảy ra là báo Attemping to lock ... Esc to Cancel. Nhấn cancel báo File is User by ather user..

Code:

* Mail prog
DO Check_FileRunning("vfp8.exe")
*End main


PROCEDURE Check_FileRunning
*Then just copy the following code and add it at the end of your main.prg.
******************************************
PARAMETERS myApp

=ddesetoption("SAFETY",.F.)
ichannel = DDEINITIATE(myapp,"ZOOM")
IF ichannel =>0
=DDETERMINATE(ichannel)
MESSAGEBOX("Chuong trinh dang chay tren may cua ban roi. Khong duoc chay 2 chuong trinh cung luc."+CHR(13)+"Chuong trinh nay se thoat ra.",0+16,[Thong bao])
QUIT
ENDIF
=DDESETSERVICE(myapp,"define")
=DDESETSERVICE(myapp,"execute")
=DDESETTOPIC(myapp,"","ddezoom")
RETURN
******************************************
PROCEDURE ddezoom
PARAMETER ichannel,saction,sitem,sdata,sformat,istatus
ZOOM WINDOW SCREEN MAX
RETURN
************************************************** ********
** EOF
************************************************** ********

Thanks.
Được sửa bởi dungnt.pro lúc 14:00 ngày 26-11-2009. Reason: Bổ sung bài viết



Bác TAYNGANG xử lý giúp chương trình kiểm tra 1 file .exe đang chạy. Nếu đã chạy rồi, mà chạy tiếp lần thứ 2 thì tự đông thoát

kazumareika
28-11-2009, 13:15
Bạn dùng lệnh recal ở record đấy nhé.

Thank, mình làm được rồi
Trong fox liệu có cách nào nối kết 2 bản ghi và các dữ liệu của nhau ko
Giả sử mình có một bảng chủ và một bảng con. Có 2 trường giống hệt nhau, có cách nào khi mình sửa dữ liệu ở trường này thì trường kia tự động sửa theo ko
Cho mình hỏi thêm, tại bảng trên (Nút xóa)
mình đánh lệnh sau
SELECT hopdongbaoduong
IF !DELETED()
IF MESSAGEBOX("Ban co muon xoa ko ?",4)=6 then
DELETE
ENDIF
ENDIF
Lệnh này chỉ có thể làm trường muốn xóa được đánh dấu thôi, muốn xóa thì phải dùng lệnh Pack nhưng khi mình add vào thì nó báo file must open gì gì đó

darshana
28-11-2009, 20:52
Thank, mình làm được rồi
Trong fox liệu có cách nào nối kết 2 bản ghi và các dữ liệu của nhau ko
Giả sử mình có một bảng chủ và một bảng con. Có 2 trường giống hệt nhau, có cách nào khi mình sửa dữ liệu ở trường này thì trường kia tự động sửa theo ko
Cho mình hỏi thêm, tại bảng trên (Nút xóa)
mình đánh lệnh sau
SELECT hopdongbaoduong
IF !DELETED()
IF MESSAGEBOX("Ban co muon xoa ko ?",4)=6 then
DELETE
ENDIF
ENDIF
Lệnh này chỉ có thể làm trường muốn xóa được đánh dấu thôi, muốn xóa thì phải dùng lệnh Pack nhưng khi mình add vào thì nó báo file must open gì gì đó
Vấn đề thứ nhất thì ko rõ lắm, còn vấn đề thứ 2 thì bạn có thể đặt lệnh set exclusive on khi mới load chương trình hoặc sử dụng lênh use như sau: use tenbang Exclusive

kazumareika
28-11-2009, 22:56
Vấn đề thứ nhất thì ko rõ lắm, còn vấn đề thứ 2 thì bạn có thể đặt lệnh set exclusive on khi mới load chương trình hoặc sử dụng lênh use như sau: use tenbang Exclusive

Thank bạn, mình xóa được rồi nhưng ko hiểu sao khi xóa nó thông báo file access is denied (Đường dẫn file) rồi hiện bảng báo lỗi, có lúc nó ko thông báo nhưng bản Gird của mình trắng xóa ko hiện lên gì nữa, phải thoát ra mới hết

tayngangvfp
29-11-2009, 08:42
Bạn có thể sử dụng lệnh Flush bố trí ở sự kiện sau khi nhập xong giá trị cho một đối tượng nào đó.Tôi thường để ở Lost forcus và trước đó có giám sát việc thay đổi giá trị ở InteractiveChange

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



Tôi thấy tayngangvfp là người khá nhiệt tình trong chuyên mục này. Đáng khâm phục.

Tôi đang chuyển CSDL VFP sang SQL server và gặp vấn đề về mã tiếng Việt ở VFP và SQL server. Mặc dù, đã thấy một số member xin tayngangvfp code convert giữa TCVN và Unicode, nhưng tôi xin hỏi ngoài cách đó,liệu có cách nào khác nhanh hơn không?

Việc convert TCVN <=> và unicode thường dùng để khi xuất ra Word, Excel. Còn về mã tiếng Việt ở VFP và SQL server như bạn nói thì mình ko hiểu như thế nào?

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


Mình đang dùng đoạn code này để kiểm tra xem file VFP8.exe có đang chạy hay không? Nếu đang chạy thì không cho chạy thêm một lần nữa.

Khi gọi chương trình này thì có hiện tượng xảy ra là báo Attemping to lock ... Esc to Cancel.
....


M đã test đaọn code trên =VFP9 thì thấy OK. Nó làm đúng như yêu cầu là khi chạy lần thứ 2 sẽ báo và thoát ra. Vậy có thể lỗi ở chỗ khác chứ không phải do đoạn code đó. Tthông báo cho thấy c/t đang thử khoá file để ghi, hay update record, vậy bạn kiểm tra lại xem.

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


Thank bạn, mình xóa được rồi nhưng ko hiểu sao khi xóa nó thông báo file access is denied (Đường dẫn file) rồi hiện bảng báo lỗi, có lúc nó ko thông báo nhưng bản Gird của mình trắng xóa ko hiện lên gì nữa, phải thoát ra mới hết


KHi thực hiện lệnh Delete thì VFP chỉ "đánh dấu xoá" chứ không thực sự xoá record. Vì vậy muốn xóa thực sự thì phải dùng lệnh PACK. Tuy nhiên lệnh PACK chỉ thực hiện được khi Table mở ở chế độ EXCLUSIVE. Nếu c/t chỉ dùng trên 1 máy thì việc mở EXCLUSIVE không có vấn đề gì. Tuy nhiên nếu c/t được nhiều máy sử dụng đồng thời trên LAN thì sẽ gặp vấn đề xung đột khi mở EXCLUSIVE.

Một giải pháp có thể dùng là: không PACK ngay sau khi DELETE mà viết 1 đọan c/t nhỏ được thực hiện trước khi kết thúc c/t. Nó sẽ kiểm tra xem có mở được Table ở Exclusive ko, nếu mở được (tức là lúc này không có ai đang sử dụng TABLE đó) thì sẽ tiến hành PACK.

Việc GRID bị "trắng" là do dùng lệnh PACK mà ra.

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


Thank, mình làm được rồi
Trong fox liệu có cách nào nối kết 2 bản ghi và các dữ liệu của nhau ko
Giả sử mình có một bảng chủ và một bảng con. Có 2 trường giống hệt nhau, có cách nào khi mình sửa dữ liệu ở trường này thì trường kia tự động sửa theo ko


Trường hợp này có phải như sau không:
VD: Table cha là DanhMucKhach: trong đó có mã khách là PK
Table con là PhieuMuaHang: trong đó cũng có MaKhach (một khách có thể mua hàng nhiều lần)
Vấn đề bạn hỏi có phải là: Giả sử khi ta sửa 1 mã khách trong bảng DanhMucKhach thì tất cả những mã khách đó cũng sẽ được sửa theo trong bảng PhieuMuaHang? Nếu đúng vậy thì có thể dùng Triger INSERT,EDIT,DELETE để thực hiện

dungnt.pro
29-11-2009, 12:25
M đã test đaọn code trên =VFP9 thì thấy OK. Nó làm đúng như yêu cầu là khi chạy lần thứ 2 sẽ báo và thoát ra. Vậy có thể lỗi ở chỗ khác chứ không phải do đoạn code đó. Tthông báo cho thấy c/t đang thử khoá file để ghi, hay update record, vậy bạn kiểm tra lại xem.

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


Cái này em chạy trên vfp8 anh ạ.
Vì cái chương trình em nêu trên thực tế là nó thực hiện kiểm tra file vfp8.exe có đang chạy không nếu đang chạy thì nó tắt cái service đó đi và khởi tạo 1 service mới tương tự. --> Có thể môi trường làm việc đã bị thay đổi --> tự động ở chế độ Lock table. Đó là suy luận của em, chưa có cơ sở chuyên môn chuẩn xác.

Nếu được anh tayngangvfp có thể chỉ rõ chức năng của từng câu lệnh trong đoạn code đó giúp em được không. Như thế em sẽ hiểu hơn(Hiện tại có thể hiểu chưa đúng --> dùng không chuẩn).
Thanks.

kazumareika
29-11-2009, 12:48
Thank bạn tayngang
Hiện tại mình bị kẹt ở đoạn báo cáo. Mình có một form bao gồm một combobox và một nút
Mình built combo box bằng tất cả các trường của một bảng, trong nút mình đánh lệnh sau
_baocao=thisform.combo1.Value
REPORT FORM baocao TO preview
Mình đã đặt Public _baocao ở form rồi. Tên form cũng là baocao
Vậy mà khi ấn nút thì toàn báo lỗi File does not exit. Mục đích của form này là làm báo cáo

tayngangvfp
29-11-2009, 13:36
Thank bạn tayngang
Hiện tại mình bị kẹt ở đoạn báo cáo. Mình có một form bao gồm một combobox và một nút
Mình built combo box bằng tất cả các trường của một bảng, trong nút mình đánh lệnh sau
_baocao=thisform.combo1.Value
REPORT FORM baocao TO preview
Mình đã đặt Public _baocao ở form rồi. Tên form cũng là baocao
Vậy mà khi ấn nút thì toàn báo lỗi File does not exit. Mục đích của form này là làm báo cáo

"File does not exit" có thể là do không tìm thấy File baocao.frx trong đường dẫn hiện hành. Vậy bạn thử ghi đường dẫn đầy đủ xem có hết không

kazumareika
29-11-2009, 13:48
"File does not exit" có thể là do không tìm thấy File baocao.frx trong đường dẫn hiện hành. Vậy bạn thử ghi đường dẫn đầy đủ xem có hết không

Rất cảm ơn bạn, cuối cùng thì mình cũng giải quyết xong bài tập đồ án rồi
Bạn cho mình hỏi thêm là làm sao để chèn ảnh vào form vậy, nhìn form trắng toát trông hơi chán

tayngangvfp
29-11-2009, 14:07
Rất cảm ơn bạn, cuối cùng thì mình cũng giải quyết xong bài tập đồ án rồi
Bạn cho mình hỏi thêm là làm sao để chèn ảnh vào form vậy, nhìn form trắng toát trông hơi chán

1. Dùng Form.picture=[Ten file hinh]
2. Thêm 1 control Image lên form và gán Picture cho nó

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



Cái này em chạy trên vfp8 anh ạ.
Vì cái chương trình em nêu trên thực tế là nó thực hiện kiểm tra file vfp8.exe có đang chạy không nếu đang chạy thì nó tắt cái service đó đi và khởi tạo 1 service mới tương tự. --> Có thể môi trường làm việc đã bị thay đổi --> tự động ở chế độ Lock table. Đó là suy luận của em, chưa có cơ sở chuyên môn chuẩn xác.

Nếu được anh tayngangvfp có thể chỉ rõ chức năng của từng câu lệnh trong đoạn code đó giúp em được không. Như thế em sẽ hiểu hơn(Hiện tại có thể hiểu chưa đúng --> dùng không chuẩn).
Thanks.

M không làm việc nhiều với DDE nên không biết kỹ, tuy nhiên đọan lệnh đó cần chú ý:

*Khởi tạo 1 phiên làm việc DDE
ichannel = Ddeinitiate(myApp,"ZOOM")

*Nếu khởi tạo được => tức c/t đã đang chạy rồi
If ichannel =>0
=Ddeterminate(ichannel)
Messagebox("Chuong trinh dang chay tren may cua ban roi. Khong duoc chay 2 chuong trinh cung luc."+Chr(13)+"Chuong trinh nay se thoat ra.",0+16,[Thong bao])
Quit
Endif

*Nếu không khởi tạo được => định nghĩa 1 DDE.
*Nếu bỏ câu lệnh này đi thì sẽ mất tác dụng
=Ddesetservice(myApp,"define")

dungnt.pro
29-11-2009, 16:52
1. Dùng Form.picture=[Ten file hinh]
2. Thêm 1 control Image lên form và gán Picture cho nó

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



M không làm việc nhiều với DDE nên không biết kỹ, tuy nhiên đọan lệnh đó cần chú ý:

*Khởi tạo 1 phiên làm việc DDE
ichannel = Ddeinitiate(myApp,"ZOOM")

*Nếu khởi tạo được => tức c/t đã đang chạy rồi
If ichannel =>0
=Ddeterminate(ichannel)
Messagebox("Chuong trinh dang chay tren may cua ban roi. Khong duoc chay 2 chuong trinh cung luc."+Chr(13)+"Chuong trinh nay se thoat ra.",0+16,[Thong bao])
Quit
Endif

*Nếu không khởi tạo được => định nghĩa 1 DDE.
*Nếu bỏ câu lệnh này đi thì sẽ mất tác dụng
=Ddesetservice(myApp,"define")

*Nếu bỏ câu lệnh này đi thì sẽ mất tác dụng
=Ddesetservice(myApp,"define") nghĩa là sao hả anh? Cả đoạn code mất tác dụng hay là không khởi tạo được 1 DDE mới?

kazumareika
29-11-2009, 17:16
Mình bị kẹt mất nút tìm kiếm rồi
Đây là form của mình
http://i630.photobucket.com/albums/uu24/Greend_Cat/Untitled-1-2.jpg
Khi mình đánh một giá trị vào ô ma khach hang sau đó ấn nút tìm kiếm thì các thông tin còn lại sẽ hiện ra ở các ô khác
bạn nào cho mình biết lệnh với
Lệnh mình dùng ở ô tìm kiếm chỉ có hiện lên đúng bảng ghi đầu tiên thôi
SELECT baohanhcuahangdienmay
thisform.txtmakh.Value=baohanhcuahangdienmay.makh
thisform.txthotenkh.Value=baohanhcuahangdienmay.ho tenkh
thisform.txtsanpham.Value=baohanhcuahangdienmay.sa npham
thisform.txtloisanpham.Value=baohanhcuahangdienmay .loisanpham
thisform.Refresh
Phải thêm gì vào bây giờ

ngmcuongbl
30-11-2009, 09:09
IF MESSAGEBOX("Ban co chac xoa khong?(Y/N)",20,"Chu Y")=6 Then
DELETE
USE infomay EXCLUSIVE
PACK
Thisform.Refresh

ENDIF
sau khi bấm nút xóa thì các dữ liệu trong các text box và combo box mất tiêu hết và bị ẩn đi. mình vào table xem lại thì nó chỉ bôi đen chứ không xóa hẳn được. các bạn giúp mình với

mhd_pc
30-11-2009, 19:06
Mình có đoạn lệnh xử lý file excel chạy trên VFP 6.0 như sau:

.........
With .Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = .F.
.Orientation = 0
.AddIndent = .F.
.IndentLevel = 0
.ShrinkToFit = .F.
.ReadingOrder = xlContext
.MergeCells = .F.
EndWith
.Range("B1,B:B,F:F").Select
.Range("F1").Activate
.Selection.NumberFormat = "dd/mm/yyyy"
.Columns("I:M").Select

.Selection.NumberFormat = [_(* #,##0.00_);_(* (#,##0.00);_(* "" ""??_);_(@_)]
.ActiveWindow.ScrollColumn = 2
.ActiveWindow.ScrollColumn = 1

.Range("A1: D1").Select
With .Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = .F.
.Orientation = 0
.AddIndent = .F.
.IndentLevel = 0
.ShrinkToFit = .F.
.ReadingOrder = xlContext
.MergeCells = .F.
EndWith
.Selection.Merge

....... còn khoảng 20 dòng lệnh nữa.

Tình hình là mình chạy thử trên 10 máy thì khoảng 4 máy chạy tới đòng lệnh:
.Range("B1,B:B,F:F").Select
thì báo lỗi ERRORCHECK (1 trong 4 máy này có cài bộ VFP 6.0)

Nếu mình bỏ dòng này thì chạy tốt đến cuối Procedure
hoặc mình sửa thành:
.Range("B5:B20").Select
.Selection.NumberFormat = "dd/mm/yyyy"
.Range("F5:F20").Select
.Selection.NumberFormat = "dd/mm/yyyy"
thì cũng OK.

Có bạn nào biết xử lý như thế nào không? Giúp mình với.

heihai
01-12-2009, 05:04
Tại sao khi em chay report qua form lại phải chọn bảng nhỉ????????
ai biết làm sao để không phải chọn bảng mà vẫn chạy dc giúp em với ạ.

darshana
01-12-2009, 08:51
Mình bị kẹt mất nút tìm kiếm rồi
Đây là form của mình
http://i630.photobucket.com/albums/uu24/Greend_Cat/Untitled-1-2.jpg
Khi mình đánh một giá trị vào ô ma khach hang sau đó ấn nút tìm kiếm thì các thông tin còn lại sẽ hiện ra ở các ô khác
bạn nào cho mình biết lệnh với
Lệnh mình dùng ở ô tìm kiếm chỉ có hiện lên đúng bảng ghi đầu tiên thôi
SELECT baohanhcuahangdienmay
thisform.txtmakh.Value=baohanhcuahangdienmay.makh
thisform.txthotenkh.Value=baohanhcuahangdienmay.ho tenkh
thisform.txtsanpham.Value=baohanhcuahangdienmay.sa npham
thisform.txtloisanpham.Value=baohanhcuahangdienmay .loisanpham
thisform.Refresh
Phải thêm gì vào bây giờ



SELECT baohanhcuahangdienmay
go top
locate for allt(makh)==allt(thisform.txtmakh.Value)
if found
thisform.txthotenkh.Value=baohanhcuahangdienmay.ho tenkh
thisform.txtsanpham.Value=baohanhcuahangdienmay.sa npham
thisform.txtloisanpham.Value=baohanhcuahangdienmay .loisanpham
Else
Messagebox("ko tim thay")
endif
thisform.Refresh

jsonline
01-12-2009, 10:41
Xin lỗi cả nhà vì thread ko đúng hoàn cảnh.
Anh tayngangvfp ơi, em đang làm cái đổi font .VNTime trong VFP sang font unicode để export sang excel sau đó import vào phần mềm hỗ trợ kê khai thuế, nhưng chưa biết làm thế nào cả.
Anh có thể send cho e phần code tham khảo vào mail vankiepthienhaxanh6805@gmail.com được không ạh?
Thank anh rất nhiều.

trichpha
01-12-2009, 11:16
Việc convert TCVN <=> và unicode thường dùng để khi xuất ra Word, Excel. Còn về mã tiếng Việt ở VFP và SQL server như bạn nói thì mình ko hiểu như thế nào?



Mình muồn nhờ tayngangvfp tư vấn giúp giải pháp xử lý tiếng Việt trong quá trình trao đổi dữ liệu tiếng việt giữa VFP và SQL server. Cụ thể như sau:
- Trong CSDL server, dữ liệu tiếng việt nên sử dụng bảng mã nào? TCVN hay Unicode?
- Nếu dữ liệu tiếng Việt trong CSDL Server sử dụng bảng mã Unicode thì dùng giải pháp nào để lấy được dữ liệu tiếng việt đó trên VFP (do VFP không hỗ trợ Unicode) và Update từ VFP lên SQL server bằng cách nào?
- Nếu dữ liệu tiếng Việt trong CSDL Server sử dụng bảng mã TCVN thì dùng giải pháp nào để đẩy dữ liệu đó lên trang web
Cảm ơn tayngangvfp nhiều

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


Xin lỗi cả nhà vì thread ko đúng hoàn cảnh.
Anh tayngangvfp ơi, em đang làm cái đổi font .VNTime trong VFP sang font unicode để export sang excel sau đó import vào phần mềm hỗ trợ kê khai thuế, nhưng chưa biết làm thế nào cả.
Anh có thể send cho e phần code tham khảo vào mail vankiepthienhaxanh6805@gmail.com được không ạh?
Thank anh rất nhiều.

Bạn hãy dùng lệnh Export hoặc Copy trong VFP để chuyển dữ liệu VFP sang excel. Sau đó sử dụng tính năng Công cụ của Unikey để convert dữ liệu Excel từ TCVN3 sang Unicode

kazumareika
01-12-2009, 11:56
SELECT baohanhcuahangdienmay
go top
locate for allt(makh)==allt(thisform.txtmakh.Value)
if found
thisform.txthotenkh.Value=baohanhcuahangdienmay.ho tenkh
thisform.txtsanpham.Value=baohanhcuahangdienmay.sa npham
thisform.txtloisanpham.Value=baohanhcuahangdienmay .loisanpham
Else
Messagebox("ko tim thay")
endif
thisform.Refresh


Tuyệt hảo....
Thế mà ở lớp thằng bạn nó viết code dài loằng ngoằng, gấp đôi đoạn code trên nhưng hiệu quả ko bằng đến một nửa

tayngangvfp
01-12-2009, 13:18
Mình muồn nhờ tayngangvfp tư vấn giúp giải pháp xử lý tiếng Việt trong quá trình trao đổi dữ liệu tiếng việt giữa VFP và SQL server. Cụ thể như sau:
- Trong CSDL server, dữ liệu tiếng việt nên sử dụng bảng mã nào? TCVN hay Unicode?
- Nếu dữ liệu tiếng Việt trong CSDL Server sử dụng bảng mã Unicode thì dùng giải pháp nào để lấy được dữ liệu tiếng việt đó trên VFP (do VFP không hỗ trợ Unicode) và Update từ VFP lên SQL server bằng cách nào?
- Nếu dữ liệu tiếng Việt trong CSDL Server sử dụng bảng mã TCVN thì dùng giải pháp nào để đẩy dữ liệu đó lên trang web


1. Nếu chỉ cần thể hiện dữ liệu tiếng Việt = VFP thì có thể dùng VNI hay ABC cho dữ liệu trên SQL.
2.Vấn đề dùng tiếng việt UNICODE lại là một vấn đề khác. Nếu dùng unicode thì có vẻ "hiện đại" hơn! Và có thể dùng trao đổi trực tiếp thông tin với các ứng dụng mới hiện nay (C#, ...) dùng unicode mà không cần phải convert. Nhưng do các control VFP không hỗ trợ unicode nên muốn dùng phải sử dụng các control Activatex như microsoft form 2.0 để thể hiện. Và 1 điểm nữa, nếu SQL dùng unicode thì bắt buộc phải kết nối thông qua ADO (record set hay CursorAdapter) chứ không thể dùng ODBC (Remote View hay SPT).


@ jsonline
Bạn có thể tham khảo ví dụ mình viết ở đây
http://vn.myblog.yahoo.com/tayngangvfp/article?mid=21
http://vn.myblog.yahoo.com/tayngangvfp/article?mid=20

Lưu ý: class chuyển font mình viết chỉ dùng được với VFP9

jsonline
01-12-2009, 14:37
@ jsonline
Bạn có thể tham khảo ví dụ mình viết ở đây
http://vn.myblog.yahoo.com/tayngangvfp/article?mid=21
http://vn.myblog.yahoo.com/tayngangvfp/article?mid=20

Lưu ý: class chuyển font mình viết chỉ dùng được với VFP9[/QUOTE]

Tiếc quá, hiện em đang dùng VFP8.0
Thế không có cách nào để khắc phục cho vấn đề này hả anh?

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



Bạn hãy dùng lệnh Export hoặc Copy trong VFP để chuyển dữ liệu VFP sang excel. Sau đó sử dụng tính năng Công cụ của Unikey để convert dữ liệu Excel từ TCVN3 sang Unicode

Anh có thể nói rõ hơn về cái công cụ của Unikey để convert dữ liệu sang Excel từ TCVN3 sang Unicode được không ạh? Em chưa rõ lắm về phần này. Thank anh.

hangiang
02-12-2009, 00:03
Có thể dùng Scrip

oFileSystem = CREATEOBJECT("Scripting.FileSystemObject")
?oFileSystem.DeleteFolder("d:\Ten_Folder",.T.)

Mình chưa hiểu ý nghĩa của 2 câu lệnh trên, mong các bạn giải thích giúp mình với

tuan_tvkg
02-12-2009, 01:12
Xoá thư mục d:\Ten_Folder cả thu mục con trong đó

hangiang
03-12-2009, 16:50
Được gửi bởi tayngangvfp View Post
Có thể dùng Scrip

oFileSystem = CREATEOBJECT("Scripting.FileSystemObject")
?oFileSystem.DeleteFolder("d:\Ten_Folder",.T.)



Xoá thư mục d:\Ten_Folder cả thu mục con trong đó

ý mình muốn biết là ở dòng lệnh số 1 : Scripting.FileSystemObject là có sẳn trong vfp hay mình phải tự tạo ra ? mình có thể twj tạo ra không và tạo bằng cách nào ? có cách nào để xem code của đối tượng này không ?

mhd_pc
05-12-2009, 18:05
Cho mình hỏi: trong report có cách nào lấy được tên của report đó không.
Ví dụ: mình tạo một report có tên "Danh muc", trong report này mình tạo một Label. Làm sao để trong chương trình khi gọi report "Danh muc" này thì cái Label trong report cũng hiện là "Danh muc".
Cám ơn các bạn.

dinhanhency
05-12-2009, 18:19
ý mình muốn biết là ở dòng lệnh số 1 : Scripting.FileSystemObject là có sẳn trong vfp hay mình phải tự tạo ra ? mình có thể twj tạo ra không và tạo bằng cách nào ? có cách nào để xem code của đối tượng này không ?
FileSystemObject là đối tượng được xây dựng sẵn trong Foxpro.


Cho mình hỏi: trong report có cách nào lấy được tên của report đó không.
Ví dụ: mình tạo một report có tên "Danh muc", trong report này mình tạo một Label. Làm sao để trong chương trình khi gọi report "Danh muc" này thì cái Label trong report cũng hiện là "Danh muc".
Cám ơn các bạn.

dùng hàm JUSTFNAME(ten_file) để lấy tên file trong foxpro

mhd_pc
05-12-2009, 18:50
dùng hàm JUSTFNAME(ten_file) để lấy tên file trong foxpro

ý mình là làm sao để lấy được tên của report đó mà không biết tên chính xác tên hay tên file của report mình mở.
Cái lệnh JUSTFNAME(ten_file) thì mình phải biet ten_file.

Nếu trong report, mình add một Field với Expressions là Thisform.name thì ket qua sau khi gọi report này, trong field sẽ là tên của form gọi report này. Còn mình muốn lấy tên của cái report này thì không biết làm sao? dùng lệnh nào?

trichpha
09-12-2009, 11:15
@ jsonline
Bạn có thể tham khảo ví dụ mình viết ở đây
http://vn.myblog.yahoo.com/tayngangvfp/article?mid=21
http://vn.myblog.yahoo.com/tayngangvfp/article?mid=20

Lưu ý: class chuyển font mình viết chỉ dùng được với VFP9

Tiếc quá, hiện em đang dùng VFP8.0
Thế không có cách nào để khắc phục cho vấn đề này hả anh?

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



Anh có thể nói rõ hơn về cái công cụ của Unikey để convert dữ liệu sang Excel từ TCVN3 sang Unicode được không ạh? Em chưa rõ lắm về phần này. Thank anh.[/QUOTE]

- Thực hiện Copy phần dữ liệu Excel cần convert
- Kích phải chuột vào biểu tượng Unikey chọn mục công cụ.
- Chon kiểu mã trong hộp mục Nguồn là TCVN3
- Chon kiểu mã trong hộp mục Đích là Unicode
- Bật tính năng Chuyển mã clipboard
- kích nút chuyển mã

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


1. Nếu chỉ cần thể hiện dữ liệu tiếng Việt = VFP thì có thể dùng VNI hay ABC cho dữ liệu trên SQL.
2.Vấn đề dùng tiếng việt UNICODE lại là một vấn đề khác. Nếu dùng unicode thì có vẻ "hiện đại" hơn! Và có thể dùng trao đổi trực tiếp thông tin với các ứng dụng mới hiện nay (C#, ...) dùng unicode mà không cần phải convert. Nhưng do các control VFP không hỗ trợ unicode nên muốn dùng phải sử dụng các control Activatex như microsoft form 2.0 để thể hiện. Và 1 điểm nữa, nếu SQL dùng unicode thì bắt buộc phải kết nối thông qua ADO (record set hay CursorAdapter) chứ không thể dùng ODBC (Remote View hay SPT).


@ jsonline
Bạn có thể tham khảo ví dụ mình viết ở đây
http://vn.myblog.yahoo.com/tayngangvfp/article?mid=21
http://vn.myblog.yahoo.com/tayngangvfp/article?mid=20

Lưu ý: class chuyển font mình viết chỉ dùng được với VFP9

Cảm ơn tayngangvfp rất nhiều.
Nhân đây, xin tayngangvfp có thể chỉ giúp phương pháp nhận-gửi dữ liệu trong Database giữa VFP-SQL mà tayngangvfp đang áp dung được không (xin cho code minh họa - không cần giải thích)?
Một đã làm được nhưng thấy trong giải thuật chưa ổn. Mình có 1 số chương trình đã xây dựng bằng VFP đã và đang sử từ năm 1996. Bây giờ muốn tìm đối tác hỗ trợ giải quyết giúp trong viêc nâng cấp nên SQL server. Không biết tayngangvfp có rảnh thời gian để liên kết cùng mình không.
Nếu có thể xin hãy mail cho mình về địa chỉ TrichPha@Yahoo.com nhé.

luutieuthu
09-12-2009, 23:18
Hix, mình đang tạo 1 cái Grid, trên đó có chứa 1 cột, trong cột có các bản ghi lấy từ cơ sở dữ liệu có sẵn, mình muốn là khi click vào 1 trong số các bản ghi đó thì ở các ô textbox, cbo box, ... hiện lên giá trị tương ứng với giá trị của bản ghi đó, nhưng khi click xong thì cái grid của mình lại trắng trơn. Vậy mình phải làm sao để nó không bị trắng xóa đi như vậy? ( mình đã đặt thuộc tính delete mark = F, Record mark = F rồi nhưng không được).

hoangpnt349
10-12-2009, 13:12
Cảm ơn tayngangvfp rất nhiều.
Nhân đây, xin tayngangvfp có thể chỉ giúp phương pháp nhận-gửi dữ liệu trong Database giữa VFP-SQL mà tayngangvfp đang áp dung được không (xin cho code minh họa - không cần giải thích)?
Một đã làm được nhưng thấy trong giải thuật chưa ổn. Mình có 1 số chương trình đã xây dựng bằng VFP đã và đang sử từ năm 1996. Bây giờ muốn tìm đối tác hỗ trợ giải quyết giúp trong viêc nâng cấp nên SQL server. Không biết tayngangvfp có rảnh thời gian để liên kết cùng mình không.
Nếu có thể xin hãy mail cho mình về địa chỉ TrichPha@Yahoo.com nhé.

Bạn tham khảo link bên dưới xem có giải quyết được vấn đề kết nối giữa VPF và MS SQL không:
http://hoangpnt.forum-viet.net/forum-f12/topic-t19.htm#19

tayngangvfp
10-12-2009, 16:30
Nhân đây, xin tayngangvfp có thể chỉ giúp phương pháp nhận-gửi dữ liệu trong Database giữa VFP-SQL mà tayngangvfp đang áp dung được không (xin cho code minh họa - không cần giải thích)?

Bạn tham khảo 1 ví dụ mình làm ở đây
http://vn.myblog.yahoo.com/tayngangvfp/article?mid=54

trichpha
11-12-2009, 10:45
ý mình là làm sao để lấy được tên của report đó mà không biết tên chính xác tên hay tên file của report mình mở.
Cái lệnh JUSTFNAME(ten_file) thì mình phải biet ten_file.

Nếu trong report, mình add một Field với Expressions là Thisform.name thì ket qua sau khi gọi report này, trong field sẽ là tên của form gọi report này. Còn mình muốn lấy tên của cái report này thì không biết làm sao? dùng lệnh nào?

Nếu bạn chỉ cho tôi cách đặt được giá trị cho thuộc tính Name trong report thì tôi sẽ giúp bạn làm được điều đó?!!!
NAME của Form cũng như Command, combo,... khác với file NAME lưu trữ form đó bạn nhé. Còn report thì không có thuộc tính NAME này đâu, chỉ có file name thôi

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


Hix, mình đang tạo 1 cái Grid, trên đó có chứa 1 cột, trong cột có các bản ghi lấy từ cơ sở dữ liệu có sẵn, mình muốn là khi click vào 1 trong số các bản ghi đó thì ở các ô textbox, cbo box, ... hiện lên giá trị tương ứng với giá trị của bản ghi đó, nhưng khi click xong thì cái grid của mình lại trắng trơn. Vậy mình phải làm sao để nó không bị trắng xóa đi như vậy? ( mình đã đặt thuộc tính delete mark = F, Record mark = F rồi nhưng không được).

Hiện tượng này xảy ra có thể do bạn đã dùng lệnh pack hoặc đã đóng rồi mở lại file nguồn điều khiển của grid,...

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


Bạn tham khảo link bên dưới xem có giải quyết được vấn đề kết nối giữa VPF và MS SQL không:
http://hoangpnt.forum-viet.net/forum-f12/topic-t19.htm#19

Cảm ơn hoangpnt349 nhé

tietduc99
11-12-2009, 17:59
Co ban nao biet viet chu chay trong viúal foxpro 6.0 khong?, giup minh nhe, minh dang can gap lam

luutieuthu
12-12-2009, 10:42
Vấn đề chuyển đổi giữa các loại Font = VFP cũng đã được bàn luận ở trong các chủ để trước đây. Việc dùng VFP để chuyển thì tốc độ không được nhanh như các PM chuyển đổi phổ biến. Tuy nhiên có còn hơn không, và quan trọng là chủ động được trong c/t của mình !!!
Tôi có viết 1 class ví dụ về việc này. Nhưng không hiểu sao không up lên Megaupload được !
Vậy bạn nào có nhu cầu, để lại địa chỉ email để mình gửi.

Chúc thành công.

Anh gửi cho em với nhé!
Mail: heocoi_02@yahoo.com
Thanks anh nhiều!

tayngangvfp
14-12-2009, 10:58
Anh gửi cho em với nhé!
Mail: heocoi_02@yahoo.com
Thanks anh nhiều!

Bạn vào đây download nhé vì M gửi theo địa chỉ email của bạn cho nhưng không được

http://vn.myblog.yahoo.com/tayngangvfp/article?mid=20

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


Co ban nao biet viet chu chay trong viúal foxpro 6.0 khong?, giup minh nhe, minh dang can gap lam

Bạn thêm 1 label và 1 timer vào form.

Đặt Timer.interval=500

Trong sự kiện Timer bạn viết code

IF thisform.label1.Left>=thisform.Width
thisform.label1.Left=-LEN(thisform.label1.Caption)*FONTMETRIC(6,thisform .label1.FontName,thisform.label1.FontSize)
ENDIF
thisform.label1.Left=thisform.label1.Left+1

quoclam1979
14-12-2009, 14:57
Xin chào các bro
Mình có một việc nhờ các bro trợ giúp. Mình chuyển dữ liệu từ file excel 2007 (trước đó đã chuyển mã từ Unicode sang VNI)sang Dbf của VSFox 9.0. Bây giờ dữ liệu thì qua Ok rồi nhưng còn bị một lỗi" đó là xuất hiện kí tự tab (|) ở ngay khoảng cách của các chữ. Ví dụ : |Nguyễn |Vũ |Anh. Rất mong được các bro trợ giúp.

thuy219
15-12-2009, 09:46
pà kon ơi,có ai có danh mục các câu lệnh thường dùng trong visual foxpro ko?cho em xin với..huhu e sắp thi

sweetboy2805
15-12-2009, 14:04
Chào các bạn, mình có một vấn đề cần các bạn giúp đỡ. Mình muốn dùng câu lệnh copy toàn bộ file từ thư mục 1 sang thư mục 2 , nếu thư mục 1 rỗng thì thôi, ko cần thông báo gì cả. Mình gặp rắc rối với trường hợp thư mục rỗng. Mong các bạn giúp mình.

hoangpnt349
16-12-2009, 08:20
Chào các bạn, mình có một vấn đề cần các bạn giúp đỡ. Mình muốn dùng câu lệnh copy toàn bộ file từ thư mục 1 sang thư mục 2 , nếu thư mục 1 rỗng thì thôi, ko cần thông báo gì cả. Mình gặp rắc rối với trường hợp thư mục rỗng. Mong các bạn giúp mình.

Gởi bạn link tham khảo:
http://hoangpnt.forum-viet.net/forum-f12/topic-t20.htm

sweetboy2805
16-12-2009, 12:51
Gởi bạn link tham khảo:
http://hoangpnt.forum-viet.net/forum-f12/topic-t20.htm

Cám ơn bạn nhiều lắm, mình làm được rồi , diễn đàn này quả là số 1 :D.

tietduc99
16-12-2009, 13:10
em cam on anh rat nhieu

sweetboy2805
16-12-2009, 14:24
Gởi bạn link tham khảo:
http://hoangpnt.forum-viet.net/forum-f12/topic-t20.htm

Hix, ko được bạn ơi. Mình thử copy 1 lần thì ok, nhưng lần thứ 2 thì nó không chép đè được mà bị treo visual fox luôn. Bạn kiểm tra lại dùm nha. Đang cần lắm :(

hoangpnt349
16-12-2009, 14:57
Hix, ko được bạn ơi. Mình thử copy 1 lần thì ok, nhưng lần thứ 2 thì nó không chép đè được mà bị treo visual fox luôn. Bạn kiểm tra lại dùm nha. Đang cần lắm :(

Đã cập nhật nội dung theo yeu cầu của bạn. Bạn vào link cũ để xem.
Chúc bạn thành công.

sweetboy2805
16-12-2009, 15:48
Đã cập nhật nội dung theo yeu cầu của bạn. Bạn vào link cũ để xem.
Chúc bạn thành công.

Tốt quá rồi ( đã test) , cám ơn bạn rất nhìu :)

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


Đã cập nhật nội dung theo yeu cầu của bạn. Bạn vào link cũ để xem.
Chúc bạn thành công.

Xin lỗi lại phải làm phiền bạn. Trong các thư mục chép của mình có trường hợp tên thư mục có khoảng trắng. Ví dụ : 'D:\tai lieu' , đoạn code của bạn không chép được. Mình đã thử thêm dấu ' ' nhưng vẫn không được, bạn xem lại giúp mình với , làm phiền bạn 1 lần nữa vậy :(

hoangpnt349
17-12-2009, 10:17
Xin lỗi lại phải làm phiền bạn. Trong các thư mục chép của mình có trường hợp tên thư mục có khoảng trắng. Ví dụ : 'D:\tai lieu' , đoạn code của bạn không chép được. Mình đã thử thêm dấu ' ' nhưng vẫn không được, bạn xem lại giúp mình với , làm phiền bạn 1 lần nữa vậy :(

Xong rồi, bạn vào copy lại code nhé.

sweetboy2805
17-12-2009, 10:23
Xong rồi, bạn vào copy lại code nhé.

Được rồi cám ơn bạn. Mình có sửa chỗ này :
wCommand = [XCOPY "&wSource" "&wDestination" /S /C /H /R /Y]

nhưng là ' ' nên ko đc , mình tưởng trong fox ko quan trọng ' ' và " " chứ. Hjx

tietduc99
17-12-2009, 23:28
Ban nao co phan mem quan li diem hoc sinh trung hoc co so thi share cho minh nhe.Minh dang can gap lam. Cam on cac ban nhieu
Email cua minh la duc_lu2002@yahoo.com

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

Anh tayngangvsf cho em hoi em lam giong nhu huong dan cua anh
WindowState= 2
TitleBar= 0
AlwaysOnTop = .T.
Desktop= .T.
ShowWindow= 2
BorderStyle= 1
Nhung sao khi chay chuong trinh man hinh cua em van khong lap lanh vay?
Anh co the chi ro hon cho em duoc khong?
Em dang can gap lam
Neu duoc thi anh goi qua email cho em nhe
duc_lu2002@yahoo.com
Em cam on anh nhieu lam

tayngangvfp
18-12-2009, 07:14
Ban nao co phan mem quan li diem hoc sinh trung hoc co so thi share cho minh nhe.Minh dang can gap lam. Cam on cac ban nhieu
Email cua minh la duc_lu2002@yahoo.com

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

Anh tayngangvsf cho em hoi em lam giong nhu huong dan cua anh
WindowState= 2
TitleBar= 0
AlwaysOnTop = .T.
Desktop= .T.
ShowWindow= 2
BorderStyle= 1
Nhung sao khi chay chuong trinh man hinh cua em van khong lap lanh vay?
Anh co the chi ro hon cho em duoc khong?
Em dang can gap lam
Neu duoc thi anh goi qua email cho em nhe
duc_lu2002@yahoo.com
Em cam on anh nhieu lam

...man hinh cua em van khong lap lanh vay là như thế nào?

nguyenthien0908
20-12-2009, 10:37
Chào các Pro mình có một việc cần các pro giup đỡ. Mình có một form như thế này:

http://i663.photobucket.com/albums/uu359/nguyenthien0908/anh%20ve%20Visual%20Foxpro/xuathang.jpg

mình muốn khi nhập một chữ cái bất kỳ vào cột tên hàng hoá thì nó sẽ xuất hiện một form danh mục hàng hoá cho mình chọn như thế này:


http://i663.photobucket.com/albums/uu359/nguyenthien0908/anh%20ve%20Visual%20Foxpro/dmhanghoa.jpg

và tự động lọc tất cả các mặt hàng có chữ cái đầu tiên bằng chữ cái đã nhập xin cảm ơn các pro trước!!

nguyenthien0908
23-12-2009, 10:49
buồn quá không ai giup mình nhỉ.

ducminh1980
23-12-2009, 20:53
Co ai giai ma dum doan ma nay ko :L
FUNCTION dbc_OpenData
LPARAMETERS CDATABASENAME, LEXCLUSIVE, LNOUPDATE, LVALIDATE
IF VARTYPE(PSWH)<>"C"
RETURN .F.
ENDIF
IF SYS(2007, PSWH)<>"53724"
RETURN .F.
ENDIF
ENDFUNC

mhd_pc
24-12-2009, 08:42
Tôi nghĩ trong này chỉ có 2 dòng lệnh bạn cần tìm hiểu ý nghĩa:
VARTYPE(PSWH)='C'
SYS(2007, PSWH)

VarType(PSWH)='C' && có thể hiểu đơn giản là Kiểm Tra biến PSWH thuộc loại biến nào (Char, Logic, Date ...), ở đây so savo71o71i 'C' --> kiểm tra biến PSWH có phải thuộc loại Char, Memo hay VarChar hay không.

SYS(2007,PSWH) && checksum biến PSWH

Mấy lệnh cơ bản này đều có trong Document của VFP, bạn chịu khó tìm & thử để biết rõ hơn.

----------------------------
Merry X'MAS & Happy New Year
----------------------------

tayngangvfp
24-12-2009, 09:02
Chào các Pro mình có một việc cần các pro giup đỡ. Mình có một form như thế này:

....
mình muốn khi nhập một chữ cái bất kỳ vào cột tên hàng hoá thì nó sẽ xuất hiện một form danh mục hàng hoá cho mình chọn như thế này:

......

và tự động lọc tất cả các mặt hàng có chữ cái đầu tiên bằng chữ cái đã nhập xin cảm ơn các pro trước!!

Có nhiều các để chọn 1 mục trong danh sách như: dùng combobox, tetbox (với chức năng autocomplete), dùng form (như bạn đề cập). Cách dùng form thì dễ làm nhưngkhông hay như dùng combobox hay textbox.

Đây là 1 ví dụ theo như ý tưởng dùng form của bạn.
Bạn chạy main.prg
sau đó chạy nghiepVu\PhieuXuat.
đánh thử vào ô tên hàng ....


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

nguyenthien0908
24-12-2009, 11:25
Có nhiều các để chọn 1 mục trong danh sách như: dùng combobox, tetbox (với chức năng autocomplete), dùng form (như bạn đề cập). Cách dùng form thì dễ làm nhưngkhông hay như dùng combobox hay textbox.

Đây là 1 ví dụ theo như ý tưởng dùng form của bạn.
Bạn chạy main.prg
sau đó chạy nghiepVu\PhieuXuat.
đánh thử vào ô tên hàng ....


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

cám ơn bác taynganvfp nhiều nhiều.

bladekhanh
24-12-2009, 11:59
trong fox co chuc nang freeze panel cua excel cho grid khong vay may bac?neu co xin huong dan minh hoac cho duong link !Thanks
------------------Merry Chirstmas-------------------

sweetboy2805
24-12-2009, 15:30
Anh em ơi giúp với , có cách nào xuất report trong fox ra word được ko vậy , ông sếp yêu cầu kỳ cục quá hu hu

tungvv
24-12-2009, 16:04
Anh em ơi giúp với , có cách nào xuất report trong fox ra word được ko vậy , ông sếp yêu cầu kỳ cục quá hu hu

Bạn thử tham khảo một ví dụ sau đây, có thể sẽ giúp được bạn đó : http://quangbinh-izs.gov.vn/tung/Fox2Word.zip

trichpha
26-12-2009, 16:40
Tôi có các file ảnh quét dạng scann, trong mỗi file ảnh đó có ảnh hồ sơ của nhiều người.
Vấn đề đặt ra:
- Làm thế nào để có thể tách ảnh của mỗi người trong file ảnh đó ra bằng chương trình được code trong VFP?
- và làm thế nào để đưa các ảnh sau khi tách vào cơ sở dữ liệu foxpro mà mất ít công sức khi thao tác nhất?
Xin cảm ơn.

tayngangvfp
28-12-2009, 09:21
Tôi có các file ảnh quét dạng scann, trong mỗi file ảnh đó có ảnh hồ sơ của nhiều người.
Vấn đề đặt ra:
- Làm thế nào để có thể tách ảnh của mỗi người trong file ảnh đó ra bằng chương trình được code trong VFP?
- và làm thế nào để đưa các ảnh sau khi tách vào cơ sở dữ liệu foxpro mà mất ít công sức khi thao tác nhất?
Xin cảm ơn.

1.Tách ảnh tự động: với việc kết hợp 1 vài tool thì vfp có thể xử lý ảnh với các chức năng cơ bản. Tuy nhiên để tự động trích ảnh trong 1 file thì hiện tại chưa có tool nào như vậy cho VFP. Nếu muốn có lẽ phải tự viết theo thuật toán nào đó để thực hiện.
2.Việc đưa ảnh vào CSDL cũng có nhiều cách, nhưng theo mình, cách đơn giản nhất (nếu không tách được tự động như y/c câu 1) là viết code để lưu ảnh từ Clipboard. Khi đó ta chỉ việc mở file ảnh (bằng paintbrush, photoshop,.. hay chính vfp )=> chọn vùng cần lưu (trích) => copy => trong fox viết code để lưu hình này lại.

Các link tham khảo việc xử lý ảnh =vfp

http://weblogs.foxite.com/vfpimaging/archive/2007/10/17/5120.aspx

http://vfpx.codeplex.com/wikipage?title=GDIPlusX&referringTitle=Home

trichpha
28-12-2009, 10:30
trong fox co chuc nang freeze panel cua excel cho grid khong vay may bac?neu co xin huong dan minh hoac cho duong link !Thanks
------------------Merry Chirstmas-------------------

Trong fox co chuc nang freeze panel cua excel cho grid đấy.
- Để bật tính năng này, bạn hãy thay đổi giá trị cho thuộc tính Partition của Grid = tổng độ rộng các cột cần Freeze.
- Để tắt tính năng này, đưa giá trị Partition về 0

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


1.Tách ảnh tự động: với việc kết hợp 1 vài tool thì vfp có thể xử lý ảnh với các chức năng cơ bản. Tuy nhiên để tự động trích ảnh trong 1 file thì hiện tại chưa có tool nào như vậy cho VFP. Nếu muốn có lẽ phải tự viết theo thuật toán nào đó để thực hiện.
2.Việc đưa ảnh vào CSDL cũng có nhiều cách, nhưng theo mình, cách đơn giản nhất (nếu không tách được tự động như y/c câu 1) là viết code để lưu ảnh từ Clipboard. Khi đó ta chỉ việc mở file ảnh (bằng paintbrush, photoshop,.. hay chính vfp )=> chọn vùng cần lưu (trích) => copy => trong fox viết code để lưu hình này lại.

Các link tham khảo việc xử lý ảnh =vfp

http://weblogs.foxite.com/vfpimaging/archive/2007/10/17/5120.aspx

http://vfpx.codeplex.com/wikipage?title=GDIPlusX&referringTitle=Home

Cảm ơn tayngangvfp nhiều nhé. Giải pháp bạn đưa ra cũng khá khả thi rồi.
Trước đây, tôi đã dùng paint để copy từng ảnh cât vào 1 file xong vào fox gắn từng file ảnh đó vào bản ghi thấy tốc độ làm viêc khá chậm. Nếu xử lý ngay trong Fox được thì sẽ tiết kiệm duoc đáng kể thời gian, công sức vì số lượng ảnh lên đến hàng nghìn, hàng vạn mà

danngudien
30-12-2009, 23:46
làm cách nào để tạo nhiều màu các dòng trên Grid các bạn có thể chỉ giúp được không? tạo các combo ở header.
xin anh tayngangvfp cho code nhé! và gửi thheo dia chỉ: danngudien@yahoo.com.vn
rất cám ơn?

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

có ai cho xin code kết chuyển dỹư liệu từ file Microsoft Office Excel 2003 vào Microsoft Office Access 2003

tayngangvfp
31-12-2009, 11:34
làm cách nào để tạo nhiều màu các dòng trên Grid các bạn có thể chỉ giúp được không? tạo các combo ở header.
xin anh tayngangvfp cho code nhé! và gửi thheo dia chỉ: danngudien@yahoo.com.vn
rất cám ơn?

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

có ai cho xin code kết chuyển dỹư liệu từ file Microsoft Office Excel 2003 vào Microsoft Office Access 2003

Gủi bạn tham khảo:
http://www.mediafire.com/file/lwt1kxynn5o/autofilter+GridColor.rar

ngan1812
31-12-2009, 12:09
http://i983.photobucket.com/albums/ae317/ngan12345huy/bt.jpg?t=1262230204
http://i983.photobucket.com/albums/ae317/ngan12345huy/bt1.jpg?t=1262230622

(hình 1): khai báo cấu trúc và nhập dữ liệu trong bang, lưu tệp là LUONG.DBF
(hình 2): thiết kế form theo hình 2
viết code thực hiện yêu cầu:
+ chạy form xuất hiện (hình 3)
+ trong hình 3 chọn 1 mốc thời gian trong check box, chọn tiếp 1 trình độ trong optiongroup
+ click nút " hiện form 2" thì hiện form 2 trong grid1 thì dữ liệu tìm thấy thỏa mãn yêu cầu đã chọn (hình 4), nếu ko tìm thấy thông tin thì hiện khung cảnh báo (hình 5)
mình cần code của hiện dữ liệu của hình 3,4 và 5, rất quan trọng, mong các ban giúp đỡ

danngudien
03-01-2010, 22:58
Các bạn giúp
Tôi có có dữ liệu ở file oxel nhập ngày tháng năm sinh kiểu dữ liệu là dd/mm/yyyy khi kết chuyển vào VBF thì nó hiển thị là số. các bạn có cách nào giúp để giữ nguyên định dạng khi chuyển không? rất mong sự cứu giúp của các bạn

trichpha
04-01-2010, 14:33
Các bạn giúp
Tôi có có dữ liệu ở file oxel nhập ngày tháng năm sinh kiểu dữ liệu là dd/mm/yyyy khi kết chuyển vào VBF thì nó hiển thị là số. các bạn có cách nào giúp để giữ nguyên định dạng khi chuyển không? rất mong sự cứu giúp của các bạn

* Câu hỏi gõ ít sai chính tả cũng là cách thể hiện tính nghiêm túc, tôn trọng diễn đàn, bạn ạ.
* Các lỗi chính tả của bạn, tôi tạm suy đoán như sau:
+ oxel chắc là Excel
+ VBF chắc là VFP
* Để chuyển dữ liệu kiểu ngày từ Excel vào VFP, cách tốt nhất là bạn nên tạo 3 cột phụ trong Excel:cột Ngày (dùng hàm DAY()), cột Tháng (dùng hàm MONTH()) và cột năm (dùng hàm YEAR()). Giá trị nào bị lỗi trong 3 cột phụ trên cho biết giá trị tương ứng ở cột ngày tháng năm không phải kiểu ngày giờ.
-Sau khi IMPORT vào CSDL VFP, bạn dùng hàm CTOD() của VFP để ghép giá trị 3 cột phụ trên về một cột.

danngudien
04-01-2010, 15:46
Cám ơn lời nhắc nhở và sự trợ giúp của bạn!

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

Nhờ các bác chỉ giúp trong Macro Excel thì

Sub Macro1()
'
' Macro1 Macro
' Macro recorded 04/01/2010 by DAN
'

'
Range("N2").Select
Selection.Copy
Range("N2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub

còn trong vfp thì sửa thế nào?
rất cám ơn các bác

jsonline
04-01-2010, 16:31
Chào cả nhà.
Em có vấn đề này muốn hỏi xem bác nào biết chỉ giúp em với.
Em kết xuất báo cáo ra excel, có 1 ô em dùng là kiểu number, nhưng khi kết xuất thì trong excel ô đó là kiểu text. Vậy có câu lệnh nào giúp định dạng cell đó đúng kiểu number khi kết xuất ra excel ko?
Cảm ơn nhiều.

tayngangvfp
04-01-2010, 17:01
Nhờ các bác chỉ giúp trong Macro Excel thì


Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
còn trong vfp thì sửa thế nào?
rất cám ơn các bác


xlPasteValues=-4193
xlNone=-4142

Selection.PasteSpecial(xlPasteValues,xlNone, .f., .f.)

danngudien
05-01-2010, 16:50
Chào cả nhà.
Em có vấn đề này muốn hỏi xem bác nào biết chỉ giúp em với.
Em kết xuất báo cáo ra excel, có 1 ô em dùng là kiểu number, nhưng khi kết xuất thì trong excel ô đó là kiểu text. Vậy có câu lệnh nào giúp định dạng cell đó đúng kiểu number khi kết xuất ra excel ko?
Cảm ơn nhiều.

OleApp.Range("N2:N100").Select
OleApp.Selection.NumberFormat ="00"&& "@"

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


xlPasteValues=-4193
xlNone=-4142

Selection.PasteSpecial(xlPasteValues,xlNone, .f., .f.)

Rất cám ơn anh tôi đã làm được.
anh cố gắn tranh thủ giúp cho:
Tôi muốn chèn một combo vào header của grid thì viết câu lệnh như thế nào?
Cám ơn anh trước, chúc anh một năm mới sức khỏe

scounter
07-01-2010, 23:30
Mới tham gia mong các pro chỉ dẫn :D

tayngangvfp
08-01-2010, 07:16
....
anh cố gắn tranh thủ giúp cho:
Tôi muốn chèn một combo vào header của grid thì viết câu lệnh như thế nào?
Cám ơn anh trước, chúc anh một năm mới sức khỏe

Thực ra không thể chèn 1 combobox hay control nào vào header của Grid được mà chỉ có thể viết code để "giả lập" như vậy thôi. Ý tưởng có thể là chèn 1 hình mũi tên của combobox vào header, sau đó xử lý sự kiện click để thể hiện 1 combobox vào đúng ngay vị trí header đó.

scounter
09-01-2010, 04:01
Mọi người dịch dùm mình đoạn code này được ko,mấy cài hàm mới quá chưa quen lém
thanks :x
VD : Strname="abc def"
thì LEN(Strname)= 6 hay 7 ???
....


PROCEDURE checklicience
WSHShell = CreateObject("WScript.Shell")
MCID = WSHShell.RegRead("HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\ 0\FeatureSet")

f_ttbcpara = m_path +[CAUTRUC\parattbc.dbf]
f_dngky = m_path +[HETHONG\fdangky.scx]

USE (f_ttbcpara) ALIAS ttbc
SELECT * FROM ttbc INTO ARRAY ten
USE IN 'ttbc'

strname = (ALLTRIM(ten(1,2)))
OrgKey = 1
IF MCID < 0 then
OrgKey = MCID*(-12345)
ELSE
OrgKey = MCID*122345
ENDIF
LOCAL codes
codes = ""
IF LEN(strname)<> 0
FOR ncount=1 TO LEN(strname)
codes = codes + ALLTRIM(STR(ASC(SUBSTR(strname,ncount,1))))
ENDFOR
ENDIF
CodeOfName = codes
nratio = 0
FOR j = 1 TO LEN(CodeOfName)
nratio = nratio + int(VAL((SUBSTR(CodeOfName,j,1))))
ENDFOR

acodes = OrgKey*nratio
****** = ALLTRIM(STR(acodes,16))
serikey = ""

FOR ncount = 1 TO LEN(******)
subseri = chr(MOD(val(SUBSTR(******,ncount,2)),26)+65)
serikey = serikey + alltrim(subseri)
ENDFOR
*=thongbao(serikey)
USE (f_ttbcpara) ALIAS ttbc
LOCATE FOR ALLTRIM(******)=ALLTRIM(serikey)
IF ! FOUND()
*IF ALLTRIM(serikey) <> ALLTRIM(ten(1,10))
USE IN 'ttbc'
DO FORM &f_dngky.
ENDIF
mtruso = ALLTRIM(ten(1,2))
USE IN 'ttbc'
ENDPROC

tietduc99
12-01-2010, 15:52
Có bạn nào biết tạo file set tup trong visual foxpro 6.0 khong vay?. Chi minh voi, minh dang can gap lam?

mhd_pc
12-01-2010, 18:37
Bạn mở project của bạn ra, sau đó chọn menu Tools\Wizards\Setup và làm theo từng bước chương trình yêu cầu là OK.

trungpa
18-01-2010, 11:26
Chào các bạn mê FoxPro!
Có bạn nào biết sử dụng bộ soạn thảo tương tự như ActiveX rich text format để soạn thảo trong foxpro không, giúp tôi với.
Tôi đã tích hợp bộ soạn thảo richtext format editor vào foxpro nhưng toàn bị mất chư ư thôi.
Hoặc bạn nào biết cách khắc phục lỗi chữ ư trong richtext format editor thì giúp tôi với.

wheel
19-01-2010, 15:23
Mình dùng fox từ thời for DOS, vì công việc kiếm ăn nên không theo được các version fox for wind được. Nay vì ham thích muốn học lại VFP mà thấy ít tài liệu quá. Rất mong mở rộng forum này. Ai có tài liệu nào về giải thích lệnh và hàm thì post cho mình xin. Cám ơn!

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

Mình mới thử VFP 9.0 mà không tương thich font UNICODE. Nếu vậy thì thiêt thòi cho các fan của VFP quá. Có ai biết làm sao dùng font Unicode được chỉ giùm.

bạn có thể dùng các font .vn hay Mssanseri cũng có thể gõ được tiếng việt trên visualfox

mhd_pc
19-01-2010, 17:09
Các bạn giúp
Tôi có có dữ liệu ở file oxel nhập ngày tháng năm sinh kiểu dữ liệu là dd/mm/yyyy khi kết chuyển vào VBF thì nó hiển thị là số. các bạn có cách nào giúp để giữ nguyên định dạng khi chuyển không? rất mong sự cứu giúp của các bạn

Bạn sử dụng cách sau:
- Nếu chỉ chuyển ngày: {^1899/12/30} + INT(mDateTime-mDateTime%1)
- Nếu chuyển ngày/giờ: DTOT({^1899/12/30} + INT(mDateTime)) + ROUND(24*60*60*(mDateTime%1),0)

Với mDateTime là format Number. Dữ liệu đọc từ Cell của Excel là dạng chuỗi --> bạn sử dụng lệnh Val() để chuyển thành dạng số.

Ngoài ra bạn có thể sử dụng thêm: if (Lower("yyyy") $ lower(.ActiveCell.NumberFormat)) = .T. để kiểm tra dữ liệu Cell đó có phải định dạng ngày/tháng/năm không (ở đây tôi sử dụng "yyyy" là chỉ kiểm tra ký hiệu năm).

dangnhimyphuoc
19-01-2010, 19:13
tôi có 2 tables,table quê quán có 2 field maqq và tenqq,1 table hoc sinh có maqq.Mình muon khi xuất report hocinh thì từ maqq của hocinh đó sẽ đưa ra tenqq tương ứng đã được lưu trong table quequan(table hocsinh không có filed tenqq)

hathieuhuyen
19-01-2010, 22:22
Em đang chuẩn bị làm đồ án về phần mềm kế toán viết bằng vfp 9.0. Em muốn kết hợp với cả sql nữa. Nhưng ko biết 2 ngôn ngữ này có thể kết hợp với nhau ra sao nhỉ?
Các bác giải thích giùm em nhé!

dinhanhency
19-01-2010, 22:44
Em đang chuẩn bị làm đồ án về phần mềm kế toán viết bằng vfp 9.0. Em muốn kết hợp với cả sql nữa. Nhưng ko biết 2 ngôn ngữ này có thể kết hợp với nhau ra sao nhỉ?
Các bác giải thích giùm em nhé!

Kết hợp tốt, ý của bạn hỏi không rõ ràng. Dùng MS SQL để xử lý và lưu trữ dữ liệu. Foxpro làm giao diện tương tác người sử dụng.

fanvsf
20-01-2010, 16:16
tôi có 2 tables,table quê quán có 2 field maqq và tenqq,1 table hoc sinh có maqq.Mình muon khi xuất report hocinh thì từ maqq của hocinh đó sẽ đưa ra tenqq tương ứng đã được lưu trong table quequan(table hocsinh không có filed tenqq)

Bạn dùng lệnh SELEC query để gọi field tên quê quán trong file quequan
VD : SELECT Hocsinh.ten, Quequan.tenqq;
FROM ;
hocsinh ;
FULL JOIN quequan ;
ON Hocsinh.maqq = Quequan.maqq;
INTO TABLE baocao.dbf

tamnt07
25-01-2010, 11:43
Mình bị lỗi "Function argument value, type or count is invalid" khi mở chương trình chạy trên nền foxpro. Không biết tại sao lại bị lỗi này và cách sửa thế nào nhỉ?

dinhanhency
25-01-2010, 12:30
Mình bị lỗi "Function argument value, type or count is invalid" khi mở chương trình chạy trên nền foxpro. Không biết tại sao lại bị lỗi này và cách sửa thế nào nhỉ?

Bạn kiểm tra giá trị parametters truyền vào. Chắc đang không đúng kiểu với kiểu khai báo trong hàm.

hathieuhuyen
27-01-2010, 01:35
Kết hợp tốt, ý của bạn hỏi không rõ ràng. Dùng MS SQL để xử lý và lưu trữ dữ liệu. Foxpro làm giao diện tương tác người sử dụng.

Đúng là cái ý đó của em đấy, nhưng hướng đi như nào thì em chưa rõ, các bác chỉ giáo thêm cho em nha!
Em giờ mới đang lò dò đi tìm sách mà khó quá đi, sách vfp hiếm quá cơ

dinhanhency
27-01-2010, 08:22
Đúng là cái ý đó của em đấy, nhưng hướng đi như nào thì em chưa rõ, các bác chỉ giáo thêm cho em nha!
Em giờ mới đang lò dò đi tìm sách mà khó quá đi, sách vfp hiếm quá cơ

Cần Help file + Google thôi em. Tìm sách gì cho mệt ra.

spectre19
27-01-2010, 10:20
Bạn vui lòng chỉ tôi cách bảo mật tốt nhất trong visual fox đi.
Bây giờ làm cái hệ thống mà gặp người có biết tí chút về VF thì họ sẽ lấy nguyên cái db của tui luôn. Nếu dùng cách mã hóa thì hơi căng thẳng.

hoangpnt349
27-01-2010, 10:49
Em đang chuẩn bị làm đồ án về phần mềm kế toán viết bằng vfp 9.0. Em muốn kết hợp với cả sql nữa. Nhưng ko biết 2 ngôn ngữ này có thể kết hợp với nhau ra sao nhỉ?
Các bác giải thích giùm em nhé!

Chào bạn
Trên blog của mình có một số hàm giao tiếp giữa Visual Foxpro 9 với MS SQL, hi vọng nó giúp ích cho bạn:
http://my.opera.com/hoangpnt349

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


Bạn vui lòng chỉ tôi cách bảo mật tốt nhất trong visual fox đi.
Bây giờ làm cái hệ thống mà gặp người có biết tí chút về VF thì họ sẽ lấy nguyên cái db của tui luôn. Nếu dùng cách mã hóa thì hơi căng thẳng.

Chào bạn
Mình gợi ý bạn 2 cách như sau:
Cách 1: Mã hoá header của file DBF.
Cách 2: Thay database của Foxpro bằng MS SQL.
Theo mình, hiện nay cách 2 đang được sử dụng hiệu quả nhất, đặc biệt là những phần mềm sử dụng trên mạng LAN và WAN.
Mời bạn vào blog của mình để tham khảo một số đoạn code mẫu giao tiếp giữa VFP9 và MS SQL 2005:
http://my.opera.com/hoangpnt349

thinhnk
27-01-2010, 11:13
Chào các bạn,
Mình muốn làm report trong VFP như sau:
Report form <Tentep> prev
Khi màn hình review hiện lên, bấm nút Print để in report thì xuất hiện form để chọn máy in như khi ta dùng lệnh Report form <Tentep> to print promt

Cảm ơn các bạn nhiều

danngudien
27-01-2010, 11:13
Để đóng chương trình ứng dụng Microsoft Office Excel 2003 khi chạy chương trình VFP9 thì dụng câu lênh nào đây xin các bạn chỉ giáo giúp cho

tayngangvfp
27-01-2010, 11:58
Bạn vui lòng chỉ tôi cách bảo mật tốt nhất trong visual fox đi.
Bây giờ làm cái hệ thống mà gặp người có biết tí chút về VF thì họ sẽ lấy nguyên cái db của tui luôn. Nếu dùng cách mã hóa thì hơi căng thẳng.

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


Chào các bạn,
Mình muốn làm report trong VFP như sau:
Report form <Tentep> prev
Khi màn hình review hiện lên, bấm nút Print để in report thì xuất hiện form để chọn máy in như khi ta dùng lệnh Report form <Tentep> to print promt

Cảm ơn các bạn nhiều

Bạn nên tạo 1 class print tool bar riêng. Tham khảo ví dụ tại:
http://vn.myblog.yahoo.com/tayngangvfp/article?mid=13


Để đóng chương trình ứng dụng Microsoft Office Excel 2003 khi chạy chương trình VFP9 thì dụng câu lênh nào đây xin các bạn chỉ giáo giúp cho

oExcel.Quit

thinhnk
27-01-2010, 14:21
Bạn tham khảo 1 cách để bảo mật File .dbf
http://www.ddth.com/showthread.php?t=308558



Bạn nên tạo 1 class print tool bar riêng. Tham khảo ví dụ tại:
http://vn.myblog.yahoo.com/tayngangvfp/article?mid=13



oExcel.Quit

Class của bạn mình chạy thử bĩ báo lỗi

aaa_vfp
27-01-2010, 14:44
Nhờ các bạn chỉ giúp tôi cái này với!

Muốn biết một ngày bất kỳ nằm trong tuần thứ mấy của tháng đó và năm đó thì làm thế nào?

VD: tôi có chuổi ngày "05/01/2009" thì làm sao tôi biết được ngày 05 sẽ rơi vào tuần thứ mấy của tháng 01 na9m 2009.

Xin cam ơn!

salemnb
28-01-2010, 17:22
Mình chạy 1 chương trình trên nền fox 7. Chương trình thông báo lỗi và trở về cửa sổ command. Giờ mình muốn khi lỗi thì nó thoát luôn ra khỏi fox luôn, ko ở trong fox và của sổ command nữa. bác nào biết quản lý cái này không ah?

dinhanhency
28-01-2010, 18:43
Mình chạy 1 chương trình trên nền fox 7. Chương trình thông báo lỗi và trở về cửa sổ command. Giờ mình muốn khi lỗi thì nó thoát luôn ra khỏi fox luôn, ko ở trong fox và của sổ command nữa. bác nào biết quản lý cái này không ah?

Bạn tạo 1 Procedure với mục đích là thoát khỏi ứng dụng.


Proc AppQuit
QUIT
End Proc

Ở file chạy.


ON ERROR DO AppQuit

tayngangvfp
29-01-2010, 08:12
Nhờ các bạn chỉ giúp tôi cái này với!

Muốn biết một ngày bất kỳ nằm trong tuần thứ mấy của tháng đó và năm đó thì làm thế nào?

VD: tôi có chuổi ngày "05/01/2009" thì làm sao tôi biết được ngày 05 sẽ rơi vào tuần thứ mấy của tháng 01 na9m 2009.

Xin cam ơn!

Giả sử tuần bắt đầu từ T2 đến CN
Đoạn code sau sẽ thực hiện theo ý bạn

?TuanThu(DATE())
FUNCTION TuanThu
PARAMETERS dNgay
LOCAL tThuNgayDauThang,tNgayCuoiThang
tNgayCuoiThang=DATE(YEAR(GOMONTH(dNgay,1)),MONTH(G OMONTH(dNgay,1)),1)-1
tThuNgayDauThang=DOW(DATE(YEAR(dNgay),MONTH(dNgay) ,1))
tNgayCuoiTuan1=DATE(YEAR(dNgay),MONTH(dNgay),8-tThuNgayDauThang + 1)

IF dNgay>tNgayCuoiTuan1
IF dNgay>tNgayCuoiTuan1+7
IF dNgay>tNgayCuoiTuan1+7+7
IF dNgay>tNgayCuoiTuan1+7+7+7
IF tNgayCuoiTuan1+7+7+7+7<=tNgayCuoiThang AND dNgay>tNgayCuoiTuan1+7+7+7+7
tTuan=[Tuan 6]
ELSE
tTuan=[Tuan 5]
ENDIF
ELSE
tTuan=[Tuan 4]
ENDIF
ELSE
tTuan=[Tuan 3]
ENDIF
ELSE
tTuan=[Tuan 2]
ENDIF
ELSE
tTuan=[Tuan 1]
ENDIF
RETURN tTuan
ENDFUNC

aaa_vfp
29-01-2010, 08:38
Nhờ các bạn chỉ giúp tôi cái này với!

Muốn biết một ngày bất kỳ nằm trong tuần thứ mấy của tháng đó và năm đó thì làm thế nào?

VD: tôi có chuổi ngày "05/01/2009" thì làm sao tôi biết được ngày 05 sẽ rơi vào tuần thứ mấy của tháng 01 na9m 2009.

Xin cam ơn!

Cảm ơn anh Tayngang nhiều, để em thử xem

danngudien
30-01-2010, 20:44
Ai có code kiểm tra tiếng việt trong VFP cho xin

aaa_vfp
30-01-2010, 20:45
Em đang làm 1 chương trình quản lý hàng hoá:
có 1 bang Hangnhap(mahh, tenhh, ngaynhap, soluong,...)
Giờ em muốn chương trình lọc ra cho em trong Tuần thứ I, Tuần thứ II, Tuần thứ III, Tuần thứ IV, Tuần Thứ V của một tháng bất kỳ trong 1 năm bất kỳ nào đó.
Nhưng làm hoài mà không được.

Cảm ơn mọi người nhiều lắm!

alone_night
31-01-2010, 17:58
Ai có code kiểm tra tiếng việt trong VFP cho xin

Cái này đơn giản thôi, VD kiểm tra chuỗi s


bVN = .F. && .T. nếu chỗi có chứa TV
for i = 1 to len(s)
c = substr(s, i, 1)
if asc(c) > 128
bVN = .T. && TV
exit
endif
endfor

dungnc74
31-01-2010, 18:02
Mình muốn viết chương trình quản lý vật tư hàng hóa, nhưng chưa biết cách tổ chức bảng dữ liệu để tính tồn, nhờ mọi người giúp đõ

lengocloi_1207
31-01-2010, 18:35
Thật ra thì VFP là một ngôn ngữ khá linh động. VFP thừa hưởng những thành tựu của Dbase ngày xưa nên vẫn giữ phong cách DBF, điều này làm cho giới lập trình ngày nay bảo nó "gà mờ". Nhưng thật ra, khi VFP tạo kết nối với những hệ quản trị CSDL mạnh như SQL, Oracle thì VFP trở thành ngôn ngữ mạnh nhất dùng để lập trình quản trị thông tin nói chung. Một phần mềm xử lý số liệu tài chính hay kế toán hay .... nếu dùng VFP thì sẽ cực kỳ năng động, giao diện phong phú. Nếu bạn nhìn 2 phần mềm quản trị CSDL như Phần mềm kế toán chẳng hạn, một dùng BasicNet, một dùng VFP, thì phần viết bằng ngôn ngữ VFP linh hoạt hơn hẵn.

vovanly
01-02-2010, 13:05
Để viết một đoạn chương trình đọc dữ liệu từ đầu đọc mã vạch mình phải làm sao ?! Có ai biết chỉ giáo...

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


De tao ma vach Ban dung font Free3of9 la duoc thoi. Neu ko co minh gui cho.

Bác chỉ luôn cho em cách đọc mã vạch với, Em định cái chương trình bán hàng nho nhỏ tính tiền bằng cách đọc mã vạch như ở siêu thị vậy. Bác giúp em !. cám ơn bác nhiều.

mail của Em : lyaiviet@gmail.com

spectre19
01-02-2010, 13:32
Cám ơn các bạn đã chỉ giáo.

tayngangvfp
01-02-2010, 15:48
Em đang làm 1 chương trình quản lý hàng hoá:
có 1 bang Hangnhap(mahh, tenhh, ngaynhap, soluong,...)
Giờ em muốn chương trình lọc ra cho em trong Tuần thứ I, Tuần thứ II, Tuần thứ III, Tuần thứ IV, Tuần Thứ V của một tháng bất kỳ trong 1 năm bất kỳ nào đó.
Nhưng làm hoài mà không được.

Cảm ơn mọi người nhiều lắm!


nNamNhap=2010
nThangNhap=1
nTuanNhap=[Tuan 1]
BROWSE FOR YEAR(NgayNhap)=nNamNhap AND MONTH(NgayNhap)=nThangNhap AND tuanthu(NgayNhap)=nTuanNhap

Đây là code liệt kê theo yêu cầu của bạn với giả sử là cách tính tuần (theo đoạn code ở phần trên) là: tuần được tính từ T2 ->CN. VD

T2------T3------T4------T5------T6------T7------CN------Tuần
----------------------------------1-------2-------3-------1
-4------5--------6-------7-------8-------9-------10-------2
11------12------13------14------15------16------17------3
18------19------20------21------22------23------24------4
25------26------27------28------29------30------31------5


Tuy nhiên theo câu hỏi của bạn thì m nghĩ bạn đang lọc theo tuần 7 ngày mà không quan tâm đến "thứ":
Tuần 1 từ ngày 1 đến ngày 7;
Tuần 2 từ ngày 8 đến ngày 14;
....

toikhongvao
01-02-2010, 16:13
Mình có 2 đoạn code thế này, nhưng mình không hiểu lắm. Xin giải thích giúp mình


sele 0
use temp alia sl excl
inde on nsd+dtos(ngay)+sbt tag tmp
sele 0
use ketqua alia kq excl
scan
=seek(nsd+dtos(ngay)+sbt,'sl')

mình không hiểu select 0 và index on. scan = seek ()



if empt(m.ln1+m.ln2+m.ln3+m.ln4+m.ln5)
seek kq.nsd+dtos(kq.ngay)+kq.sbt
loca while nsd+dtos(ngay)+sbt=kq.nsd+dtos(kq.ngay)+kq.sbt for trcd='W132' and tk='7'
if foun()
ln3='1'
endi
endi

if empty và local while

THX

tayngangvfp
01-02-2010, 16:47
Mình có 2 đoạn code thế này, nhưng mình không hiểu lắm. Xin giải thích giúp mình

mình không hiểu select 0 và index on. scan = seek ()


if empty và local while

THX


1.Đoạn lệnh bị thiếu. Đây là cấu trúc duyệt SCAN ... ENDSCAN
còn lệnh " =Seek(....) " là 1 cách để thực hiện tìm kiếm theo chỉ mục. Như vậy đoạn lệnh không phải là lệnh gán SCAN=SEEK(...) mà phải là
SCAN
=SEEK(.....)
.......
.......
ENDSCAN


2.IF EMPTY(......): hàm EMPTY() sẽ có giá trị .T. nếu giá trị / biến / biểu thức/ ... được kiểm tra là "Rỗng". VD nếu biểu thức đó cho kết quả là 0 (đối với số) hoặc chuỗi toàn khoảng trắng/rỗng (đối với kiểu chuỗi) thì hàm trả về .T.

loca while (chứ không phải là local) = LOCATE WHILE đây là lệnh tìm kiếm tuần tự

toikhongvao
01-02-2010, 17:33
cám ơn bạn nhiều.
Cho mình hỏi lên thực thi do progamname hình như không có điều kiện phải không ?
Ví dụ như mình có các file đặt tên là ps0101, ps0102, ps0103,...
thì người dùng chỉ cần bấm do <programname> <tên file> là nó sẽ tự lấy file chỉ định để thực hiện.

Bây giờ mình có một phát sinh thế này.
trong thư mục chính mình có nhiều thư mục phụ như ps0101,ps0102,ps0103,...
và trong mỗi thư mục phụ có 1 file dữ liệu cũng được đặt tên là ps0101, ps0102, ps0103,...(tên file giống tên thư mục)
ví dụ cây thư mục thế này:

D:\BAOCAO
ps0101
ps0101.dbf
ps0102
ps0102.dbf
ps0103
ps0103.dbf

Bây giờ đề bài yêu cầu mình viết chương trình mà khi chạy thì tự tìm file trong mỗi thư mục và chạy truy vấn rồi xuất ra file excel trong cùng thư mục + tên giống file đã chạy.
Xin giúp giùm mình. THX

tayngangvfp
01-02-2010, 17:46
cám ơn bạn nhiều.
Cho mình hỏi lên thực thi do progamname hình như không có điều kiện phải không ?
Ví dụ như mình có các file đặt tên là ps0101, ps0102, ps0103,...
thì người dùng chỉ cần bấm do <programname> <tên file> là nó sẽ tự lấy file chỉ định để thực hiện.

Bây giờ mình có một phát sinh thế này.
trong thư mục chính mình có nhiều thư mục phụ như ps0101,ps0102,ps0103,...
và trong mỗi thư mục phụ có 1 file dữ liệu cũng được đặt tên là ps0101, ps0102, ps0103,...(tên file giống tên thư mục)
ví dụ cây thư mục thế này:

D:\BAOCAO
ps0101
ps0101.dbf
ps0102
ps0102.dbf
ps0103
ps0103.dbf

Bây giờ đề bài yêu cầu mình viết chương trình mà khi chạy thì tự tìm file trong mỗi thư mục và chạy truy vấn rồi xuất ra file excel trong cùng thư mục + tên giống file đã chạy.
Xin giúp giùm mình. THX

Câu hỏi ko rõ lắm. M đâu thấy file chương trình .prg nào? hay ý bạn là truy vấn (mà truy vấn cái gì?) trên file .dbf và xuất ra file .xls (vd ps0102.dbf => ps0102.xls)

danngudien
01-02-2010, 18:32
Cái này đơn giản thôi, VD kiểm tra chuỗi s


bVN = .F. && .T. nếu chỗi có chứa TV
for i = 1 to len(s)
c = substr(s, i, 1)
if asc(c) > 128
bVN = .T. && TV
exit
endif
endfor



Cám ơn bạn nhiều nhé!

toikhongvao
01-02-2010, 22:28
Câu hỏi ko rõ lắm. M đâu thấy file chương trình .prg nào? hay ý bạn là truy vấn (mà truy vấn cái gì?) trên file .dbf và xuất ra file .xls (vd ps0102.dbf => ps0102.xls)

àh, xin lỗi bạn, mình diễn đạt ý không hay lắm. Mình không có up file lên.
Ý mình là mình viết được chương trình là khi run thì nó hiện box open file để mình chọn file .dbf là nó lấy file mình chọn để chạy.
Giờ mình muốn khi run nó lên thì nó tự động tìm đến folder mà mình đã bỏ các file .dbf và tự động lấy các file trong đó để chạy hết file này đến file khác cho đến khi hết. Và tên file .dbf được đạt tên theo dạng ps0110,ps0210,ps0310,..(2 số đầu là tháng, 2 số sau là năm)

http://www.mediafire.com/?mnyynia10ut
file này mình lụm được mà chạy báo lỗi hoài
THX
(không upfile được trên 4rum nên up đở qua hót khác)

hoangpnt349
02-02-2010, 09:09
àh, xin lỗi bạn, mình diễn đạt ý không hay lắm. Mình không có up file lên.
Ý mình là mình viết được chương trình là khi run thì nó hiện box open file để mình chọn file .dbf là nó lấy file mình chọn để chạy.
Giờ mình muốn khi run nó lên thì nó tự động tìm đến folder mà mình đã bỏ các file .dbf và tự động lấy các file trong đó để chạy hết file này đến file khác cho đến khi hết. Và tên file .dbf được đạt tên theo dạng ps0110,ps0210,ps0310,..(2 số đầu là tháng, 2 số sau là năm)

http://www.mediafire.com/?mnyynia10ut
file này mình lụm được mà chạy báo lỗi hoài
THX
(không upfile được trên 4rum nên up đở qua hót khác)

Chào bạn
Theo nội dung code bạn gởi thì hình như bạn đang làm báo cáo liên quan đến kế toán ngân hàng phải không ? Cơ quan bạn đang sử dụng Smartbank ?
Bạn liên lạc với mình qua yahoo chat: hoangpnt349
Hi vọng mình sẽ giải đáp được vài điều cho bạn.

aaa_vfp
02-02-2010, 11:31
nNamNhap=2010
nThangNhap=1
nTuanNhap=[Tuan 1]
BROWSE FOR YEAR(NgayNhap)=nNamNhap AND MONTH(NgayNhap)=nThangNhap AND tuanthu(NgayNhap)=nTuanNhap

Đây là code liệt kê theo yêu cầu của bạn với giả sử là cách tính tuần (theo đoạn code ở phần trên) là: tuần được tính từ T2 ->CN. VD

T2------T3------T4------T5------T6------T7------CN------Tuần
----------------------------------1-------2-------3-------1
-4------5--------6-------7-------8-------9-------10-------2
11------12------13------14------15------16------17------3
18------19------20------21------22------23------24------4
25------26------27------28------29------30------31------5


Tuy nhiên theo câu hỏi của bạn thì m nghĩ bạn đang lọc theo tuần 7 ngày mà không quan tâm đến "thứ":
Tuần 1 từ ngày 1 đến ngày 7;
Tuần 2 từ ngày 8 đến ngày 14;
....

Em làm được rồi. Cảm ơn anh TayNgang đã giúp đỡ nhiều!

toikhongvao
02-02-2010, 15:51
http://www.mediafire.com/?mnyynia10ut
code này chỉ chạy được 1 file giờ mình muốn cho nó chạy tự động bằng cách lưu tất cả file dữ liệu vào một thư mục mang tên '\Baocao\', file dữ liệu có dạng ps????.dbf . Chương trình chạy sẽ tìm trong thư mục và lấy file dữ liệu xử lý hết file này đến file khác cho đến hết.
Xin giúp giùm, THX

tayngangvfp
02-02-2010, 16:38
http://www.mediafire.com/?mnyynia10ut
code này chỉ chạy được 1 file giờ mình muốn cho nó chạy tự động bằng cách lưu tất cả file dữ liệu vào một thư mục mang tên '\Baocao\', file dữ liệu có dạng ps????.dbf . Chương trình chạy sẽ tìm trong thư mục và lấy file dữ liệu xử lý hết file này đến file khác cho đến hết.
Xin giúp giùm, THX

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
*-------------

aaa_vfp
03-02-2010, 08:07
Em muốn làm 1 cái form thông báo trong chương trình để nhắc người dùng Backup dữ liệu. tuỳ theo mình Setup thời gian, và cứ đến giờ đó thì nó tự động chạy lên cái from có nội dung để thông báo.

VD: Sẽ setup 1 ngày giờ nào đó trong tuần, hoặc trong tháng...

Anh Tayngang có thể giúp em cái này được không ah?
Em cam ơn!

toikhongvao
03-02-2010, 08:51
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
*-------------

Thanks, mình đã hiểu.
Cho mình hỏi là visual fox có thể lập trình theo dạng dialog box, class, procedure, function giống như lập trình C không ? nếu được thì chọn cái nào, tại mình thường chọn program rồi viết hết trên đó thành ra nó rối

Ví dụ như với code của mình đã gửi thì với tham số namthang và cn, mình có thể hiện box để người dùng nhập 2 tham số vào rồi chương trình tự động lấy tham số đó để chạy

dung_kg
03-02-2010, 09:21
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!

hoangpnt349
03-02-2010, 10:39
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!

Chào bạn,
Mình gợi ý bạn như sau:
Tạo 1 table chứa các ngày nghỉ lễ trong năm, tạo đến năm có ngaydh xa nhất.
Dùng vòng lặp để thực hiện việc update cho từng record trong table tam_vay:
select tam_vay
scan
wNgaydh = GOMONTH(ngayph, kyhan)
if cdow(wNgaydh) = "Sunday"
wNgaydh = wNgaydh + 1
do while .t.
select top 1 * from table_ngaynghile where ngaynghile=wNgaydh into cursor temp
if reccount()>0
wNgaydh = wNgaydh + 1
else
exit
endif
enddo
select tam_vay
replace ngaydh with wngaydh
endscan
Bạn có thể tối ưu hóa công việc trên bằng cách viết 1 hàm lấy ngày đáo hạn, khi đó bạn có thể dùng lệnh
replace tam_vay.ngaydh with GetNgayDH(tam_vay.ngayph,tam_vay.kyhan)
Chúc bạn thành công.