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

hongquangtn
31-05-2011, 10:20
Xin hỏi các bạn, trong chương trình khi gọi 1 from từ trình đơn để chạy, sau đó nhấn nút minbuton để form thu nhỏ lại, nếu lại gọi từ trình đơn thì làm thế nào cho form đang thu nhỏ bật trở lại như lức đàu mà không mở form mới( các form đều có tên là Form1)
thank

tayngangvfp
31-05-2011, 10:22
thank nhieu
quan trong nhat la thisform.grid1.Column1.BackColor ma minh khong tim thay

có thể thay thisform.grid1.Column1.BackColor bằng bất kỳ màu nào bạn thích

VD:
thisform.grid1.Column1.DynamicBackColor=[IIF("Tổng"$ Tên Field ở cột 1,RGB(255,0,0),RGB(255,255,0)]

hongquangtn
31-05-2011, 11:10
Cám ơn Tayngangvfp nhiều
mình cần hỏi thêm, trong Grid, các Header của mỗi Column đều có thể thay đổi Backcolor, nhưng khi chạy chương trình thì không thấy có tác dụng, vậy phải làm thế nào?
cám ơn nhiều

Character
31-05-2011, 12:43
Xin hỏi các bạn, trong chương trình khi gọi 1 from từ trình đơn để chạy, sau đó nhấn nút minbuton để form thu nhỏ lại, nếu lại gọi từ trình đơn thì làm thế nào cho form đang thu nhỏ bật trở lại như lức đàu mà không mở form mới( các form đều có tên là Form1)
thank

Gửi bạn Hongquangtn!

Muốn từ trình đơn (Menu), để gọi Form đang thu nhỏ (Minimize) trở về bình thường (Restore Up - như trước lúc thu nhỏ), Bạn tạo thêm một mục mới tại trình đơn (Menu) và thiếp lập như sau:

Tại Promp mới ví dụ đặt tên là: Restore Up
Tại Result mới bạn chọn: Command hoặc Procedure và nhập dòng lệnh :

Application.ActiveForm.WindowState=0

Chào

hongquangtn
31-05-2011, 16:50
Thanhk Character
Cái tôi muốn là khi bị thu nhỏ, ta không nhớ, nên cứ bấm vào phần gọi Form thì tự nó tìm xem đã mở chưa, nếu mở rồi thì Restore lại, tóm lại là không biết tên form đó là gì và làm thế nào để kiểm tra là nó đang thu nhỏ và Restore lại
mong được chỉ dẫn thêm

tayngangvfp
31-05-2011, 18:16
Thanhk Character
Cái tôi muốn là khi bị thu nhỏ, ta không nhớ, nên cứ bấm vào phần gọi Form thì tự nó tìm xem đã mở chưa, nếu mở rồi thì Restore lại, tóm lại là không biết tên form đó là gì và làm thế nào để kiểm tra là nó đang thu nhỏ và Restore lại
mong được chỉ dẫn thêm

Có thể dựa vào Caption của Form để thực hiện yêu cầu này=> Caption phải khác nhau giữa các Form.

Cách 1: Thêm các lệnh trên menu
Tuy nhiên cũng phải biết caption của form !!!

1. Tạo 1 proc như sau

PROCEDURE FormDangChay
PARAMETERS cCaption
lDangChay=.F.
tSoFormDangMo=_screen.FormCount
IF tSoFormDangMo>0
FOR i=1 TO tSoFormDangMo
tForm=_screen.Forms(tSoFormDangMo- i + 1)
IF UPPER(ALLTRIM(tForm.Caption))=UPPER(ALLTRIM(cCapti on))
tForm.Show()
tForm.WindowState=0
lDangChay=.T.
EXIT
ENDIF
ENDFOR
ENDIF
RETURN lDangChay
ENDPROC

2. Trong mỗi menu thêm phần kiểm tra
IF FormDangChay(,[Danh Sach Khach Hang])
*Nó se Activate lên
ELSE
DO FORM dmkhach.scx
ENDIF


Cách 2: Thêm code vào phần Load của Form để Form tự kiểm tra
=> cách này có vẻ hay hơn cách 1 !!!

1. Tạo 1 proc như sau
PROCEDURE FormDangChay
PARAMETERS cCaption,oForm
lDangChay=.F.
tSoFormDangMo=_screen.FormCount
IF tSoFormDangMo>0
FOR i=1 TO tSoFormDangMo
tForm=_screen.Forms(tSoFormDangMo- i + 1)
IF UPPER(ALLTRIM(tForm.Caption))=UPPER(ALLTRIM(cCapti on)) AND oForm<>tForm
tForm.Show()
tForm.WindowState=0
lDangChay=.T.
EXIT
ENDIF
ENDFOR
ENDIF
RETURN lDangChay
ENDPROC

2. Trong Form.Load thêm code như sau
IF FormDangChay(this.Caption,this)
RELEASE this
RETURN .F.
ENDIF


*-------------------------------

* Muốn thay đổi backcolor của header thì phải thiết lập Grid.themes=.F.

hongquangtn
01-06-2011, 10:24
Thank TayngangVFP nhieu

Character
01-06-2011, 14:53
Thanhk Character
Cái tôi muốn là khi bị thu nhỏ, ta không nhớ, nên cứ bấm vào phần gọi Form thì tự nó tìm xem đã mở chưa, nếu mở rồi thì Restore lại, tóm lại là không biết tên form đó là gì và làm thế nào để kiểm tra là nó đang thu nhỏ và Restore lại
mong được chỉ dẫn thêm

Gửi bạn Hongquangtn!
Bạn tham khảo cách này xem sao …

Muốn từ trình đơn (Menu), để gọi Form bất kể Form này chưa kích hoạt hoặc đang thu nhỏ (Minimize) trở về bình thường (Restore Up - như trước lúc thu nhỏ), Bạn viết các dòng lệnh sau tại Procedure của mỗi mục (menu) gọi thi hành Form đó.
Ví dụ Form1.scx có thuộc tính Name=[name1], tại Procedure của menu gọi Form1, viết các dòng lệnh sau:

If _Screen.FormCount>0
lRestore=.F.
For i=1 TO _Screen.FormCount
IF Lower(Allt(_Screen.Forms(i).Name))=[name1]
Application.ActiveForm.WindowState=0
lRestore=.T.
Exit
Endi
Endf
If lRestore=.F.
Do form Form1
Endi
Else
Do form Form1
Endi

Bạn viết tương tự cho các mục Procedure của Menu gọi các Form còn lại…

hongquangtn
01-06-2011, 15:02
Thank Character
minh dã làm được, cám ơn bạn đã nhiệt tình chỉ dẫn

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

Các bạn cho hỏi thêm.
Nếu một chương trình của Fox đã biên dịch ra .exe rồi, khi chạy mà bị thu nhỏ lại. Làm thế nào để khi người dùng kích hoạt chương trình thì nó không chạy chương trinh lần nữa mà Restore cái chương trình lên ( giống như phần trên nhưng thay vì Form mà là cả chương trình). Cái này hing như có đọc ở đâu rồi , bây giờ càn thì không nhớ. Mong các bạn chỉ giáo
thank very much

ngluong099
02-06-2011, 09:46
Chương trình quản lý công việc có các yêu cầu sau:
Phân công giao vệc cụ thể cho từng đơn vị, từng nhân viên, bao gồm: Nội dung công việc phải làm, thời gian yêu cầu hoàn thành ...

- Cá nhân, đơn vị được giao nhiệm vụ báo cáo kết quả thực hiện.
- Kiểm tra việc phân công, giao việc của các đơn vị cho nhân viên thực hiện trong ngày.
- Kiểm tra được kết quả thực hiện nhiệm vụ được giao của từng cá nhân, từng đơn vị.
- Tổng hợp được khối lượng công việc thực hiện của từng cá nhân trong ngày, tháng.
Ai biết đề xuất Table không chỉ tôi với.

mmo1991
03-06-2011, 19:05
tạo giúp mình form tìm kiếm với
Đề bài như sau
1 bệnh viện cần QL các thông tin:số hóa đơn,tên xét nghiệm,kiểu xét nghiệm,đơn giá,thành tiền
Kiếu xét nghiệm gồm DV và BH
Nếu là DV thì Thành tiền=đơn giá
Nếu là BH thì Thành tiền=20%xđơn giá
1.Lập bảng để QL các thông tin
2.Tạo form cho phép nhập dữ liệu vào bảng gồm các nút nhập,sửa,xóa,xem,thoát
3.Tạo form tìm kiếm,report cho phép xem thông tin từ bảng
4.Tạo form in cho phép xem DS theo từng tên xét nghiệm
Mình đã làm được câu 1,2 (trừ câu lệnh phần nút "sửa" thông tin đã nhập)
Đã tạo đc report
Hiện h đang bị bí phần tạo form tìm kiếm với form IN,nghe cô giáo nói thì form tìm kiếm với form in bài nào cũng giống bài nào nên các bác giúp e chi tiết các câu lệnh với
Sắp thi đến nơi r:(

sen_bo_hung
04-06-2011, 01:54
Các Bác cho em hỏi là trong local View thì khi mình tạo một local view hoàn chỉnh (local view này có dữ liệu). Nhưng sau đó mình cập nhật thông tin mới vào tables mà có liên quan đến view đó, chính xác hơn là có dữ liệu hiển thị trong local view đó! nhưng sao khi chạy view thì lại không có record vừa cập nhật ấy? Hay là view ko tự động liên kết được với table?
hay là do lỗi gì hả các bác? Các bác chỉ cho em với!

trunghieudeptrai
05-06-2011, 19:51
Mấy anh chị cho em hỏi cách sử dụng tập tin động trong VF.Ví dụ em có tập tin CCGTmmyyyy(CCGT_thang_nam). Em dùng câu lệnh:
CLOSE DATABASES ALL
OPEN DATABASE \...\Laodongtienluong VALIDATE
USE Laodongtienluong!CCGTmmyyy AS CCGT IN 0
Nhưng em không mở được, ai biết cách xin chỉ dùm em với, em dang làm bài mà tới đây thì không biết nữa????

hoangnnm
05-06-2011, 20:17
Mấy anh chị cho em hỏi cách sử dụng tập tin động trong VF.Ví dụ em có tập tin CCGTmmyyyy(CCGT_thang_nam). Em dùng câu lệnh:
CLOSE DATABASES ALL
OPEN DATABASE \...\Laodongtienluong VALIDATE
USE Laodongtienluong!CCGTmmyyy AS CCGT IN 0
Nhưng em không mở được, ai biết cách xin chỉ dùm em với, em dang làm bài mà tới đây thì không biết nữa????

có thể viết thế này :


private m.tblname
m.tblname = [abxyz009] && tên bảng không biết trước
Use ( m.tblname ) hoặc Use &tblname

trunghieudeptrai
06-06-2011, 07:34
Em xin cảm ơn sự góp ý của anh hoangnnm, nhưng em không hiểu cách viết của anh cho lắm. ý em là em có 2 form: 1form ChonCCGT và form ChamCongGianTiep. Trong form ChonCCGT có 2 Combobox ThangCC va NamCC, khi bấm vào nút CmdThuchien thì sẽ tạo 1 tập tin CCGT&ThangCC&NamCC.DBF và mở form ChamCongGianTiep len. Khi đó trên form ChamCongGianTIep sẽ nhập số liệu và lưu vào tập tin CCGT&ThangCC&NamCC.DBF. Nhưng em kh6ong biết cách khai báo để mở tập tin CCGT&ThangCC&NamCC lên. Có anh chị nào biết nữa xin chỉ dùm em.

Character
06-06-2011, 10:57
Mấy anh chị cho em hỏi cách sử dụng tập tin động trong VF.Ví dụ em có tập tin CCGTmmyyyy(CCGT_thang_nam). Em dùng câu lệnh:
CLOSE DATABASES ALL
OPEN DATABASE \...\Laodongtienluong VALIDATE
USE Laodongtienluong!CCGTmmyyy AS CCGT IN 0
Nhưng em không mở được, ai biết cách xin chỉ dùm em với, em dang làm bài mà tới đây thì không biết nữa????


Gửi bạn Trunghieudeptrai!

Do chưa hiểu rõ ý của Bạn nêu, Tôi tạm thời giả định và gợi ý như sau không biết có đúng ý của Bạn không? Giả định là:

nThangCC=Thisform.ThangCC.Value && (VD tháng 6, kiểu số)
nNamCC = Thisform.NamCC.Value && (VD năm 2011, kiểu số)

Bạn cần mở file DBF có tên là CCGT062011.dbf (file dữ liệu CCGT tháng 06 năm 2011). Các dòng lệnh để mở file dữ liệu này như sau:

cNameDBF=[CCGT]+Padl(Allt(Str(nThangCC)),2,[0])+Allt(Str(nNamCC))
Use (cNameDBF)

trunghieudeptrai
06-06-2011, 13:08
Cám ơn bạn Character. Cách viết của bạn mình cũng có nghĩ đến. Nhưng vấn đề là CboThang và CboNam nằm trong form FrmChonCCGT, mình thì lại cần mở tập tin CCGT&Thang&Nam trong form FrmChamconggiantiep, 2 form này hoàn toàn khác biệt, khi chọn tháng năm từ FrmCCGT xong, bấm nút thực hiện thì dóng form hiện hành và mở FrmChamconggiantiep lên. Bạn có cách nào lấy giá trị của CboThang, CboNam từ FrmChonCCGT đưa sang FrmChamconggiantiep không?

Character
06-06-2011, 16:56
Cám ơn bạn Character. Cách viết của bạn mình cũng có nghĩ đến. Nhưng vấn đề là CboThang và CboNam nằm trong form FrmChonCCGT, mình thì lại cần mở tập tin CCGT&Thang&Nam trong form FrmChamconggiantiep, 2 form này hoàn toàn khác biệt, khi chọn tháng năm từ FrmCCGT xong, bấm nút thực hiện thì dóng form hiện hành và mở FrmChamconggiantiep lên. Bạn có cách nào lấy giá trị của CboThang, CboNam từ FrmChonCCGT đưa sang FrmChamconggiantiep không?

Với mô tả trên, Tôi gợi ý như sau:

1/ Cách 1: Tạo sẵn 02 biến Public nThangCC, nNamCC (tại sự kiện Load của Form FrmCCGT.scx chẳng hạn). Khi bấm nút gọi Form FrmChamconggiantiep.scx, Form sẽ nhận giá trị 02 biến này (dùng 02 biến nThangCC, nNamCC để phục vụ việc mở tập tin).

Bạn Copy các đoạn Code này Paste vào các vị trí sau:

a/Tại sự kiện Load của Form FrmCCGT.scx, Khai báo biến:

Public nThangCC, nNamCC
nThangCC=''
nNamCC =''

b/Tại sự kiện Click của nút bấm nút của Form FrmCCGT.scx, nhập các dòng lệnh:

nThangCC=Thisform.CboThang.Value && Biến kiểu chuỗi
nNamCC = Thisform.CboNam.Value && Biến kiểu chuỗi
Thisform.Release
Do form FrmChamconggiantiep

c/Tại sự kiện Load hoặc Init của Form FrmChamconggiantiep.scx, nhập các dòng lệnh mở tập tin:

cNameDBF=[CCGT]+Padl(Allt(nThangCC),2,[0])+Allt(nNamCC)+[.dbf]
Use (cNameDBF)



2/ Cách 2: Trong sự kiện Click của nút bấm (gửi giá trị 02 biến nThangCC, nNamCC để phục vụ việc mở tập tin) với cú pháp gọi thi hành Form FrmChamconggiantiep.scx như sau:

a/Tại sự kiện Click của nút bấm nút của Form FrmCCGT.scx, nhập các dòng lệnh:

nThangCC=Thisform.CboThang.Value && Biến kiểu chuỗi
nNamCC = Thisform.CboNam.Value &&Biến kiểu chuỗi
Thisform.Release
Do form FrmChamconggiantiep With nThangCC,nNamCC

b/Tại sự kiện Load hoặc Init của Form FrmChamconggiantiep.scx, nhập các dòng lệnh mở tập tin:

Para nThangCC,nNamCC
cNameDBF=[CCGT]+Padl(Allt(nThangCC),2,[0])+Allt(nNamCC)+[.dbf]
Use (cNameDBF)

trunghieudeptrai
07-06-2011, 09:28
Mình đã thử làm giống như bạn, nhưng khi mở form FrmChamconggiantiep thì nó không tìm thấy giá trị nThang,nNam, nên báo lỗi là "Variable nThang,nNam is not found". bạn còn cách nào khác không?

Character
07-06-2011, 09:39
Mình đã thử làm giống như bạn, nhưng khi mở form FrmChamconggiantiep thì nó không tìm thấy giá trị nThang,nNam, nên báo lỗi là "Variable nThang,nNam is not found". bạn còn cách nào khác không?

Gửi bạn trunghieudeptrai.
Vấn đề của Bạn đơn giản, Bạn cho biết Email, Tôi gửi ví dụ tham khảo.

hongquangtn
07-06-2011, 10:52
Các bạn cho hỏi
Khi trong Form đã có 1 textbox và có sãn các Procedure đã viết cho nó, bây giờ làm thế nào để Add thêm các textbox mới giống như textbox đã có. Mặt khác có thể bổ xung thêm các Procedure khác được không?
xin cảm ơn nhiều

trunghieudeptrai
07-06-2011, 11:24
Uhm. Vậy bạn gửi qua dùm mình nha. Email: mr.ngth@gmail.com
Cám ơn bạn nhiều!!!

Character
07-06-2011, 11:38
Mình đã thử làm giống như bạn, nhưng khi mở form FrmChamconggiantiep thì nó không tìm thấy giá trị nThang,nNam, nên báo lỗi là "Variable nThang,nNam is not found". bạn còn cách nào khác không?

Gửi bạn trunghieudeptrai...

Bạn xem lại gợi ý bên trên, Tôi đã hướng dẫn lại cụ thể code cho cách 1 và cách 2 hoặc xem Mail tôi đã gửi.

trunghieudeptrai
07-06-2011, 13:38
Mình làm được rồi, Thank bạn nhiều nha, có vậy mà đau đầu mấy ngày nay, khổ ghê.hihihi

con.ech
08-06-2011, 09:53
Các bạn cho hỏi
Khi trong Form đã có 1 textbox và có sãn các Procedure đã viết cho nó, bây giờ làm thế nào để Add thêm các textbox mới giống như textbox đã có. Mặt khác có thể bổ xung thêm các Procedure khác được không?
xin cảm ơn nhiều

Để add 1 control vào form chỉ cần kéo và thả từ trong class vào trong form vậy là được
Muốn thêm các Method khác cho control đó thì phải làm trong class bằng cách, modify nó và vào Class/New Method...

hongquangtn
08-06-2011, 15:07
Thank con.ech
vấn đề là không phải thêm control lúc thiết kế mà Add lúc chạy chương trình.
thứ 2 là khong muốn tạo class vì nơ schỉ phục vụ mỗi việc này, nên muốn Add thêm một số Textbõ mới nhưng có chứa sẵn các Procedure cần thiết
Không biết có thực hiên được không?
mong các bạn chỉ giáo thêm
thank

tayngangvfp
09-06-2011, 09:57
Thank con.ech
vấn đề là không phải thêm control lúc thiết kế mà Add lúc chạy chương trình.
thứ 2 là khong muốn tạo class vì nơ schỉ phục vụ mỗi việc này, nên muốn Add thêm một số Textbõ mới nhưng có chứa sẵn các Procedure cần thiết
Không biết có thực hiên được không?
mong các bạn chỉ giáo thêm
thank

Add lúc nào (design/run time)cũng phải tạo class thôi.
Có thể tạo class trực quan hoặc thông qua code.

hongquangtn
09-06-2011, 10:30
Cám ơn tayngang
Bạn có thể hướng dẫn cách tạo class thông qua code cho 1 textbox co thủ tục Keypress (.. ví dụ bất kỳ) và câu lệnh đẻ Add thêm textbox này.
thank nhiều

tayngangvfp
09-06-2011, 11:58
Cám ơn tayngang
Bạn có thể hướng dẫn cách tạo class thông qua code cho 1 textbox co thủ tục Keypress (.. ví dụ bất kỳ) và câu lệnh đẻ Add thêm textbox này.
thank nhiều

Gủi bạn
http://www.mediafire.com/file/il8oxg5bxs959cl/dynamic-class.rar

hongquangtn
10-06-2011, 10:22
Thank Taynagng nhieu
Ban cho hoi them , trong chương trình đang chạy, lam thế nào đẻ biết 1 đối tượng (ví dụ Textbox) đã tồn tại để không tạo lại nữa
Thank very much

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

Xin hỏi thêm Bạn Tayngang
trong ví dụ của bạn có thuộc tính thisform.stt là ở đâu ra vậy, tìm mãi mà không thấy

tayngangvfp
10-06-2011, 15:33
Thank Taynagng nhieu
Ban cho hoi them , trong chương trình đang chạy, lam thế nào đẻ biết 1 đối tượng (ví dụ Textbox) đã tồn tại để không tạo lại nữa
Thank very much

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

Xin hỏi thêm Bạn Tayngang
trong ví dụ của bạn có thuộc tính thisform.stt là ở đâu ra vậy, tìm mãi mà không thấy


1/ IF VARTYPE(thisform.<tên control>)=[O]
*Da co
ELSE
*Chua co
ENDIF

2/Đó là 1 thuộc tính được thêm vào form

tanlahill
11-06-2011, 02:09
Nhờ các thành viên DDTH kiểm tra giúp tôi lỗi sau:

Tôi tạo một report để in sổ quỹ, sau khi chọn ngày để in hoặc in toàn bộ thì cho ra 2 kết quả trái ngược nhau:

1. Kết quả OK nếu là a hoặc b dưới đây:
a. Chỉ có một nghiệp vụ kế toán phát sinh và có số dư đầu kỳ >=0 hoặc
b. Có n>1 nghiệp vụ KT phát sinh và số dư đầu kỳ = 0

Ngược lại:

2. Nếu có n>1 nghiệp vụ kế toán phát sinh và có số dư đầu kỳ >0 kết quả số dư cuối kỳ bị sai. Trong trường hợp này số dư cuối kỳ = (n nghiệp vụ kế toán phát sinh trong kỳ)*số dư đầu kỳ + tổng phát sinh tăng trong kỳ - tổng phát sinh giảm trong kỳ.

Tôi đã gán thuộc tính field TONQUY:
- Expression: nkc.no - nkc.co + sddk
- Calculate: sum
Như vậy phép toán không hợp lý ở điểm nào ?

Theo tôi nghĩ thì field TONQUY sẽ lần lượt sum từng nghiệp vụ một theo Expression trên. Chính vì thế mà khi lọc in được n nghiệp vụ thì số dư cuối kỳ lại dư ra n-1 lần số dư đầu kỳ. Tuy nhiên, biết thế nhưng tôi thử nhiều cách nhưng vẫn không thành công!

Xin nhờ các thành viên sớm kiểm tra và tìm giải pháp giúp tôi. Chân thành cám ơn.
(Nếu có thể gởi kết quả qua email: thanhtanvfc@gmail.com bởi tôi mới tham gia diễn đàn nên chưa rành tìm bài...)

PS: Tôi Upload file nhưng không được! Các bạn có thể xem file theo đường link: http://www.dayhoctructuyen.org/attachment.php?attachmentid=5225&d=1307755448

Character
11-06-2011, 12:01
Gửi bạn Tanlahill!
Do không liên hệ được link Bạn nêu, Tôi đã gửi Email cho Bạn (kèm trả lởi câu hỏi trước), nếu cần Bạn có thể trao đổi cụ thể thêm vấn đề của Bạn.

hongquangtn
11-06-2011, 21:35
Thank Tayngang nhieu
Tôi biết đó là thuọc tính thisform.stt được thêm vào Form, tuy nhiên kể cả khi bạn thêm từ class form thì khi vào danh muc cac thuộc tính của form sẽ thấy trong list của nó, nhưng tôi không tìm thấy. mặt khác cũng không thấy add thêm từ chương trình
bạn có thể chỉ rõ hơn
thank nhiều nhiều

Character
12-06-2011, 09:25
Nhờ các thành viên DDTH kiểm tra giúp tôi lỗi sau:

Tôi tạo một report để in sổ quỹ, sau khi chọn ngày để in hoặc in toàn bộ thì cho ra 2 kết quả trái ngược nhau ...

Xin nhờ các thành viên sớm kiểm tra và tìm giải pháp giúp tôi. Chân thành cám ơn.
(Nếu có thể gởi kết quả qua email: thanhtanvfc@gmail.com bởi tôi mới tham gia diễn đàn nên chưa rành tìm bài...)

PS: Tôi Upload file nhưng không được! Các bạn có thể xem file theo đường link: http://www.dayhoctructuyen.org/attachment.php?attachmentid=5225&d=1307755448

Gửi bạn Tanlahill!
Tôi đã kiểm tra, hiệu chỉnh lại chương trình và gửi Email cho Bạn.

hongquangtn
12-06-2011, 13:56
Các bạn trả lời giúp
có cách nào kiểm tra sau khi mở Report ra đã nhấn nút in hay chưa, (vì liên quan đến in bản đầu tiên là bản gốc, còn những lần in sau là bản copy)
thank

tanlahill
12-06-2011, 17:18
Gửi bạn Tanlahill!
Tôi đã kiểm tra, hiệu chỉnh lại chương trình và gửi Email cho Bạn.

Cám ơn bạn rất nhiều.
Tôi đã check mail và thấy bạn đã tận tình giúp đỡ một cách nhanh chóng và hoàn mỹ như mong đợi, tuy nhiên kết quả tồn quỹ vẫn chưa đúng. Tôi đã reply qua mail của bạn. Xin bạn kiểm tra lại giúp. Chân thành cám ơn.

Tiện đây, xin hỏi thêm bạn cùng các thành viên trên diễn đàn giúp luôn:
Làm cách nào để khi chọn in sổ quỹ ở một khoản thời gian tuỳ ý thì chương trình tự tính toán được số dư (tính đến ngày liền kề trước ngày đầu của khoản thời gian chọn in) tiếp đến là tổng phát sinh nợ, tổng phát sinh có và số dư cuối kỳ (của khoản thời gian chọn in) rồi gán vào các vị trí đã định trong report?

hanhung87
12-06-2011, 21:48
SELECT xa, dvut, thuake, SUM(laiky) AS laiky FROM saokeck WHERE ( NOT EMPTY(dvut) AND chtrinh<>'03') OR (chtrinh='03' AND NOT EMPTY(thuake) AND NOT EMPTY(dvut)) GROUP BY thuake, dvut, xa ORDER BY xa, dvut, thuake INTO TABLE lst_thuake

SELECT xa, '99' AS dvut, chtrinh AS thuake, SUM(laiky) AS laiky FROM saokeck WHERE EMPTY(dvut) OR (chtrinh='03' AND EMPTY(thuake)) GROUP BY xa, chtrinh ORDER BY xa, chtrinh INTO TABLE lst_chtr

SELECT SPACE(6) AS stt, a.*, b.laiky FROM lst_tmp1 a LEFT JOIN lst_thuake b ON a.thuake=b.thuake AND a.dvut=b.dvut AND a.xa=b.xa INTO TABLE lst_thuake1

INSERT INTO lst_thuake1 SELECT SPACE(6) AS stt, a.*, b.laiky FROM lst_tmp2 a LEFT JOIN lst_chtr b ON a.thuake=b.thuake .AND. a.xa=b.xa

SELECT * FROM lst_thuake1 ORDER BY xa, dvut, tenthke INTO TABLE temp1


hix, ở đây có 5 dòng lệnh, ai giúp em giải thích các dòng lệnh với. em chảng hiểu ntn cả, khó quá cái lệnh SELECT với INSERT INTO là ntn

TrangHoa73
13-06-2011, 11:55
Các bác cho em hỏi. Cách viết code hoặc đặc thuộc tính như thế nào để khi
class toolbar xuất hiện trên giao diện phần mềm thì mất titlebar đi.Để class này như toolbar của giao diện ấy. Em mới học fox nên chưa biết nhờ các bác chỉ giúp!

luu_luu
13-06-2011, 16:25
Các bác cho em hỏi. Cách viết code hoặc đặc thuộc tính như thế nào để khi
class toolbar xuất hiện trên giao diện phần mềm thì mất titlebar đi.Để class này như toolbar của giao diện ấy. Em mới học fox nên chưa biết nhờ các bác chỉ giúp!

bạn chỉ cần khai bào như bên dưới
thisform.titlebar=0

TrangHoa73
13-06-2011, 21:03
bạn chỉ cần khai bào như bên dưới
thisform.titlebar=0
Bạn chỉ cụ thể hơn gúp mình nhé. Mình dùng formset trong đó có nhiều form và class toolbar.Vậy mình viết code trên ở đâu formset hay một form bất kỳ hay ở class toolbar. Sao mình làm chưa được.

xuperman
13-06-2011, 21:11
Chời ơi chán quá đi, mình đâu có được học cái foxpro này mà đi làm toàn gặp nó ko à, đọc hết 103 trang này chắc đui quá má ơi.

luu_luu
14-06-2011, 07:13
Bạn chỉ cụ thể hơn gúp mình nhé. Mình dùng formset trong đó có nhiều form và class toolbar.Vậy mình viết code trên ở đâu formset hay một form bất kỳ hay ở class toolbar. Sao mình làm chưa được.

muốn tắt titlebar form nào thì code cho form đó.
code tại => INIT EVENT

ngluong099
14-06-2011, 08:52
ai biết cách tạo một form liên kết combo và grid không

robertquy
15-06-2011, 16:41
Hi All!
Mình có sẵn 1 file word về thông tin hợp đồng, trong đó có 1 số thông tin động muốn xuất từ Fox sang.
Làm thế nào để mình có thể xuất từ Fox sang MS word vào 1 file word có sẵn, vào vị trí mà mình muốn xuất.
Bác nào biết giúp mình với nhé!

ngluong099
16-06-2011, 13:17
mình có 1 table nhân viên như sau:
NHANVIEN(MANV,HOTEN,NGAYSINH,NOISINH,DIACHI,SDT,MA PB)
mình muốn tạo 1 Local Views lấy những nhân viên có MAPB là CNTT thì mình dùng lệnh gì ai biết không

tayngangvfp
16-06-2011, 14:51
Hi All!
Mình có sẵn 1 file word về thông tin hợp đồng, trong đó có 1 số thông tin động muốn xuất từ Fox sang.
Làm thế nào để mình có thể xuất từ Fox sang MS word vào 1 file word có sẵn, vào vị trí mà mình muốn xuất.
Bác nào biết giúp mình với nhé!

Bạn thử dùng Mailmerge xem.
http://vn.360plus.yahoo.com/tayngangvfp/article?mid=126



@ngluong099

ai biết cách tạo một form liên kết combo và grid không


mình có 1 table nhân viên như sau:
NHANVIEN(MANV,HOTEN,NGAYSINH,NOISINH,DIACHI,SDT,MA PB)
mình muốn tạo 1 Local Views lấy những nhân viên có MAPB là CNTT thì mình dùng lệnh gì ai biết không

Bạn hỏi như vậy chắc chẳng có ai biết đâu!

tanlahill
19-06-2011, 10:27
Nhờ các thành viên DDTH giúp tôi mấy việc sau:
1. Về Combo box: Làm thế nào để:
+ Khi mới mở form ra thì combo box đã có được thông tin đầu tiên của list nguồn?
+ Làm mất đi cái mũi tên trong combo và hiện ra khi setfocus?
2. Về optiongroup: Giả sử tôi có 2 Optiongroup(Opg): OPg1 và Opg2 (cho Opg2.Enabled=.F.); trong Opg1 có 4 option(O)là O1,O2,O3 và O4.
Làm cách nào để khi chọn O4 thì Opg2.Enabled=.T. còn chọn các O1 hoặc O2 hoặc O3 thì Opg2.Enabled=.F.?
Rất mong sớm được giúp đỡ.
Chân thành cám ơn.

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

Tôi viết đoạn code sau để chuyển dữ liệu sang Excel
"...
count to soluong
copy to c:\dulieu\kh FIELDS ten,dc,dt,cm,ngay,nc TYPE XLS
MESSAGEBOX('Có '+ALLTRIM(str(soluong))+'thông tin yêu cầu đã được kết chuyển!',64,'Thông báo')
..."
Nhưng khi mở file vừa kết chuyển sang để chỉnh sửa và khi lưu lại thì bị Excel thông báo: "kh.xls is a Microsoft Excel 2.1 (Excel 5.0/95 Nếu TYPE XL5) worksheet. Do you want to overwrite it with the lastest Excel format?"
Như vậy phải thay cái TYPE XLS/XL5 bằng cái TYPE gì để không phải bị hỏi? (Mặc dù Yes cũng không ảnh hưởng gì đến dữ liệu nhưng khắc phục được cũng đỡ phiền!)
Nhờ các thành viên DDTH sớm giúp tôi.
Chân thành cám ơn.

con.ech
19-06-2011, 19:25
Nhờ các thành viên DDTH giúp tôi mấy việc sau:
1. Về Combo box: Làm thế nào để:
+ Khi mới mở form ra thì combo box đã có được thông tin đầu tiên của list nguồn?
+ Làm mất đi cái mũi tên trong combo và hiện ra khi setfocus?
2. Về optiongroup: Giả sử tôi có 2 Optiongroup(Opg): OPg1 và Opg2 (cho Opg2.Enabled=.F.); trong Opg1 có 4 option(O)là O1,O2,O3 và O4.
Làm cách nào để khi chọn O4 thì Opg2.Enabled=.T. còn chọn các O1 hoặc O2 hoặc O3 thì Opg2.Enabled=.F.?
Rất mong sớm được giúp đỡ.
Chân thành cám ơn.

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

Tôi viết đoạn code sau để chuyển dữ liệu sang Excel
"...
count to soluong
copy to c:\dulieu\kh FIELDS ten,dc,dt,cm,ngay,nc TYPE XLS
MESSAGEBOX('Có '+ALLTRIM(str(soluong))+'thông tin yêu cầu đã được kết chuyển!',64,'Thông báo')
..."
Nhưng khi mở file vừa kết chuyển sang để chỉnh sửa và khi lưu lại thì bị Excel thông báo: "kh.xls is a Microsoft Excel 2.1 (Excel 5.0/95 Nếu TYPE XL5) worksheet. Do you want to overwrite it with the lastest Excel format?"
Như vậy phải thay cái TYPE XLS/XL5 bằng cái TYPE gì để không phải bị hỏi? (Mặc dù Yes cũng không ảnh hưởng gì đến dữ liệu nhưng khắc phục được cũng đỡ phiền!)
Nhờ các thành viên DDTH sớm giúp tôi.
Chân thành cám ơn.

1. Combobox
- Nếu List nguồn là view, table, cursor thì:
Rowsource = (Tên view, table, cursor )
RowsourceType = 0
- Nếu List nguồn của bạn là Value thì:
Rowsource = (value1,value2,...)
RowsourceType = 1
- Nếu List nguồn là câu lệnh SQL thì:
Rowsource = (câu lệnh SQL)
RowsourceType = 3
- Còn vụ mất đi cái mũi tên của combo: Nếu đặt nó trên form thì ko có thuộc tính nào làm mất nó đi cả (Mà cũng chẳng ai để combo như thế), còn nếu cứ muốn thế thì vẽ 1 cái Shape lên chỗ mũi tên ấy và đặt visible = .F. khi nào Combo SetFocus, đến lúc LostFocus thì Visible = .T.
2. OptionGroup:
- Trong sự kiện Click của Option1,Option2,Option3
Thisform.Opg2.Enabled=.F.
- Trong sự kiện Click của Option4
Thisform.Opg2.Enabled=.T.
3. Kết xuất Excel: Theo mình, bạn sẽ không dùng COPY TO mà hãy viết 1 đoạn code thực hiện việc kết xuất đó sẽ tốt hơn, bạn có thể tùy ý điều chỉnh file excel của bạn (lề, trang giấy, tiêu đề, font chữ...) và tất nhiên sẽ không có lỗi của bạn đã gặp
*-- Code Tham khao:
loWorkBooks = GETOBJECT('','EXCEL.APPLICATION')
loExcelOLE= loWorkBooks.APPLICATION
loExcelOLE.VISIBLE = .T.
loExcelOLE.WorkBooks.Add()
loSheet = loExcelOLE.ActiveSheet
loSheet.Name = "Sheet1"
*!* Tao du lieu ban dau
*!* CREATE CURSOR Khachhang(ten N(2), dc C(100))
*!* FOR i=1 TO 10
*!* INSERT INTO Khachhang(ten,dc) VALUES (i,"Dia chi A" + STR(i))
*!* NEXT
SELECT Khachhang
lnRow = 1
SCAN
loSheet.Cells(lnRow,1).VALUE = Khachhang.ten
loSheet.Cells(lnRow,2).VALUE = Khachhang.dc
*.... Neu co bao nhieu cot thi bay nhieu dong gan Value nhu the nay
lnRow = lnRow + 1
ENDSCAN
*-- End of coding

robotfpt
20-06-2011, 08:23
Tôi viết đoạn code sau để chuyển dữ liệu sang Excel
"...
count to soluong
copy to c:\dulieu\kh FIELDS ten,dc,dt,cm,ngay,nc TYPE XLS
MESSAGEBOX('Có '+ALLTRIM(str(soluong))+'thông tin yêu cầu đã được kết chuyển!',64,'Thông báo')
..."
Nhưng khi mở file vừa kết chuyển sang để chỉnh sửa và khi lưu lại thì bị Excel thông báo: "kh.xls is a Microsoft Excel 2.1 (Excel 5.0/95 Nếu TYPE XL5) worksheet. Do you want to overwrite it with the lastest Excel format?"
Như vậy phải thay cái TYPE XLS/XL5 bằng cái TYPE gì để không phải bị hỏi? (Mặc dù Yes cũng không ảnh hưởng gì đến dữ liệu nhưng khắc phục được cũng đỡ phiền!)
Nhờ các thành viên DDTH sớm giúp tôi.
Chân thành cám ơn.
Bạn dùng lệnh SET SAFETY OFF trước khi sử dụng

TrangHoa73
20-06-2011, 09:27
Mình có 1 form dữ liệu xuất ra reports.Mình muốn thay đổi vị trí các nội dung trên reports thông qua form mà không qua Modify report thì mình phải thiết kế làm sao. Nhờ các bác hướng dẫn giúp.

tayngangvfp
20-06-2011, 16:05
Mình có 1 form dữ liệu xuất ra reports.Mình muốn thay đổi vị trí các nội dung trên reports thông qua form mà không qua Modify report thì mình phải thiết kế làm sao. Nhờ các bác hướng dẫn giúp.

Bạn có thể tự viết 1 module để thực hiện tạo report động (tương tự như modify report), nhưng sẽ rất là khó!

Bạn tham khảo vài link dưới đây xem có giúp gì được ko
http://www.foxite.com/articles/read.aspx?id=74&document=reporting-on-the-fly
http://www.report-sculptor.com/
http://www.report-sculptor.com/downloads/downloads

TrangHoa73
20-06-2011, 20:21
Bạn có thể tự viết 1 module để thực hiện tạo report động (tương tự như modify report), nhưng sẽ rất là khó!

Bạn tham khảo vài link dưới đây xem có giúp gì được ko
http://www.foxite.com/articles/read.aspx?id=74&document=reporting-on-the-fly
http://www.report-sculptor.com/
http://www.report-sculptor.com/downloads/downloads

Cám ơn anh TayngangVFP. Anh cho em hỏi thêm em đã thiết kế 1 form để điều chỉnh vị trí nội dung trong report. Nhưng ở chương trình soạn thảo Project thì hệ thống chạy bình thường. Nhưng nếu dịch ra .exe thì máy báo lỗi: "Cannot update the cursor reporin ,since it is read-only." Mong anh hướng dẫn giúp cách khắc phục.

tayngangvfp
21-06-2011, 08:59
Cám ơn anh TayngangVFP. Anh cho em hỏi thêm em đã thiết kế 1 form để điều chỉnh vị trí nội dung trong report. Nhưng ở chương trình soạn thảo Project thì hệ thống chạy bình thường. Nhưng nếu dịch ra .exe thì máy báo lỗi: "Cannot update the cursor reporin ,since it is read-only." Mong anh hướng dẫn giúp cách khắc phục.

Nếu ta chọn các file .frx Include thì khi buil VFP sẽ nhúng các file đó vào trong file .exe luôn => sẽ xuất hiện lỗi "Cannot update the cursor reporin ,since it is read-only" khi làm như trên !

Để khắc phục ta có thể:
1/ Chọn Exclude (làm cách này thì phải kèm theo các file .frx, frt khi phân phối ứng dụng): bấm phải vào file report và chọn Exclude
2/Hoặc copy file .frx, .frt ra 1 thư mục tạm và thực hiện điều chỉnh và in ấn trên file đó.

ngluong099
21-06-2011, 13:07
có 2 table
NHANVIEN(MANV.HOTEN,NAMSINH,GIOITINH,MAPB)
PHONGBAN(MAPB,TENPB)
CẦN TẠO 1 FORM
CÓ COMBO1 LÀ CHỌN MAPB
CÓ GRID1 LÀ CÁC TRƯỜNG MANV,HOTEN,NAMSINH
KHI CHỌN COMBO1 MAPB THÌ GRID SẼ HIỆN TÊN NHỮNG NGƯỜI THUỘC PHÒNG BAN ĐÓ

TrangHoa73
22-06-2011, 05:26
Cám ơn anh TayngangVFP nhiều. Em làm được rồi.

tanlahill
22-06-2011, 08:36
Bạn dùng lệnh SET SAFETY OFF trước khi sử dụng

Cám ơn bạn, nhưng trong file chương trình chính tôi có dùng SET SAFETY OFF lẽ ra nó phải có tác dụng trên tất cả các form nhưng lại không! Tôi thấy các SET khác của chương trình chính như SET DATE FRENCH, SET CENT ON, SET SEPARATOR TO[.] và ... thì đều có tác dụng trên tất cả các form cũng như report. Vậy có phải SET SAFETY OFF trên form nữa không?

Lão Trư
22-06-2011, 12:19
Nhờ các thành viên DDTH giúp tôi mấy việc sau:

... khi mở file vừa kết chuyển sang để chỉnh sửa và khi lưu lại thì bị Excel thông báo: "kh.xls is a Microsoft Excel 2.1 (Excel 5.0/95 Nếu TYPE XL5) worksheet. Do you want to overwrite it with the lastest Excel format?"
Như vậy phải thay cái TYPE XLS/XL5 bằng cái TYPE gì để không phải bị hỏi?
...
Nhờ các thành viên DDTH sớm giúp tôi.
Chân thành cám ơn.

Gửi tanlahill!

Trường hợp của bạn, nếu dùng câu lệnh copy to c:\dulieu\kh FIELDS ten,dc,dt,cm,ngay,nc TYPE XLS thì VFP kết chuyển dữ liệu ra ứng dụng Excel theo phiên bản cũ (ngầm định), không tương thích phiên bản Excel đang dùng trong máy tính của Bạn, nên khi Bạn mở file Excel vừa kết chuyển chỉnh sửa và lưu lại thì có thông báo trên.
Muốn tránh thông báo trên, Bạn phải viết đoạn Code để kết chuyển dữ liệu ra file XLS thuộc ứng dụng Excel hiện đang dùng thay cho câu lệnh trước thì sẽ không có thông báo trên.

Gửi Ngluong099!

Bạn nên xem, sửa lại cách đặt câu hỏi (chưa đầy đủ) của mình để nhanh chóng nhận được sự giúp đỡ của các bạn trên DDTH. Bạn mở Email của Bạn để xem, Tôi đã gửi ví dụ tham khảo (kèm file Dsnhanvien.rar) cho Bạn.

tanlahill
22-06-2011, 15:11
Gửi tanlahill!

Trường hợp của bạn, nếu dùng câu lệnh copy to c:\dulieu\kh FIELDS ten,dc,dt,cm,ngay,nc TYPE XLS thì VFP kết chuyển dữ liệu ra ứng dụng Excel theo phiên bản cũ (ngầm định), không tương thích phiên bản Excel đang dùng trong máy tính của Bạn, nên khi Bạn mở file Excel vừa kết chuyển chỉnh sửa và lưu lại thì có thông báo trên.
Muốn tránh thông báo trên, Bạn phải viết đoạn Code để kết chuyển dữ liệu ra file XLS thuộc ứng dụng Excel hiện đang dùng thay cho câu lệnh trước thì sẽ không có thông báo trên.



Cám ơn "Lão Trư" nhiều lắm, nhưng tôi không biết viết code thế nào cả thôi đành để vậy xài tạm. Hôm nào có dịp bạn chỉ giúp nhé. Một lần nữa, chân thành cám ơn bạn.

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

Gửi bác TayNgangVfp

Em có tải cái printpreview của bác về và kết nối vào chương trình của em, trong cửa sổ Project Manager thì chạy tốt (Chương trình được gán vào nút lệnh in trên form) nhưng khi build *.exe (Form không chọn làm set main) thì không chạy được! Nhờ bác chỉ hộ em với.

Tiện đây xin bác chỉnh sửa giúp chương trình printpreview của bác để làm sao ứng dụng được cho tất cả các form có nhu cầu Preview!

Cám ơn bác rất nhiều.
Thân chào và hẹn sớm gặp lại.

PS: Sao không Attach được file lên diễn đàn! Nhờ mọi người chỉ giúp. Cám ơn.

ngluong099
23-06-2011, 08:24
Gmail của mình: nhluongit@gmail.com
cám ơn bạn nha mình sẽ chú ý vấn đề đặt câu hỏi.

emgaivfp
23-06-2011, 10:49
Chào mọi người.

1. Cho mình hỏi có cách nào lấy địa chỉ IP của máy tính từ VFP9? (địa chỉ IP này để kết nối trên internet).
2. Có cách nào lấy tên "Computer name" của máy tính bằng VFP9?.

Mình xin cảm ơn trước.

dinhhoa_8x
23-06-2011, 11:33
Em đang cần học Visual Foxpro cấp tốc, có bác nào tay nghề khá dạy em mấy buổi, em chỉ học cơ bản thôi, ko cần cao siêu quá, lệ phí thương lượng. Em ở Hà Nội.
nick em: dinhhoa_yn
Thanks mọi người đã quan tâm!

luu_luu
23-06-2011, 13:44
Chào mọi người.

1. Cho mình hỏi có cách nào lấy địa chỉ IP của máy tính từ VFP9? (địa chỉ IP này để kết nối trên internet).
2. Có cách nào lấy tên "Computer name" của máy tính bằng VFP9?.

Mình xin cảm ơn trước.

1. thì mình không biết.
2. ở command window đánh lệnh: ?sys(0)=>tên máy - tên người dùng

hoangnnm
23-06-2011, 14:31
Chào mọi người.

1. Cho mình hỏi có cách nào lấy địa chỉ IP của máy tính từ VFP9? (địa chỉ IP này để kết nối trên internet).
2. Có cách nào lấy tên "Computer name" của máy tính bằng VFP9?.

Mình xin cảm ơn trước.

Nguồn :
- Code : http://fox.wikis.com/wc.dll?Wiki~ReadUrl
- Ip :
+ www.whatismyip.com/faq/automation.asp
+ http://automation.whatismyip.com/n09230945.asp



* readurl.prg 06-Mar-98

* 06-Mar-98 pulled from Q174524 on March 98 Technet CD
* 06-Mar-98 bug fixed about the length of the sReadBuffer

*Any Internet or intranet URL can be passed as a parameter. Microsoft.com
*was chosen for this example.

*Note that Microsoft Internet Explorer must be installed on the computer.

* passed: URLName, in the form "http://www.microsoft.com"
*
* returns: the content of the URL
*
* usage:
*
* uWebContent = ReadURL( "http://www.microsoft.com" )
* uWebContent = ReadURL( "http://www.SomeSite.com/SomeJPG.jpg" )
* This next one provides feedback on the download every 4092 bytes:
* uWebContent = ReadURL( "http://www.SomeSite.com/SomeBigFile.exe",
* "GiveFeedback(lcBytesRead,llOK)", 4092 )
*
* notes:
* 1 - IE does not need to be running to use this, but must be installed
uWebContent = ReadURL( "http://automation.whatismyip.com/n09230945.asp" )
wait wind uWebContent

Procedure ReadURL
LPARAMETERS pcUrlName, pcOptFeedback, pnOptBuffSize, pcOptOutputFile
* These parameters are No good, pcOptOutputBuffer, pcOptOutputWhole
* because once they're passed as parameters, the original names get hidden, so the
* feedback function can't reference them that way, anyway.
*May 27, 03: Loader v1.01: Added parameter "pcOptOutputFile" to be able to download
* files bigger than 16MB

DECLARE INTEGER InternetOpen IN wininet.DLL STRING sAgent, ;
INTEGER lAccessType, STRING sProxyName, ;
STRING sProxyBypass, INTEGER lFlags

DECLARE INTEGER InternetOpenUrl IN wininet.DLL ;
INTEGER hInternetSession, STRING sUrl, STRING sHeaders, ;
INTEGER lHeadersLength, INTEGER lFlags, INTEGER lContext

DECLARE INTEGER InternetReadFile IN wininet.DLL INTEGER hfile, ;
STRING @sBuffer, INTEGER lNumberofBytesToRead, INTEGER @lBytesRead

DECLARE short InternetCloseHandle IN wininet.DLL INTEGER hInst

#DEFINE INTERNET_OPEN_TYPE_PRECONFIG 0
#DEFINE INTERNET_OPEN_TYPE_DIRECT 1
#DEFINE INTERNET_OPEN_TYPE_PROXY 3
#DEFINE SYNCHRONOUS 0
#DEFINE INTERNET_FLAG_RELOAD 2147483648

LOCAL lcAgent, lhInternetSession, lhUrlFile, llOk, lnOk, lcRetVal, lcReadBuffer, lnBytesRead, laDr[1], llCancel

if vartype(pcOptFeedback)='C'
* if we're given a feedback function, make sure it has both parentheses (looks like a function)
if not ( at('(',pcOptFeedback)>0 and (at('(',pcOptFeedback) < at(')',pcOptFeedback) ) )
pcOptFeedback = .f.
endif
endif

* what application is using Internet services?
lcAgent = "VFP"

lhInternetSession = InternetOpen( lcAgent, INTERNET_OPEN_TYPE_PRECONFIG, '', '', SYNCHRONOUS )

IF lhInternetSession = 0
WAIT WINDOW "Internet session cannot be established" TIME 2
RETURN .null.
ENDIF

lhUrlFile = InternetOpenUrl( lhInternetSession, pcUrlName, '', 0, INTERNET_FLAG_RELOAD, 0 )

IF lhUrlFile = 0
* URL cannot be opened
RETURN .null.
ENDIF

lcRetVal = ""
llOk = .t.
llCancel = .F.
lnTotalBytesRead = 0
lnBytesRead = 0
lcReadBuffer = ''
if VarType(pcOptFeedback)='C' && Call the feedback at the zero mark
=&pcOptFeedback
endif

* Clear output file, if it exists.
if type('pcOptOutputFile')='C' and ADIR(laDr,pcOptOutputFile)>0
DELETE FILE (pcOptOutputFile)
endif

DO WHILE llOK and NOT llCancel
* set aside a big buffer
lcReadBuffer = SPACE(iif(VarType(pnOptBuffSize)='N',pnOptBuffSize ,32767))
lnBytesRead = 0
lnOK = InternetReadFile( lhUrlFile, @lcReadBuffer, LEN(lcReadBuffer), @lnBytesRead)

lnTotalBytesRead = lnTotalBytesRead + lnBytesRead

if ( lnBytesRead > 0 )
if type('pcOptOutputFile')='C'
StrToFile(left(lcReadBuffer,lnBytesRead),pcOptOutp utFile,.T.) && Add to file.
else
lcRetVal = lcRetVal + left( lcReadBuffer, lnBytesRead )
endif
endif

*!* if vartype(pcOptOutputBuffer)='C'
*!* pcOptOutputBuffer = left( lcReadBuffer, lnBytesRead )
*!* endif
*!* if vartype(pcOptOutputWhole)='C'
*!* pcOptOutputWhole = lcRetVal
*!* endif

* error trap - either a read failure or read past eof()
llOk = ( lnOK = 1 ) and ( lnBytesRead > 0 )

if vartype(pcOptFeedback)='C'
if not &pcOptFeedback
llCancel = .T.
endif
endif
ENDDO

* close all the handles we opened
InternetCloseHandle( lhUrlFile )
InternetCloseHandle( lhInternetSession )

* IF saving to file, return Success status.
if type('pcOptOutputFile')='C'
RETURN NOT llCancel
endif
* return the URL contents
RETURN lcRetVal

tanlahill
24-06-2011, 21:04
Giả sử tôi có 1 grid không có RecordSource được dùng để nhập dữ liệu trực tiếp trên grid đó. Trong grid có các cột (mavt, tenvt, quycach, dvt, soluong, dongia, thanhtien).

Làm thế nào để:
1. khi nhập xong mavt và đúng với mavt trong dmvt.dbf thì trong grid (tenvt, quycach, dvt) = (tenvt, quycach, dvt) trong dmvt.dbf
2. Khi nhập thông tin ở cột soluong hoặc dongia xong thì cột thanhtien = soluong*dongia (cột thành tiền tự động tính toán)

Nhờ các thành viên DDTH sớm giúp tôi với.
Chân thành cám ơn.

tayngangvfp
25-06-2011, 11:08
@tanlahill

CÁch copy DBF ra File Excel theo phiên bản hiện hành đang dùng trong máy.
*----------------
PROCEDURE DBF2XLS
PARAMETERS cDBF,cXLS
PRIVATE oldSelect,cTenFileTam


oldSelect=SELECT()
SELECT 0
IF VARTYPE(cDBF)<>[C]
cDBF=GETFILE([dbf])
ENDIF

IF VARTYPE(cXLS)<>[C]
cXLS=PUTFILE([XLS])
ENDIF

USE [&cDBF]

cTenFileTam=ADDBS(SYS(2023))+SYS(2015)+[.xls]
COPY TO [&cTenFileTam] TYPE XLS

xlNormal= -4143
FileFormat=xlNormal
oExcel=CREATEOBJECT([Excel.Application])
oExcel.Workbooks.Open([&cTenFileTam])
oExcel.ActiveWorkbook.SaveAs([&cXLS],FileFormat)
oExcel.Quit
Delete File [&cTenFileTam]
SELECT(oldSelect)
ENDPROC
*-------------------




-Bạn mô tả kỹ hơn "không chạy được" là sao?

[QUOTE=tanlahill;2901663]Giả sử tôi có 1 grid không có RecordSource được dùng để nhập dữ liệu trực tiếp trên grid đó. Trong grid có các cột (mavt, tenvt, quycach, dvt, soluong, dongia, thanhtien).

Làm thế nào để:
1. khi nhập xong mavt và đúng với mavt trong dmvt.dbf thì trong grid (tenvt, quycach, dvt) = (tenvt, quycach, dvt) trong dmvt.dbf
2. Khi nhập thông tin ở cột soluong hoặc dongia xong thì cột thanhtien = soluong*dongia (cột thành tiền tự động tính toán)

Nhờ các thành viên DDTH sớm giúp tôi với.
Chân thành cám ơn.

1/Có nhiều cách làm:
-Dùng set ralation theo MaVT
-Hoặc viết code để mỗi khi nhập xong MaVT sẽ tìm kiếm các giá trị tương ứng đó trong DMVT để điền vào Grid (Controlsource)
2/Trong cột ThanhTien, gán contrlsource là soluong*dongia

tanlahill
26-06-2011, 09:25
@tanlahill

CÁch copy DBF ra File Excel theo phiên bản hiện hành đang dùng trong máy.
*----------------
PROCEDURE DBF2XLS
PARAMETERS cDBF,cXLS
PRIVATE oldSelect,cTenFileTam


oldSelect=SELECT()
SELECT 0
IF VARTYPE(cDBF)<>[C]
cDBF=GETFILE([dbf])
ENDIF

IF VARTYPE(cXLS)<>[C]
cXLS=PUTFILE([XLS])
ENDIF

USE [&cDBF]

cTenFileTam=ADDBS(SYS(2023))+SYS(2015)+[.xls]
COPY TO [&cTenFileTam] TYPE XLS

xlNormal= -4143
FileFormat=xlNormal
oExcel=CREATEOBJECT([Excel.Application])
oExcel.Workbooks.Open([&cTenFileTam])
oExcel.ActiveWorkbook.SaveAs([&cXLS],FileFormat)
oExcel.Quit
Delete File [&cTenFileTam]
SELECT(oldSelect)
ENDPROC
*-------------------



-Bạn mô tả kỹ hơn "không chạy được" là sao?



1/Có nhiều cách làm:
-Dùng set ralation theo MaVT
-Hoặc viết code để mỗi khi nhập xong MaVT sẽ tìm kiếm các giá trị tương ứng đó trong DMVT để điền vào Grid (Controlsource)
2/Trong cột ThanhTien, gán contrlsource là soluong*dongia

Chào bạn tayngangvfp,
Cám ơn bạn nhiều lắm, tuy nhiên kiến thức về vfp của mình cũng sơ cấp (mới làm quen vfp qua DĐTH tròn 1 tháng nay thôi) nên 1/... không hiểu gì cả! Còn 2/... thì OK rồi; 2/..., thật là đơn giản thế nhưng không biết lại cả một vấn đề nan giải quá! phải không bạn?
Bạn tayngangvfp thân mến,
Tôi gởi lên diễn đàn TH một số yêu cầu nhờ giúp đỡ nhưng kết quả nhận được vẫn chưa đúng yêu cầu! Theo tôi nghĩ có lẽ cũng hơi khó cho các bạn đễ đọc hiểu được ý của một người mà chưa biết về vfp cho lắm trong khi không có được file để phụ họa! Nhưng rất tiếc tôi không attach được file lên diễn đàn.
Vừa rồi tôi gởi mail có kèm theo file cho một vài bạn trên diễn đàn và đã nhận được kết quả như mong muốn. Riêng về cái xuất vật tư tôi thấy trong thiết kê trong file của bạn giống như ý tưởng của tôi nhưng không áp dụng được bởi bạn viết SQL tôi không hiểu gì cả! Bạn có thể cho tôi xin cái địa chỉ mail của bạn để tôi gởi file bạn xem sao nhé!
Cám ơn bạn rất nhiều.
Rất mong sự hỗ trợ từ bạn.
Chúc bạn luôn khỏe và thành đạt.
Thân chào và hẹn sớm gặp lại.
PS: Email của mình: thanhtanvfc@gmail.com

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

Xin chào mọi người,
Cho mình hỏi bạn 1 điều là mình có một form cập nhật phiếu chi (data nguồn pc.dbf), trên form có 2 combo fma và ftk (dùng để lọc mã người nhận tiền và mã tài khoản đối ứng)
Làm thế nào để lọc được dữ liệu với 2 điều kiện fma và ftk (Có thể gán sự kiện đó vào ftk.lostfocus)
Ví dụ: Chỉ lọc ra những nhân viên A (fma) có tạm ứng tiền (ftk), còn nhân viên A mua vật tư hay nhận lương v.v... thì bỏ qua.
Mong các thành viên xem và trợ giúp.
Chân thành cám ơn.

Character
26-06-2011, 11:45
...
Xin chào mọi người,
Cho mình hỏi bạn 1 điều là mình có một form cập nhật phiếu chi (data nguồn pc.dbf), trên form có 2 combo fma và ftk (dùng để lọc mã người nhận tiền và mã tài khoản đối ứng)
Làm thế nào để lọc được dữ liệu với 2 điều kiện fma và ftk (Có thể gán sự kiện đó vào ftk.lostfocus)
Ví dụ: Chỉ lọc ra những nhân viên A (fma) có tạm ứng tiền (ftk), còn nhân viên A mua vật tư hay nhận lương v.v... thì bỏ qua.
Mong các thành viên xem và trợ giúp.
Chân thành cám ơn.

Gửi bạn Tanlahill

Ví dụ Bạn có Combo1 thể hiện mã nhân viên (field manv thuộc pc.dbf, Combo2 thể hiện tài khoản đối ứng (field TK). Code viết tại sự kiện InteractiveChange (hoặc Valid hoặc Lostfocus) của Combo2 tài khoản đối ứng (ftk) là:


Sele PC
If Empt(This.Value)
Set filt to Allt(Lower(Thisform.Combo1.Value))= Allt(Lower(Manv))
Else
Set filt to Allt(Lower(Thisform.Combo1.Value))=Allt(Lower(Manv )) ;
and Allt(Lower(TK))=Allt(Lower(This.Value))
Endi

Chào Bạn

tanlahill
26-06-2011, 16:03
Gửi bạn Tanlahill

Ví dụ Bạn có Combo1 thể hiện mã nhân viên (field manv thuộc pc.dbf, Combo2 thể hiện tài khoản đối ứng (field TK). Code viết tại sự kiện InteractiveChange (hoặc Valid hoặc Lostfocus) của Combo2 tài khoản đối ứng (ftk) là:


Sele PC
If Empt(This.Value)
Set filt to Allt(Lower(Thisform.Combo1.Value))= Allt(Lower(Manv))
Else
Set filt to Allt(Lower(Thisform.Combo1.Value))=Allt(Lower(Manv )) ;
and Allt(Lower(TK))=Allt(Lower(This.Value))
Endi

Chào Bạn

OK. Kết quả đúng như mong đợi!
Cám ơn bạn Character rất nhiều.

ltpit
27-06-2011, 12:04
mình mới tìm hiểu về visual fox và sql server.ai có tài liệu gửi cho mình với.Thanks nhìu!

ngluong099
28-06-2011, 16:45
Cần hỏi cách đánh font chữ tiếng việt cho menu trong foxpro
ai biết xin chỉ dùm thank!

tanlahill
29-06-2011, 18:46
Cần hỏi cách đánh font chữ tiếng việt cho menu trong foxpro
ai biết xin chỉ dùm thank!

Mình thì không rành về foxpro lắm nhưng hiện tại việc đánh font chữ tiếng Việt cho menu trong foxpro thì đang xử lý được. Theo mình thì bạn chọn bảng mã TCVN3 là OK thôi. Nhưng bạn nên nhớ đó mới chỉ là cách đánh thôi còn thể hiện được font tiếng Việt thì bạn phải chỉ định thuộc tính font cho menu! (Click chuột phải vào phần trống của màn hình -> chọn properties -> chọn thẻ Appearance -> chọn nút Advanced -> Ở mục Item: chọn Menu(Active Title bar, Message Box,... nếu muốn hiện tiếng Việt); mục Font: VK Sans serif -> OK
Trong lúc chờ đợi sự hỗ trợ của các thành viên trên diễn đàn thhì bạn cứ xài tạm cách mình đi.
Chúc bạn thành công.

HUGOVFP
02-07-2011, 14:16
Chào tất cả các bạn!

Mình đang tìm hiểu về VFP và mới tham gia DĐTH, mình đã xem được một số trang, mình thấy rất bổ ích. Mình có vài vướng mắc nhờ các bạn tư vấn giúp:

1- Có cách nào lưu các ký tự quốc tế không có trên bàn phím (các ký tự hiện diện trong hộp Symbol của Windows) vào DBF, hoặc chèn trên Form hoặc Report? Hiện nay chỉ nhập được một vài ký tự bằng cách nhấn phím Alt+4 chữ phím số (hoặc chọn Symbol Code trong Character Map của Windows).

2- Trong VFP, ta có thể dùng lệnh kích hoạt gọi các file thuộc ứng dụng WORD, EXCEL … nhưng để chương trình gọi file *.CHM, *.HTM (html document) thì dùng câu lệnh nào? Cả trong trường hợp chương trình chạy file EXE trong máy tính không cài VFP thì có cần copy kèm thêm file DLL nào không?

3- Riêng việc xuất dữ liệu từ DBF ra Excel đồng thời chuyển font dữ liệu từ bảng mã TCVN3 sang UTF8, mình đã tham khảo ví dụ chuyenfont của bạn Tayngangvfp có class thuvienfont.vcx khá hay, có thể cần cho nhiều người. Việc xuất dữ liệu từ DBF ra Excel là tốt rồi, tuy nhiên mình còn vướng chuyển font TCVN3 --> Unicode ở điểm này: trong một xâu ký tự, có một ký tự ữ cần là chữ thường, lại không thể hiện được chữ thường mà cứ là Ữ (chữ hoa), ví dụ hữu (TCVN3) khi chuyển sang Unicode thành hỮu hoặc nữ --> nỮ hoặc chữ --> chỮ … Nhờ bạn Tayngangvfp nghiên cứu thêm chút nữa, chỉnh code giúp mình khắc phục tình trạng đã nêu trên với.

Email của mình là Hugovfp@yahoo.com

Rất mong được các bạn giúp, mình cám ơn trước.
====================================
21/10/2011
Gửi Bạn Tayngangvfp

Cám ơn Bạn Tayngangvfp đã chỉnh sửa Code trong thuvienfont.vcx khắc phục lỗi ký tự ữ khi chuyển từ bảng mã TCVN3 sang UTF8.

hongquangtn
06-07-2011, 15:26
Xin hỏi các bạn
Làm thế nào để sử dụng được đường dẫn mà trong đó tên thư mục có khoảng trắng ví dụ có thư mục D:\BACKUP DATA\.. khi chạy nó đều kêu sai đường dẫn
thank

hanhung87
06-07-2011, 22:57
to co 2file DBF ntn:
tếp [BANHANG.DBF]

tenhang ___ngayban __sotien
aaa _______20/3 _____20.000
aaa _______20/3 _____20.000
bbb _______20/4 _____60.000
aaa _______20/3 _____20.000
ccc _______20/3 _____15.000
bbb _______20/3 _____20.000
aaa _______20/3 _____60.000

tệp2 [TONGHOP.DBF]

tenhang __sotien
aaa
bbb
ccc

------
giờ mình muốn tính số tiền bán từng mặt hàng trong tháng ở tệp TONGHOP.DBF thì dùng lệnh ntn, giúp tớ với!

tuan_tvkg
07-07-2011, 00:00
Select Tenhang, Sum(Sotien) From BANHANG Group By Tenhang Oder By Tenhang

hanhung87
07-07-2011, 00:39
Select Tenhang, Sum(Sotien) From BANHANG Group By Tenhang Oder By Tenhang

phần: "Oder By Tenhang" tớ không hiểu nó lắm, nghĩa của lệnh là sắp xếp à

phuonglc2011
13-07-2011, 08:44
Cho mình hỏi trong cùng 1 chương trình đã dịch ra file .exe mình muốn mở nhiều lần ( mở 2 cửa sổ fox khác nhau), chạy 2 from khác nhau thì phải làm thế nào?
Thanks!

elfenomeno
13-07-2011, 11:23
Có ai giới thiệu giúp mình các câu lệnh tìm kiếm trong FoxPro ko? Mình xin cảm ơn trước!!!

hungtuan61
13-07-2011, 13:13
Xin hỏi các bạn
Làm thế nào để sử dụng được đường dẫn mà trong đó tên thư mục có khoảng trắng ví dụ có thư mục D:\BACKUP DATA\.. khi chạy nó đều kêu sai đường dẫn
thank

Cho vào biểu thức ký tự , chẳng hạn : ddan="d:\backup data\.. " rồi đặt lệnh

hongquangtn
19-07-2011, 11:09
thank hungtuan61
toi da dat duong dan nhu vay, nhung khi chay chuong trình van bao loi khong tim thay file
neu bo khoang trang thi OK

three_xi
19-07-2011, 15:03
Có ai biết cách tạo nút command trong form bằng câu lệnh không ? Giúp em với
Thanks!

tayngangvfp
19-07-2011, 16:12
Có ai biết cách tạo nút command trong form bằng câu lệnh không ? Giúp em với
Thanks!

thisform.AddObject([Test1],[commandbutton])
thisform.Test1.Height=22
thisform.Test1.Caption=[Hello!]
thisform.Test1.Left=50
thisform.Test1.Top=100
thisform.Test1.visible=.T.

tayngangvfp
19-07-2011, 16:13
thank hungtuan61
toi da dat duong dan nhu vay, nhung khi chay chuong trình van bao loi khong tim thay file
neu bo khoang trang thi OK

Bạn đang sử dụng lệnh gì? Thao tác chuỗi đường dẫn có thể hơi khác theo từng lệnh.

dungk3cv1
19-07-2011, 16:37
Có ai biết cách tạo nút command trong form bằng câu lệnh không ? Giúp em với
Thanks!
sao bạn ko tạo = wizard?

hongquangtn
20-07-2011, 10:27
thank Tayngang
toi sử dụng lệnh như sau:
Path='D:\DATA BACKUP\SP'
PathFile=Path+'\tenfile.DBF'
sele 0
use &Pathfile
Nếu trong thư mục không co khoảng trắng thì OK, nếu có thì báo không tháy File
nhờ bạn giúp đỡ

tayngangvfp
20-07-2011, 11:34
thank Tayngang
toi sử dụng lệnh như sau:
Path='D:\DATA BACKUP\SP'
PathFile=Path+'\tenfile.DBF'
sele 0
use &Pathfile
Nếu trong thư mục không co khoảng trắng thì OK, nếu có thì báo không tháy File
nhờ bạn giúp đỡ

Bạn dùng cách này
USE [&Pathfile]

Character
20-07-2011, 12:41
Xin hỏi các bạn
Làm thế nào để sử dụng được đường dẫn mà trong đó tên thư mục có khoảng trắng ví dụ có thư mục D:\BACKUP DATA\.. khi chạy nó đều kêu sai đường dẫn
thank


Gợi ý với bạn một vài kinh nghiệm khi sử dụng đường dẫn thư mục trong chương trình

Bạn nên sử dụng cách khai báo đường dẫn theo dạng hàm, kết quả trả về của hàm sẽ chuẩn, chương trình không bị nhầm lẫn, kinh nghiệm cho thấy trong chương trình nên hạn chế dùng macro (&), nếu có thể thì sử dụng khai thác hàm thay thế biến hằng vẫn tốt hơn, chương trình truy xuất vẫn nhanh hơn, chuẩn hơn.

Một vài ví dụ:
Nếu thư mục cần dùng nào đó có tên là D:\New folder\CO VAI KHOANG TRANG

Thì khai báo trong chương trình là:

cPath=ADDBS([D:\New folder\CO VAI KHOANG TRANG]) && khai báo dạng hàm
Sele 0
Use (cPath+[tenfile.DBF]) && khai báo dạng hàm (thay cho khai báo của bạn là use &Pathfile)

Gợi ý một số hàm liên quan về thư mục để Bạn tham khảo
cPath=Full([])
Set defa to cPath && đường dẩn thư mục gốc của chương trình là thư mục ngầm định

cOdia=Sys(5) && trả về tên ổ đĩa ngầm định

cThumuchienhanh=CURDIR() && trả về tên thư mục hiện hành (VD: \CO VAI KHOANG TRANG\)

cPath=Home() && lúc thiết kế trả về C:\PROGRAM FILES\MICROSOFT VISUAL FOXPRO 9\; lúc chay chương trình đã biên dịch thành file EXE thì tùy tình huống hàm trả về tên đường dẫn thư mục khác.

Tương tự: Home(2) trả về C:\PROGRAM FILES\MICROSOFT VISUAL FOXPRO 9\SAMPLES\
Bạn tìm hiểu thêm nhé! Chúc thành công.

Chào Bạn
Character.

hongquangtn
20-07-2011, 15:04
Thank Tayngang và Charater nhiều.

three_xi
20-07-2011, 20:42
Cảm ơn bác tayngangvfp về đoạn code tạo nút command bằng câu lệnh nhé.
Em xin hỏi 1 câu nữa nhé:
Trong fox có tạo được report động không nhỉ. (Giống chức năng: "wrap text" giản dòng tự động trong excel) không các bác nhỉ. Nếu có, thì làm ntn nhỉ, giúp em với. Thanks!

hungtuan61
21-07-2011, 08:14
Ví dụ : Nếu mở tệp tin tep.dbf trong thu muc D:\backup data bằng lệnh :
use d:\backup data\tep.dbf -> sẽ không thực hiện được.
Vì vậy phải dùng :
ddan="d:\backup data\tep.dbf"
use (ddan)
hoặc use &ddan

emgaivfp
27-07-2011, 21:36
Chào mọi người.
1. Cho mình hỏi muốn lấy thông tin về độ phân giải màn hình hiện tại của máy tính bà­ng VFP9, và điều chỉnh độ phân giải màn hình từ VFP9.
2. Trong VFP9 có cách nạo tạo máy chủ riêng trong SQL2000.

tayngangvfp
28-07-2011, 10:07
Chào mọi người.
1. Cho mình hỏi muốn lấy thông tin về độ phân giải màn hình hiện tại của máy tính bà­ng VFP9, và điều chỉnh độ phân giải màn hình từ VFP9.
2. Trong VFP9 có cách nạo tạo máy chủ riêng trong SQL2000.

@emgaivfp
1.
- Thông tin màn hình: sysmetric(1), sysmetric(2)
- Điều chỉnh: http://www.foxite.com/archives/changing-desktop-resolution-from-vfp-0000179426.htm
2.Chưa hiểu câu hỏi

danngudien
29-07-2011, 07:22
Nếu ấn ENter thì xuống dòng
IF nKeyCode=13

NODEFAULT
KEYBOARD '{DNARROW}'

ENDIF
Để huy lệnh trên đưa phím enter trở lại trạng thái ban đầu thì làm thế nào? nhờ các bạn giúp nhé!

ltpit
29-07-2011, 11:03
Mọi người ơi!Mình muốn làm 1 cái danh sách để quản lí theo dõi các xe du lịch chạy trong ngày.Nếu xe nào chạy trong ngày thì đánh dấu vào.Nó giống như cái lịch ấy.Ai biết làm chỉ mình với.Làm bằng sql 2005 và visual fox nhé!
Thanks nhìu nhìu!!!
yahoo của mình: canhhongtinhban_c4@yahoo.com

emgaivfp
29-07-2011, 16:46
Chào mọi người.

Khi nết nối với máy chủ sql2000 có tên “emgaivfp”(thường khi cài sql2000 có mặc định một máy chủ, máy tính của mình thường lấy tên của máy tính làm tên máy chủ sql2000 ).
Mình hỏi có cách nào tạo thêm một máy chủ sql2000 có tên “VFP2000” riêng không.

Mình xin cám ơn mọi người trước.
Cảm ơn “TayngangVFP” đã hướng dẫn về thông tin về màn hình máy tính

emgaivfp
04-08-2011, 11:05
1.Mình tạo một form hiện ngày tháng năm bằng VFP9 có tên là “formngaythang”, mình tạo một form nhập số liệu có tên là “formnhap” . trên form “formnhap” mình tạo một Combo box. Mình muốn hỏi mọi người có cách nào đưa form “formngaythang” vào trong Combo box, khi nhấn vào Combo box thì hiện ra ngày tháng cho mình lựa chọn không.
2.Mình cảm ơn mọi người trước.

luu_luu
04-08-2011, 13:46
1.Mình tạo một form hiện ngày tháng năm bằng VFP9 có tên là “formngaythang”, mình tạo một form nhập số liệu có tên là “formnhap” . trên form “formnhap” mình tạo một Combo box. Mình muốn hỏi mọi người có cách nào đưa form “formngaythang” vào trong Combo box, khi nhấn vào Combo box thì hiện ra ngày tháng cho mình lựa chọn không.
2.Mình cảm ơn mọi người trước.
theo mình bạn cứ add ngày tháng năm vào combobox trên form nhap

mnam=allt(str(year(date())))
for mthang=1 to 12
for mngay=1 to 31

thisform.combo1.AddItem(tran(mngay,[@l 99])+[/]+tran(mthang,[@l 99])+[/]+mnam)
endfor
endfor

tayngangvfp
04-08-2011, 16:35
1.Mình tạo một form hiện ngày tháng năm bằng VFP9 có tên là “formngaythang”, mình tạo một form nhập số liệu có tên là “formnhap” . trên form “formnhap” mình tạo một Combo box. Mình muốn hỏi mọi người có cách nào đưa form “formngaythang” vào trong Combo box, khi nhấn vào Combo box thì hiện ra ngày tháng cho mình lựa chọn không.
2.Mình cảm ơn mọi người trước.

Ý bạn là khi click vào combobox sẽ thực thi "formngaythang" ?

emgaivfp
04-08-2011, 16:58
Ý bạn là khi click vào combobox sẽ thực thi "formngaythang" ?

Bạn TayngangVFP nói đúng ý mình, tuy nhiên mình muốn form "formngaythang" phải gắn vào Combobox, chứ không phải form bật lên góc bên trái màn hình hay ở giữa màn hình.

tuan_tvkg
04-08-2011, 17:02
Tayngangvfp đúng là số 1 về VFP ở diễn đàn này.

tayngangvfp
05-08-2011, 07:41
Ý bạn là khi click vào combobox sẽ thực thi "formngaythang" ?

Bạn TayngangVFP nói đúng ý mình, tuy nhiên mình muốn form "formngaythang" phải gắn vào Combobox, chứ không phải form bật lên góc bên trái màn hình hay ở giữa màn hình.


Ý tưởng làm như sau:
1. Ta sẽ viết code thay thế sự kiện Dropdown của combobox (xảy ra mỗi khi click để popup list) để thực hiện việc "do form ngaythang"
2. Để có thể điều chỉnh vị trí của form ngaythang ta sẽ xác định vị trí của combobox (có thể dùng OBJTOCLIENT(...,...)) sau đó điều chỉnh form ngaythang theo các gia tri nay.

Đây là 1 ví dụ thể hiện cách làm, bạn thay thế form ngaythang cua bạn vào (form ngày tháng trong vi du chỉ có tính chất minh họa chứ không thực sự là form calendar).
http://www.mediafire.com/file/2b93ouq9268vqi1/combobox-calendar.rar

Character
05-08-2011, 21:28
1.Mình tạo một form hiện ngày tháng năm bằng VFP9 có tên là “formngaythang”, mình tạo một form nhập số liệu có tên là “formnhap” . trên form “formnhap” mình tạo một Combo box. Mình muốn hỏi mọi người có cách nào đưa form “formngaythang” vào trong Combo box, khi nhấn vào Combo box thì hiện ra ngày tháng cho mình lựa chọn không.
2.Mình cảm ơn mọi người trước.

Gửi emgaivfp
Có một số Form, Class thiết kế lịch (Calendar, Date và DateTime) nhiều kiểu, dạng (ComboBox hoặc Spinner …), hình thức phong phú, sử dụng linh hoạt với nhiều tuỳ chọn khá đẹp mắt. Bạn tham khảo tại link này (sau khi tải về, nếu cần chỉnh sửa một chút cho phù hợp) là dùng tốt):

http://www.sweetpotatosoftware.com/SPSBlog/PermaLink,guid,878c1b11-1770-405c-92ea-cdbe2c838dfa.aspx

Chúc thành công.
Chào bạn.

hongquangtn
10-08-2011, 09:50
Chào cả nhà
Các bạn cho hỏi 1 chút.
-Tôi đã tạo ra 1 Grid để thể hiện 1 bảng dữ liệu, trong Grid có thêm 1 cột có kiểu dữ liệu (currentControl) là check box với mục đích là tích chọn các bản ghi theo yêu cầu, vấn đề là trong bảng dữ liệu không có cột chọn đó thì phải làm thế nào
- thứ 2, nếu 1 cột có currencontrol là command button thì làm thế nào để nút lệnh này gán được caption là nội dung trong ô dữ liệu nguồn (controlSource) của cột đó
rất cần giúp đỡ
thank nhiều

emgaivfp
10-08-2011, 11:07
Ý tưởng làm như sau:
1. Ta sẽ viết code thay thế sự kiện Dropdown của combobox (xảy ra mỗi khi click để popup list) để thực hiện việc "do form ngaythang"
2. Để có thể điều chỉnh vị trí của form ngaythang ta sẽ xác định vị trí của combobox (có thể dùng OBJTOCLIENT(...,...)) sau đó điều chỉnh form ngaythang theo các gia tri nay.

Đây là 1 ví dụ thể hiện cách làm, bạn thay thế form ngaythang cua bạn vào (form ngày tháng trong vi du chỉ có tính chất minh họa chứ không thực sự là form calendar).
http://www.mediafire.com/file/2b93ou...x-calendar.rar


.................................................. ............................

Chào mọi người.

1. Mình đã làm theo hướng dẫn của bạn “Tayngangvfp” những gặp một vấn đề sau:
Mình thiết kế form ở độ phân giải màn hình là (1024,768). Mình đã điều chỉnh form ngaythang hiện lên đúng vị trí mình muốn theo OBJTOCLIENT(...,...)) .
Khi mình thay đổi độ phân giải màn hình lên (1280,768) thì form ngaythang không còn nằm ở vị trí như ban đầu lúc điều chỉnh.
Cho mình hỏi có cách nào điều chỉnh vị trí của form ngaythang đúng vị trí khi thay đổi độ phân giải màn hình không(độ phân giải tối thiểu 1024,768).
2. Cho mình hỏi tại sao khi bắt mã trên bàn fím của click chuột trái có mã là “151” lại không thực thi được.
Xin cảm ơn mọi người trước.

tayngangvfp
10-08-2011, 18:06
....
Chào mọi người.

1. Mình đã làm theo hướng dẫn của bạn “Tayngangvfp” những gặp một vấn đề sau:
Mình thiết kế form ở độ phân giải màn hình là (1024,768). Mình đã điều chỉnh form ngaythang hiện lên đúng vị trí mình muốn theo OBJTOCLIENT(...,...)) .
Khi mình thay đổi độ phân giải màn hình lên (1280,768) thì form ngaythang không còn nằm ở vị trí như ban đầu lúc điều chỉnh.
Cho mình hỏi có cách nào điều chỉnh vị trí của form ngaythang đúng vị trí khi thay đổi độ phân giải màn hình không(độ phân giải tối thiểu 1024,768).
2. Cho mình hỏi tại sao khi bắt mã trên bàn fím của click chuột trái có mã là “151” lại không thực thi được.
Xin cảm ơn mọi người trước.


1. Bạn mô tả rõ hơn:
- Bạn điều chỉnh độ phân giải trong khi đang chạy form hay điều chỉnh xong rồi mới chạy form?
- Cách điều chỉnh độ phân giải ntn: = code hay thông qua desktop -> Display properties ?

2. Chưa hiểu ý bạn


@ hongquangtn

1. Nếu table không có field để chọn thì có thể giải quyết yêu cầu của bạn theo ý tưởng sau
- Tạo thêm 1 cursor chỉ có 1 field kiểu logic
- Appen số record = số record của table chính
- thực hiện lệnh set relation theo recno()
- Tạo 1 cột trên grid và gán controlsource là field logic của cursor

2.Có thể dùng 1 control tự tạo: command trong 1 container. Tạo thêm sự kiện BackStyle_Access của container. Trong sự kiện này sẽ gán caption cho command

kotaro_166
10-08-2011, 21:18
kì này bắt đầu học fox
từ giờ chắc thưởng xuyên vào topic này quá :x

hongquangtn
11-08-2011, 09:25
Thank Tayngang nhieu
Tôi sẽ thử, tuy nhiên ở truòng hợp 2 "2.Có thể dùng 1 control tự tạo: command trong 1 container. Tạo thêm sự kiện BackStyle_Access của container. Trong sự kiện này sẽ gán caption cho command". Bạn co thể cho 1 cái mẫu thì tốt quá

- Tiện đây, xin hỏi thêm, có cách nào tạo ra thanh Bar Printer thay cho thanh mặc định của Fox, vì nó không có in riêng từng trang
Thank nhiều

emgaivfp
11-08-2011, 15:10
Chào mọi người.

1. Mình đã làm theo hướng dẫn của bạn “Tayngangvfp” những gặp một vấn đề sau:
Máy tính của mình hiện đang chạy độ phân giải màn hình (1024,768). Mình thiết kế form và điều chỉnh form ngaythang ở độ phân giải màn hình là (1024,768). Khi chạy form ngaythang ở độ phân giải màn hình là (1024,768) thì hiện lên đúng vị trí mình muốn theo OBJTOCLIENT(...,...))

Khi mình thay đổi độ phân giải màn hình từ desktop -> Display properties lên (1280,768). Sau đó mình khởi động lại chương trình VFP9 và chạy form ngaythang thì không còn nằm ở vị trí như ban đầu.

Cho mình hỏi có cách nào điều chỉnh vị trí của form ngaythang, khi chạy trương trình ở các độ phân giải màn hình khác nhau thì luôn hiện đúng vị trí (hay ở các máy tính khác nhau thường hay có độ phân giải khác nhau, khi chạy ở máy tính khác thì cũng luôn hiện lên đúng vị trí cũ).

2. Cho mình hỏi tại sao khi bắt mã trên bàn fím của click chuột trái có mã là “151” lại không thực thi được.

Xin cảm ơn mọi người trước.

tayngangvfp
12-08-2011, 07:12
@emgaivfp

1- M đã thử các trường hợp như: thay đổi độ phan giải khi đang chạy form, thay đổi rồi mới chạy form thì đều thể hiện đúng (đối với VD M gửi) . Vậy bạn xem có thêm phần nào trong code hay form ngaythang của bạn có gì đặc biệt không?

2-Ý bạn là phát hiện bấm chuột khi dùng hàm INKEY ? Nếu vậy thì thử dùng: INKEY(2,[HM])

emgaivfp
12-08-2011, 08:52
1.Trong form chính mainform mình chọn “autocenter=.t.”
Khi chọn xem ngày thì mình chỉnh sửa cho form ngaythang nằm bên trái so với combo(thí dụ của bạn nằm bên phải combo, nếu sát lề phải form ngaythang xẽ nằm bên ngoài form chính mainform).
2.Mình muốn bắt click cho thoát form ngaythang khi clik vào mainform.
LPARAMETERS nKeyCode, nShiftAltCtrl
DO CASE
CASE nKeyCode=151
*click
thisform.Release
ENDCASE

hongquangtn
12-08-2011, 09:49
Xin hỏi thêm các bạn
có cách nào để trong thanh Printer của report có thể in lẻ trang mà không dùng lệnh RANGE _tutrang,_dentrang
Thank

tayngangvfp
12-08-2011, 11:54
1.Trong form chính mainform mình chọn “autocenter=.t.”
Khi chọn xem ngày thì mình chỉnh sửa cho form ngaythang nằm bên trái so với combo(thí dụ của bạn nằm bên phải combo, nếu sát lề phải form ngaythang xẽ nằm bên ngoài form chính mainform).
2.Mình muốn bắt click cho thoát form ngaythang khi clik vào mainform.
LPARAMETERS nKeyCode, nShiftAltCtrl
DO CASE
CASE nKeyCode=151
*click
thisform.Release
ENDCASE

1- Vì hàm OBJTOCLIENT cho giá trị liên quan tới form nên để thể hiện đúng vi trí form ngaythang khi form chính di chuyển thì cần phải xác định dược vị trí của combobox so với màn hình (screen). Để giả lập được 1 combobox còn phải xét tới các vị trí đặc biệt như: khi form vượt quá cạnh phải màn hình, khi form vượt quá đáy màn hình, ....


2-Không thể dùng event keypressed của form để "bắt" chuột được. Và cũng không thể "bắt" chuột bên ngoài form nếu chỉ dùng các event thông thường của form. Để "bắt" chuột bên ngoài form, phải dùng hàm API

Đây là VD đã chỉnh lại theo 2 ý trên

http://www.mediafire.com/file/o064qs8owe5xs2w/combobox-calendar.rar

emgaivfp
13-08-2011, 10:29
Chào mọi người.

Cho mình hỏi cách tạo chương trình Setup cho VFP9 từ “ InstallShield Express 5.0”. hướng dẫn mình từng bước một được không.

Mình xin cảm ơn mọi người trước.

robotfpt
25-08-2011, 15:18
Có bạn nào có tool để pack (brand) và unpack (refox) các file của fox (*.fxp) giới thiệu cho anh em được mở rộng tầm mắt được không ạ?
Mình chỉ biết có refox XI+ thôi.

huynhngoclong
01-09-2011, 10:06
Có ai biết thiết kế reprot có điều kiện không, giúp mình với? Có tài liệu thiết kế report nào chi tiết không cho mình với.máy ebook trên mạng mình kiếm viết sơ sài quá.Thanks

daisuphadu
04-09-2011, 18:38
Các bạn cho mình hỏi là làm thế nào để so sánh từng record của bảng 1 với từng record của bảng 2 (của 2 fields cụ thể ) và hiển thị ra Messagebox cho từng record khác nhau và trùng nhau giũa 2 bảng.

ebookfinder
04-09-2011, 19:47
kết xuất 2 field dùng hàm IIF, 1 cái cho =, 1 cái cho <>, phần kết vẫn bình thường.

daisuphadu
05-09-2011, 07:05
Mong bạn chỉ rõ hơn , mình mới tìm hiểu về vfp nên củng chưa hiểu rõ lắm.

HUGOVFP
06-09-2011, 14:47
Gửi Bạn Daisuphadu

Nếu bạn chưa có cách giải quyết được việc so sánh từng record của 2 bảng (2 fields cụ thể), bạn cho biết Email, Tôi sẽ gửi form ví dụ để bạn tham khảo. Form này có chức năng cho phép Bạn chọn các bảng khác nhau, chọn trường (field) bất kỳ để so sánh, có kiểm tra tính hợp lệ (cùng kiểu dữ liệu khi so sánh). Có 03 tùy chọn cách thể hiện cho việc xuất nội dung so sánh từng Record trùng khớp hoặc khác biệt của 02 trường (fields) là: 1- bảng ảo DBF (cursor) hoặc 2- file Excel hoặc 3- hàm Messagebox() (số record) để xem.

robotfpt
07-09-2011, 10:53
Bạn nào có ví dụ Import Excel vào Dbf bằng Connectstring (giống Connectstring với SQL ấy) chia sẻ cho mình với. Thanks!

daisuphadu
08-09-2011, 20:17
Gửi bạn HUGOVFP
EMAIL: daisuphadu@yahoo.com.vn
cảm ơn bạn nhiều!!!!

HUGOVFP
08-09-2011, 20:39
Gửi Bạn Daisuphadu

Tôi đã gửi form ví dụ để bạn tham khảo. Bạn mở Email để xem, nếu có gì chưa rõ, bạn có thể trao đổi thêm.
Chào bạn

lovetoday_stupid
09-09-2011, 10:23
các anh chị cho em hỏi với ạ
tạo tệp LL205 và cho xem họ tên và mã phòng của cán bộ được lên lương trong năm 2005. biết rằng nếu hệ số lương <3 thì 3 năm đc lên lương 1 lần. nếu HSL>=3 thì 4 năm đc lên lương 1 lần.
như vậy dùng lệnh nào ạk?

robotfpt
09-09-2011, 10:25
Bạn nào có ví dụ Import Excel vào Dbf bằng Connectstring (giống Connectstring với SQL ấy) chia sẻ cho mình với. Thanks!

Không có cao thủ nào từng làm về cái này à? Chẳng có nhẽ fox ko kết nối được với excel thông qua connectstring?

hoangnnm
09-09-2011, 10:58
Không có cao thủ nào từng làm về cái này à? Chẳng có nhẽ fox ko kết nối được với excel thông qua connectstring?

Tại sao phải dùng connect string nhỉ ?
Trong khi import từ excel cực kỳ đơn giản, cái khó là xác định cột nào cột nào mà thôi .

robotfpt
09-09-2011, 13:28
Tại sao phải dùng connect string nhỉ ?
Trong khi import từ excel cực kỳ đơn giản, cái khó là xác định cột nào cột nào mà thôi .

Liệu không dùng Connectstring có thể import excel 2007? Liệu có thể import với số lượng bản ghi trong file excel lên tới hàng nghìn? Xin các cao thủ tư vấn cho các trường hợp này

daisuphadu
09-09-2011, 14:02
Gửi bạn HUGOVFP
Mình nhận được rồi.Có gì mình hỏi thêm.Cám ơn bạn!!

hoangnnm
09-09-2011, 16:23
Liệu không dùng Connectstring có thể import excel 2007? Liệu có thể import với số lượng bản ghi trong file excel lên tới hàng nghìn? Xin các cao thủ tư vấn cho các trường hợp này
Đây : http://support.microsoft.com/kb/949529
Tham khảo thêm : http://support.microsoft.com/kb/954318

Fish eye
09-09-2011, 20:57
các anh chị cho em hỏi với ạ
tạo tệp LL205 và cho xem họ tên và mã phòng của cán bộ được lên lương trong năm 2005. biết rằng nếu hệ số lương <3 thì 3 năm đc lên lương 1 lần. nếu HSL>=3 thì 4 năm đc lên lương 1 lần.
như vậy dùng lệnh nào ạk?


Gửi bạn Lovetoday_stupid

Nội dung chương trình quản lý Lương-Nhân sự về cơ bản không phức tạp lắm, tuy nhiên câu hỏi của Bạn không rõ, bạn nêu cụ thể hơn đi, càng chi tiết càng tốt (cái gì bạn đã có, chưa có, mấu chốt giải quyết cái gì?). Nếu người đọc tự biện luận, giả thiết này, nọ, bịa đặt trường hợp nào đó để góp ý thì có thể chưa sát mong muốn của bạn. Việc góp ý không sát thì ngại, không ai muốn.

Bạn có thể tham khảo gợi ý sau:
Tạo tệp L2005.dbf

If !file([L2005.dbf])
Crea tabl L2005 (MaNV C(15),HOTEN C(45),TEN C(10),NGSINH D,PHAI L,Ma_phong C(2),NGACH_LG C(9),BAC_LG C(6),HS_LG N(5,2),NGXEP_LG D)
Endi

Sau đó nhập dữ liệu vào. Để xem DSNS được lên lương trong tệp L2005.dbf (nếu hệ số lương <3 thì thông báo 3 năm/lần lên lương, nếu HSL>=3 thì thông báo 4 năm/lần lên lương), Bạn chạy đoạn Code sau:

Clos tabl all
Use L2005
Scan for Recc()>0
?Allt(Str(Recn()))+[- ]+Allt(Hoten)+[ - Ma phong ]+Ma_phong+[, thoi gian nang luong ]+Iif(HS_LG<3,[3],[4])+[ nam/lan]
Ends

Hoặc tốt nhất là bạn thiết kế dạng chương trình gồm Database, Class, Form, Report, Procedure (kết hợp nhiều lệnh, hàm, vòng lặp…) chứ không chỉ một vài lệnh đơn giản được. Bạn cần tạo một số bảng table gồm:

- Bảng 1: Danh sách nhân sự (tạo trước DSNS.dbf) có ít nhất các trường (field):
MaNV C(15), Hoten C(45),Ten C(10), Ngaysinh D, Ma_phong C(2), Ma_ngach C(10), Bac_lg C(5), Ngxep_lg D …
(Thiết kế Form nhập DSNS với các chi tiết lương của mỗi người hiện đang hưởng vào bảng này)

- Bảng 2: Thang bậc lương (tạo trước Thanglg.dbf) có ít nhất các trường:
Ma_ngach C (10),Ten_ngach C (50), Bac_lg C(5), Hs_lg N(5,2), Thgian_nglg N(4,2)
(Thiết kế Form nhập chi tiết Thang bậc lương, thời gian nâng lương mỗi ngạch bậc vào bảng này)

Ngoài ra, cần có một số bảng khác như:
- Bảng 3: DS Phòng gồm: Ma_phong C(4), Ten_phong C(50) chẳng hạn …

- Bảng 4: Danh sách nhân sự được nâng lương từng năm (VD: L2005.dbf, bảng này do chương trình tự phát sinh khi có người được nâng lương năm 2005) có ít nhất các trường:
MaNV C(15), Ma_ngach C(10), Bac_lg C(5), Ngayxep_lg D…
…………..

Thiết lập các chỉ mục, khoá chính cho các bảng 1, 2 phục vụ cho việc tạo mối quan hệ (Relation) giữa 2 bảng sử dụng về sau.

Khi cần lập DS nâng lương (những người đến kỳ hạn, có đủ thời gian nâng lương) thì chương trình dùng cấu trúc Scan quét từng người (tại bảng 1) dựa vào mã ngạch, bậc lương và thời điểm ngày xếp lương của mỗi người này đối chiếu với bảng 2 (Thanglg.dbf) tính đến nay đã đủ (gần đủ) thời gian nâng lương quy định (số năm tùy theo ngạch, bậc) chưa. Nếu thoả điều kiện thời gian thì xuất danh sách các người đó ra một trong các tùy chọn Màn hình, Report, hoặc file DBF, Excel v.v…

Lão Trư
10-09-2011, 08:38
Chắc có lẽ DDTH lúc này đang trong giai đoạn khó khăn, hạn hẹp, Mem nào chưa đủ 10 bài thì chỉ được Post ngắn thôi, nếu bài viết trình bày đủ ý, đủ chi tiết thì không Post được do vượt quá số ký tự nào đó, không biết có phải vậy không? “An error has occurred Lão Trư! You must have 10 posts in order to post links. Your current post count is 4.”
Nhờ Mod hoặc các bạn tư vấn cách như thế nào để Post được bài?. Trước mắt cách giải quyết đối phó tạm thời là gửi Mail đến các Mem khác có trên 10 bài nhờ Post giùm.

robotfpt
10-09-2011, 09:56
Đây : http://support.microsoft.com/kb/949529
Tham khảo thêm : http://support.microsoft.com/kb/954318
Mình đã thử làm theo hướng dẫn nhưng vẫn không được. Bạn có demo không giúp mình với.
Cảm ơn nhiều!

HUGOVFP
10-09-2011, 10:13
Tôi cũng có lúc không Import được file *.XLSX (có vài ngàn bản ghi) vào DBF, đành phải chuyển file này về dạng *.XLS, sau đó dùng chức năng Import của VFP thì kết chuyển vào DBF bình thường.

daisuphadu
10-09-2011, 14:42
Chắc có lẽ DDTH lúc này đang trong giai đoạn khó khăn, hạn hẹp, Mem nào chưa đủ 10 bài thì chỉ được Post ngắn thôi, nếu bài viết trình bày đủ ý, đủ chi tiết thì không Post được do vượt quá số ký tự nào đó, không biết có phải vậy không? “An error has occurred Lão Trư! You must have 10 posts in order to post links. Your current post count is 4.”
Nhờ Mod hoặc các bạn tư vấn cách như thế nào để Post được bài?. Trước mắt cách giải quyết đối phó tạm thời là gửi Mail đến các Mem khác có trên 10 bài nhờ Post giùm.

Mình cũng bị như bạn Lão Tư. Nó cứ bắt mình post trên 10 bài mới cho post tiếp mà khổ nổi nó không cho post thì làm sao có cơ hội post trên 10 bài chứ.pótay!!!!
Có khi cả tuần lễ ngày nào cũng vô định gửi ý kiến thảo luận mà nó cứ báo lỗi hoài.

hoangpnt349
11-09-2011, 17:37
Bạn nào có ví dụ Import Excel vào Dbf bằng Connectstring (giống Connectstring với SQL ấy) chia sẻ cho mình với. Thanks!

Của bạn đây:
http://www.mediafire.com/?w19h3wo21eqcoty

daisuphadu
13-09-2011, 20:24
Các bạn cho mình xin ví dụ về form truy vấn hoặc hướng dẫn dùm mình code trong form truy vấn.
Xin cảm ơn nhiếu!

HUGOVFP
15-09-2011, 09:28
Các bạn cho mình xin ví dụ về form truy vấn hoặc hướng dẫn dùm mình code trong form truy vấn.
Xin cảm ơn nhiếu!
Bạn nên nêu cụ thể nhu cầu truy vấn về việc gì? VD: tạo mới, tìm kiếm, truy xuất cái gì…? (field trong DBF hoặc tìm từ, nhóm từ trong field hoặc tìm kiếm file, kiểu file… có cần trả về kết quả không?) mỗi dạng truy vấn sử dụng các câu lệnh, phương pháp khác nhau, phong phú về hình thức trình bày … Không thể thiết kế một form hoặc một đoạn Code truy vấn mọi thứ hoặc truy vấn cái không xác định trước. Nếu bạn nêu cụ thể hơn sẽ có nhiều bạn giúp.

JLaw
15-09-2011, 23:03
Em đang có bài làm về gia phả T_T, muốn dùng Treeview để hiển thị mà hok biết làm ntn cả, mọi người ai biết chỉ em với.

emgaivfp
23-09-2011, 17:40
Chào mọi người.
Cho mình hỏi trong VFP9 có cách nào tạo mã vạch hai chiều “QR Code” và đưa vào report trong VFP9 không.
Mình xin cảm ơn trước.

hoangnnm
24-09-2011, 10:59
Chào mọi người.
Cho mình hỏi trong VFP9 có cách nào tạo mã vạch hai chiều “QR Code” và đưa vào report trong VFP9 không.
Mình xin cảm ơn trước.

Bạn cần có FONT mã vạch tương ứng và 1 hàm để encode chuỗi theo định dạng chuẩn của mã vạch muốn in .

emgaivfp
26-09-2011, 14:56
Chào mọi người.
Mình muốn có font và hàm để chuyển đổi mã vạch ở đâu bạn “Hoangnnm”.
1. Nếu có những cái đó rồi thì đưa vào report của VFP9 theo chiều dọc của giấy A4 thì như thế nào?
2. Cho mình hỏi mình dùng lệnh in “report FORM report\A4.frx to printer prompt noconsole”. Có cách nào biết được đã nhấn vào nút “Print” của lệnh trên không.
Mình xin cảm ơn trước.

hoangnnm
27-09-2011, 09:34
Chào mọi người.
Mình muốn có font và hàm để chuyển đổi mã vạch ở đâu bạn “Hoangnnm”.
1. Nếu có những cái đó rồi thì đưa vào report của VFP9 theo chiều dọc của giấy A4 thì như thế nào?
2. Cho mình hỏi mình dùng lệnh in “report FORM report\A4.frx to printer prompt noconsole”. Có cách nào biết được đã nhấn vào nút “Print” của lệnh trên không.
Mình xin cảm ơn trước.

Muốn có Font thì bạn phải tìm trên mạng down về hoặc mua . Hàm chuyển đổi thì có thể tự viết/down free/mua .

1. Có rồi thì bạn chỉ cần đơn giản tạo textbox hoặc label theo định dạng font mã vạch và gán giá trị chuỗi sau khi chuyển đổi(encode) vào là được . Nói chung là in như bình thường .
2. Chác là bạn đang nói đến nút Ok khi hộp thoại In hiện ra . Mình không rõ lắm về vấn đề này , nhưng có lẽ cách này giúp bạn xác định được người dùng Ok hay Cancel .


Private m.myPageTotal
m.myPageTotal = 9999

_Pagetotal = m.myPageTotal && Lúc này _pageTotal = m.myPageTotal , tự set
Report Form 1 To Printer Prompt Noconsole
* ở đây khi hộp thoại in hiện ra, nếu người dùng click Ok , _pageTotal sẽ chuyển về số page thực tế, ngược lại nó sẽ vẫn bằng m.myPageTotal
If _pageTotal <> m.myPageTotal
messagebox('OK')
else
messagebox('CANCEL')
endif

P/s : code viết "nóng" chưa test .

SunMoon8
27-09-2011, 15:44
có ai giúp mình với 1 câu trong fox pro với..trong cái view muốn lọc ra 3 sinh viên có dtb cao nhất thi làm thế nào?

SunMoon8
28-09-2011, 12:17
uppppp!!!có ai giúp mình tạo menu trong fox không???

onglao_danhca
28-09-2011, 14:23
uppppp!!!có ai giúp mình tạo menu trong fox không???
Cho mình email, mình gửi cho bản mẫu
onglao_danhca@yahoo.com.vn

hshason
29-09-2011, 21:58
Menu, TitleBar Của form và Messagebox bằng Unicode.
Mình có 1 cách là kết hợp giữa VB6 và Fox để làm điều này, cũng khá đơn giản, bạn nào quan tâm có thể sử dụng nhé.
1. Tạo Project ActiveX DLL của VB6,
- ProjectName: vbUniMenu
- Modul Name: UniMenu
- Lưu Project với tên: UniMenu.vbp
Sở dĩ đặt tên như thế để khi nào dùng trong Fox sẽ dễ giải thích hơn thôi, chứ ai muốn đặt thế nào thì tùy ý
- Thêm modul mới và dùng đoạn code sau:
(Có cả Menu và Messagebox)


' Module: Unicode Menu
' Added by hvson
'--------------------------------------
Option Explicit
Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetSubMenu Lib "user32" (ByVal hMenu As Long, ByVal nPos As Long) As Long
Private Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoW" (ByVal hMenu As Long, ByVal un As Long, ByVal BOOL As Boolean, lpcMenuItemInfo As MENUITEMINFO) As Long
Private Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoW" (ByVal hMenu As Long, ByVal un As Long, ByVal b As Boolean, lpmii As MENUITEMINFO) As Long
Private Declare Function SetMenuDefaultItem Lib "user32" (ByVal hMenu As Long, ByVal uItem As Long, ByVal fByPos As Long) As Long
Private Declare Function DefWindowProcW Lib "user32" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function MessageBoxW Lib "user32" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long

Private Type MENUITEMINFO
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As Long
hbmpChecked As Long
hbmpUnchecked As Long
dwItemData As Long
dwTypeData As Long
cch As Long
hbmpItem As Long
End Type

Private Const MFT_RADIOCHECK = &H200&
Private Const MIIM_TYPE = &H10
Public Sub SetUniMenu(sCaption As String, mhandle As Long, ByVal mnuItem As Long, Optional ByVal mnuParentItem As Long = -1, Optional isDefault As Boolean = False)
Dim mInfo As MENUITEMINFO
If isDefault Then SetMenuDefaultItem mhandle, mnuItem, 1
With mInfo
.cbSize = Len(mInfo)
.fType = MFT_RADIOCHECK
.fMask = MIIM_TYPE
.dwTypeData = StrPtr(sCaption)
End With
SetMenuItemInfo mhandle, mnuItem, 1, mInfo
End Sub

Public Sub SetUniText(ByVal hwnd As Long, ByVal sUniText As String)
DefWindowProcW hwnd, &HC, &H0&, StrPtr(sUniText)
End Sub

Function MsgBoxUni(ByVal PromptUni As Variant, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal TitleUni As Variant = vbNullString) As VbMsgBoxResult
Dim BStrMsg, BStrTitle
'Hàm StrConv Chuyen chuoi ve ma Unicode
BStrMsg = StrConv(PromptUni, vbUnicode)
BStrTitle = StrConv(TitleUni, vbUnicode)
MsgBoxUni = MessageBoxW(GetActiveWindow, BStrMsg, BStrTitle, Buttons)
End Function


- Tạo File DLL bằng cách vào File/Make UniMenu.dll...
- Giờ đã có File DLL và có thể sử dụng rồi

2. Dùng trong FoxPro
- Về nguyên tắc sử dụng DLL này là sau khi Menu thiết kế trong Pox đã được gọi, và UniMenu sẽ thực hiện đổi ra UniCode
- Dùng hàm chuyển đổi TCVN sang Unicode (diễn đàn đã có bài này rồi)
- Tạo một program và dùng code sau:


*-- Code FoxPro Cho Menu Unicode
*-- Code FoxPro Cho Menu Unicode
*------------------------------------------------------------------------------------------------
*FUNCTION SetUniMenu: Set Menu main dùng Font Unicode
*Trong hàm này sử dụng vbUniMenu.dll viết bằng vb 6.0
*Hàm này chỉ thực hiện khi MenuMain đã được chạy lên
*
*Added by, hvson 08.07.2011
*------------------------------------------------------------------------------------------------
FUNCTION SetUniMenu
LOCAL lcMenuFontName, loVbUniMenu, lcTitle, mhandle, lnpadcount,lcMenuCaption ,lOldArea
lOldArea = SELECT()
=Sys(3101,65001)
Declare Integer FindWindow In user32 String lpClassName, String lpWindowName
Declare Integer GetMenu In user32 Integer HWnd
loVbUniMenu = CREATEOBJECT("vbUniMenu.UniMenu")
loFontConverter = CREATEOBJECT("FontConverter")
lcTitle = _SCREEN.Caption
mhandle = GetMenu(FindWindow(0,m.lcTitle))
lnpadcount = CNTPAD('_msysmenu')
FOR i=1 TO lnpadcount
lcMenuCaption = ALLTRIM(PRMPAD('_msysmenu', GETPAD('_msysmenu', i)))
lcMenuCaption = loFontConverter.abc2utf(lcMenuCaption)
loVbUniMenu.SetUniMenu(lcMenuCaption,mhandle,i-1)
ENDFOR
_Screen.Refresh()
SELECT (lOldArea)
ENDFUNC

*-------------------------------------------------------------------
* FUNCTION SetUniFormCaption
* TitleBar Unicode
* Added by hvson, 15.07.2011
*-------------------------------------------------------------------
FUNCTION SetUniFormCaption
LPARAMETERS toForm, tcCaption

LOCAL loFontConverter, loVbUniMenu, lcCaption,lOldArea
lOldArea = SELECT()
IF TYPE("toForm.BaseClass") <> "C"
RETURN
ENDIF
IF toForm.BaseClass = "Form"
IF EMPTY(tcCaption)
tcCaption = toForm.Caption
ENDIF
=Sys(3101,65001)
loFontConverter = CREATEOBJECT("FontConverter")
loVbUniMenu = CREATEOBJECT("vbUniMenu.UniMenu")
lcCaption = loFontConverter.ABC2UTF(tcCaption)
loVbUniMenu.SetUniText(toForm.HWnd,lcCaption)
ENDIF
SELECT(lOldArea)
ENDFUNC

*---------------------------------------------
*-- Messagebox Unicode
*-- Added by hvson, 29.06.2011
*---------------------------------------------
FUNCTION MyMessagebox(tcMessageText, tnDialogBoxType, tcTitleBarText,tnTimeout)
Local lo_MsgBox,lnReturnValue
IF EMPTY(tnDialogBoxType) OR TYPE("tnDialogBoxType") <> "N"
tnDialogBoxType = 0
ENDIF
IF EMPTY(tnTimeout) OR TYPE("tnTimeout") <> "N"
tnTimeout = 0
ENDIF
IF EMPTY(tcTitleBarText)
RETURN
ENDIF
=Sys(3101,65001)
loFontConverter = CREATEOBJECT("FontConverter")
loVbUniMenu = CREATEOBJECT("vbUniMenu.UniMenu")
lcMessageText = loFontConverter.abc2utf(tcMessageText)
lcTitleBarText = loFontConverter.abc2utf(tcTitleBarText)
lnReturnValue = loVbUniMenu.MsgBoxUni(lcMessageText, tnDialogBoxType, lcTitleBarText)
ENDFUNC

*-------------------------------------------------------------------
* FUNCTION Register_dll
* Đăng ký DLL với windows
* Added by hvson, 02.08.2011
*-------------------------------------------------------------------
FUNCTION Register_dll
LPARAMETERS tcFileDll
LOCAL lcFileName
IF EMPTY(tcFileDll)
RETURN
ENDIF
IF FILE(tcFileDll)
lcFileName = tcFileDll
ELSE
lcFileName = SYS(5) + CURDIR() + "tcFileDll"
ENDIF
IF NOT FILE(lcFileName)
= MESSAGEBOX_SBC("Không tìm thấy tệp thư viện " + tcFileDll,MB_OK,BTC_MAINTITLE)
RETURN .F.
ELSE
*-- Test UniMenu.dll
*-- Đoạn này chỉ để kiểm tra DLL đã khai báo hay chưa
*-- Nếu có lỗi, có nghĩa là chưa khai báo nên sẽ khai báo luôn trong phần Catch
TRY
loVbUniMenu = CREATEOBJECT("vbUniMenu.UniMenu")
CATCH TO oErr
LOCAL lnErrorNo
lnErrorNo = oErr.ErrorNo
IF lnErrorNo = 1733 &&Không tìm thấy file.
lcFileName = 'regsvr32.exe /s ' + lcFileName
RUN /N &lcFileName
ENDIF
ENDTRY
ENDFUNC
*-- End of code


3. Sử dụng các hàm, thủ tục đã xây dựng ở trên
- Khi bắt đầu chạy chương trình đầu tiên gọi thủ tục khai báo DLL
= Register_dll ('UniMenu.dll')
- Sau lời gọi Do Menu
= SetUniMenu()
- Trong Sự kiện Init của tất cả các Form
= SetUniFormCaption(Thisform)
- Messagebox Có cấu trúc như Messagebox của Fox, chỉ thêm My vào đằng trước là được
= MyMessagebox('Chào các bạn !',64,'Test Messagebox Unicode')

- Các bạn nhớ copy file GenMenu.prg vào trong thư mục C:\Program Files\Microsoft Visual FoxPro 9 (Có trong Project Demo đính kèm). File này dùng để khi nào Genmenu mình sẽ Fix Font chữ mặc định cho các menu sổ xuống là font TCVN3, mình dùng Font (Abc sans serif) cũng đã có đi kèm
- Thay đổi đường dẫn trong Program Main.prg cho phù hợp, vì trong Develop nên mới để thế cho khỏi lạc đi đâu mất
Link Demo:


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

huyenmeocon
01-10-2011, 23:57
bạn vào other->menu->chọn new->menu->màn hình xuất hiện cho phép bạn tạo menu.
bạn có thể tạo các menu bar sau đó tạo các menu dọc xổ xuống bằng cách trong mục result chọn submenu->create....

huyenmeocon
02-10-2011, 00:02
các bạn cho mình hỏi về fox 9.0 với: mình muốn tạo các nút lệnh Thêm, Sửa, Lưu thêm, lưu sửa trong form CẬP NHẬT DỮ LIỆU mình làm nhưng mà khi lưu thì dữ liệu trên grid thay đổi nhưng trong Table không thay đổi. Sau khi đóng form thì fox hỏi: bạn có muốn lưu dữ liệu đã thay đổi ko?( họ viết tiếng anh). ai giúp mình nhé!!!!!!!

HUGOVFP
02-10-2011, 08:22
các bạn cho mình hỏi về fox 9.0 với: mình muốn tạo các nút lệnh Thêm, Sửa, Lưu thêm, lưu sửa trong form CẬP NHẬT DỮ LIỆU mình làm nhưng mà khi lưu thì dữ liệu trên grid thay đổi nhưng trong Table không thay đổi. Sau khi đóng form thì fox hỏi: bạn có muốn lưu dữ liệu đã thay đổi ko?( họ viết tiếng anh). ai giúp mình nhé!!!!!!!

Gửi bạn Huyenmeocon

Nếu Bạn sử dụng dãy nút điều khiển có sẵn trong VFP9, nhưng chưa được chỉnh sửa Code phù hợp với chương trình, có thể xảy ra vài trở ngại khi dùng. Đó là tình trạng bảng Table của Bạn đã có thay đổi khi cập nhật nhưng chưa được Lưu đúng cách (trở ngại do Code kế thừa trong dãy nút điều khiển không thi hành đúng mong muốn) nên khi Bạn phát lệnh Thoát (lệnh kế thừa trong dãy nút điều khiển) xảy ra thông báo như bạn nêu. Bạn nên xem thêm các bài liên quan (bài 1301 trang 131… tại Diễn đàn này) để hiểu thêm.
Tốt nhất Bạn nên tạo dãy nút mới (thư viện nút điều khiển – Buttons Class) để dùng hoặc nhờ các Bạn trên DĐTH gửi cho Bạn thư viện nút có sẵn đang dùng ổn định để bạn tham khảo, sử dụng.

SunMoon8
02-10-2011, 11:25
các bác giúp dùm 1 bài tập fox tạo view bao gồm các mẫu tin có giá lớn nhất theo từng loại và sắp theo từng mã loại(quản lí sách)

SunMoon8
02-10-2011, 15:42
UP CÓ AI TRẢ LỜI MÌNH KHÔNG?cám ơn các bạn
các bác giúp dùm 1 bài tập fox tạo view bao gồm các mẫu tin có giá lớn nhất theo từng loại và sắp theo từng mã loại(quản lí sách)

huyenmeocon
04-10-2011, 06:22
cho mình hỏi thêm chút nữa nhé. mình có 1 table tên là Tiền Bảo Hiểm lưu số tiền bảo hiểm của các công nhân đóng theo từng năm. gồm các trường sau:
MACN, NĂM, SOTIEN mình muốn đặt khóa chính gồm 2 trường là MACN và NĂM. mình vào modify table mà vfp ko cho phép đặt như vậy. giúp mình nhé!!!!!!!!!

huyenmeocon
04-10-2011, 06:32
Gửi hai bạn gianglangtukg, Newbie.vfp

Vấn đề các bạn nêu thường dùng thực hiện các giao dịch (TRANSACTION) dữ liệu, ví dụ thiết kế các nút Thêm, Sửa, giúp ta thực hiện 04 chức năng cốt lõi, cần thiết trong quá trình cập nhật dữ liệu là Thêm, Lưu, Sửa hoặc Hủy.
Về hình thức, thường 04 chức năng này được xây dựng hiển thị trên 02 nút Thêm, Sửa nằm kèm với một dãy các nút khác, ví dụ có tên là Đầu, Trước, Kế, Cuối, Tìm, Xem, Xoá, Thoát.
Tuỳ theo tính chất, nhu cầu công việc mà ta thiết kế số nút phù hợp trong dãy để sử dụng.

1-Cấu trúc giao dịch (phép truyền dữ liệu):

Một giao dịch sẽ bắt đầu từ lệnh BEGIN TRANSACTION, và sau đó buộc phải kết thúc bằng lệnh END TRANSACTION hoặc ROLLBACK tương ứng. Có thể lồng tối đa 05 cấp BEGIN TRANSACTION … END TRANSACTION.

Hành động Click một trong 02 nút Thêm, Sửa có nghĩa là ta xử lý một giao dịch.

Hành động 1: Click 01 trong 02 nút Thêm hoặc Sửa: Tên nút Thêm (Caption) sẽ đổi thành Lưu, tên nút Sửa sẽ đổi thành Hủy là ta thực hiện lệnh:
BEGIN TRANSACTION : khai báo bắt đầu một giao dịch, khoá bản ghi.
……………….

Sau đó là một trong hai hành động:

Hành động 2a: ta Click nút Lưu: Tên nút này (Caption) sẽ đổi thành Thêm là ta thực hiện lệnh:
END TRANSACTION : khai báo kết thúc và cập nhật thực sự những thay đổi dữ liệu vào (điã) Database, rồi mở khoá bản ghi.

Hành động 2b: ta Click nút Hủy: Tên nút này (Caption) sẽ đổi thành Sửa là ta thực hiện lệnh:
ROLLBACK : Hủy giao dịch, phục hồi lại dữ liệu như trước khi bắt đầu giao dịch, rồi mở khoá bản ghi.

Nếu không bắt đầu bằng BEGIN TRANSACTION, lệnh END TRANSACTION hoặc lệnh ROLLBACK sẽ gây lỗi (tùm lum).

Các bạn tìm, xem thêm tài liệu trong các chương như Lập trình trong môi trường nhiều người dùng (Lập trình chia sẻ) còn nhiều vấn đề khác liên quan mật thiết đến vấn đề này.

2-Việc viết Code thực hiện các giao dịch nêu trên khá phức tạp, liên quan nhiều thuộc tính (Property), phương thức (Method), tuy nhiên các Bạn không lo vì trong Samples của VFP có sẵn, các bạn tham khảo, tìm hiểu dần, chỉnh sửa, Việt hoá tên các nút theo ý là dùng tốt.

Tôi có sẵn một ít dãy nút (thư viện) đang dùng, font tiếng Việt (.Vntime – Bảng mã TCVN3-ABC), nhưng không chuyên nghiệp lắm, đưa vào Form là dùng được. Nếu cần tham khảo, các bạn gửi Email tôi chuyển.

Chào
Parker Pen
gửi cho mình nhé. tranthuhuyen.dhsp@gmail.com

SunMoon8
04-10-2011, 08:35
các bác giúp dùm 1 bài tập fox tạo view bao gồm các mẫu tin có giá lớn nhất theo từng loại và sắp theo từng mã loại(quản lí sách)

Có bác nào giúp em với!!

hoangnnm
04-10-2011, 19:10
Có bác nào giúp em với!!

Ai mà giúp cho nổi hở bạn ?

Ít nhất bạn cũng phải cố tìm cách tạo cho được cái VIEW , rồi sau đó kết quả có sai thì post lên mọi người cùng xem và giúp .

Hoặc nếu bạn không biết cách tạo VIEW thì hỏi "Xin chỉ giúp cách tạo view" , mà cái này quá đơn giản, bạn tự tìm trên mạng vô số kể .

Còn bạn nhờ kiểu này tôi nghĩ chắc ai rảnh lắm và thích xài lòng tốt vô tội vạ mới đi làm giúp bạn thôi .

Vài lời chân tình thôi , bạn đừng giận .

Parker Pen
04-10-2011, 23:06
cho mình hỏi thêm chút nữa nhé. mình có 1 table tên là Tiền Bảo Hiểm lưu số tiền bảo hiểm của các công nhân đóng theo từng năm. gồm các trường sau:
MACN, NĂM, SOTIEN mình muốn đặt khóa chính gồm 2 trường là MACN và NĂM. mình vào modify table mà vfp ko cho phép đặt như vậy. giúp mình nhé!!!!!!!!!


gửi cho mình nhé. tranthuhuyen.dhsp@gmail.com


Gửi Bạn huyenmeocon

1-Trong một bảng dữ liệu, Bạn muốn đặt khóa chính gồm 2 trường (fieldA+fieldB) thì hai trường này phải cùng kiểu dữ liệu hoặc dùng hàm chuyển chúng về cùng kiểu dữ liệu (thực hiện tại thẻ trang Indexes sau khi Modify Structure).

2-Đã gửi cho Bạn thư viện nút Buttons (Classlib) gồm 07 dãy nút, trong đó có từ dãy 02 nút đến dãy 10 nút và form tìm kiếm (Search) kèm theo. Bạn Check mail để tải về tham khảo, sử dụng.

SunMoon8
05-10-2011, 21:45
Ai mà giúp cho nổi hở bạn ?

Ít nhất bạn cũng phải cố tìm cách tạo cho được cái VIEW , rồi sau đó kết quả có sai thì post lên mọi người cùng xem và giúp .

Hoặc nếu bạn không biết cách tạo VIEW thì hỏi "Xin chỉ giúp cách tạo view" , mà cái này quá đơn giản, bạn tự tìm trên mạng vô số kể .

Còn bạn nhờ kiểu này tôi nghĩ chắc ai rảnh lắm và thích xài lòng tốt vô tội vạ mới đi làm giúp bạn thôi .

Vài lời chân tình thôi , bạn đừng giận .
Mình nghĩ câu hỏi của mình k sai chỗ nào cả.nếu ai đã làm qua thì sẽ bjt mà giúp.nếu bạn k bjt thi nên im lặng.bạn nghĩ thự lữc bạn đến đâu mà góp ý hay dạy đời ai?hay là bạn k bỉu câu hỏi của tôi ma bạn bảo tôi k bjt j về view?Tôi nghĩ chắc bạn là fan của hkt

K biết thì hỏi là chuyện bt mà..câu hỏi của mình đâu sai chỗ nào.mình gấp nên mới thế..bạn cũng đừng mỉa Mai ng khác thế.bạn hỏi có Văn hoá.còn Minh vô Văn Hoá a?bạn vào cũng mong giúp thôi mà..bạn k nghĩ đến trường hợp của ng khác sao mà nc khó nge thế.k quen bjt nhau cũng đừng làm buồn lòng nhau bạn ơi.bạn bức xúc lắm à

hoangnnm
05-10-2011, 23:37
Mình nghĩ câu hỏi của mình k sai chỗ nào cả.nếu ai đã làm qua thì sẽ bjt mà giúp.nếu bạn k bjt thi nên im lặng.bạn nghĩ thự lữc bạn đến đâu mà góp ý hay dạy đời ai?hay là bạn k bỉu câu hỏi của tôi ma bạn bảo tôi k bjt j về view?Tôi nghĩ chắc bạn là fan của hkt

K biết thì hỏi là chuyện bt mà..câu hỏi của mình đâu sai chỗ nào.mình gấp nên mới thế..bạn cũng đừng mỉa Mai ng khác thế.bạn hỏi có Văn hoá.còn Minh vô Văn Hoá a?bạn vào cũng mong giúp thôi mà..bạn k nghĩ đến trường hợp của ng khác sao mà nc khó nge thế.k quen bjt nhau cũng đừng làm buồn lòng nhau bạn ơi.bạn bức xúc lắm à

Tôi biết là có nói nhiều với bạn bạn cũng không hiểu hết được . Thôi tôi hỏi bạn 1 câu thế này vậy : bạn bè của bạn , không thân nhé ( vì thân thì nói làm gì nữa ) , vay tiền bạn , mà yêu cầu bạn phải chạy tới nhà người đó để đưa tiền , lúc trả lại nói bạn phải chạy đến để lấy , bạn có bực bội không ? Ít nhất cũng phải thể hiện sự tôn trọng với người mà mình yêu cầu giúp đỡ bằng cách chạy đến nhà người ta chứ .

Và tôi chẳng mỉa mai gì bạn cả , tôi nói thẳng mà . Ý tôi nói bạn là người lười biếng đấy .

huyenmeocon
08-10-2011, 09:40
uh. mình đã nhận được mail của bạn. mình cảm ơn nhiều nhiều.
nhưng mà bạn có thể nói rõ cách đặt khóa được ko? mình vẫn chưa hiểu để làm. thenk nhìu nhé

Parker Pen
08-10-2011, 09:48
uh. mình đã nhận được mail của bạn. mình cảm ơn nhiều nhiều.
........
mình muốn đặt khóa chính gồm 2 trường là MACN và NĂM. mình vào modify table mà vfp ko cho phép đặt như vậy. giúp mình nhé!!!
........
bạn có thể nói rõ cách đặt khóa được ko? mình vẫn chưa hiểu để làm. thank nhìu nhé

“Về cách đặt khóa chính cho 02 fields trong bảng”
Bạn mở Email để xem, Tôi gửi ví dụ minh họa đính kèm bảng table TienBHiem.dbf đã đặt khóa chính gồm 2 trường là MACN và NĂM. Nếu còn vấn đề nào chưa rõ Bạn có thể trao đổi thêm.

huyenmeocon
08-10-2011, 23:47
cam on ban nhieu!

cho minh hoi chut nua! khi mình form tìm kiếm theo MACN mình đã tạo 1 hộp combox cho trường Macn, sau khi chọn macn thì thông tin của công nhân đó hiện ra. Sau đó mình chọn tiếp Macn khác thì có dòng thông báo:" Thisform can not only be used within a method" mình sửa mãi mà ko được...mình hỏi nhiều quá. mong các bạn giúp đỡ.

Parker Pen
09-10-2011, 09:33
cam on ban nhieu!

cho minh hoi chut nua! khi mình form tìm kiếm theo MACN mình đã tạo 1 hộp combox cho trường Macn, sau khi chọn macn thì thông tin của công nhân đó hiện ra. Sau đó mình chọn tiếp Macn khác thì có dòng thông báo:" Thisform can not only be used within a method" mình sửa mãi mà ko được...mình hỏi nhiều quá. mong các bạn giúp đỡ.

Gửi Bạn Huyenmeocon
Có thể do Bạn khai báo các thuộc tính hoặc phương thức của Combobox trong hộp thoại Properties chưa phù hợp, nên khi thi hành biểu mẫu này, xảy ra thông báo như Bạn nêu.
Bạn lưu ý xem, sửa lại việc khai báo các thuộc tính của Combobox này trong hộp thoại Properties sau khi mở biểu mẫu này như sau:
- Name : CmbMaCN
- ControlSourse : CmbMaCN
- RowSourse : TênDBF.MaCN
- RowSourseType : 6-Fields
- Style : 0-Dropdown Combo

Hy vọng giúp Bạn được chút ít.

Chào Bạn

huyenmeocon
10-10-2011, 15:22
cho mình hỏi: làm thế nào để tạo 1 combox chứa thông tin Phái mà gồm :"NAM", "NU" để chọn?

hoangnnm
10-10-2011, 15:41
cho mình hỏi: làm thế nào để tạo 1 combox chứa thông tin Phái mà gồm :"NAM", "NU" để chọn?

Bạn có thể viết vào Procedure (event) Activate của Form như sau



Procedure Activate

thisform.combo1.additem("Nam")
thisform.combo1.additem("Nu")

huyenmeocon
13-10-2011, 23:11
bạn ơi mình làm cái phần combox Macn ở phia s trên, mình ko tìm thấy thuộ tính controlsouersetype đâu hết, chỉ thây rowsouerse thôi,mình chọ 6-field rồi mà nó ko sửa được

Parker Pen
14-10-2011, 10:20
bạn ơi mình làm cái phần combox Macn ở phia s trên, mình ko tìm thấy thuộc tính controlsoursetype đâu hết, chỉ thấy rowsourse thôi, mình chọn 6-field rồi mà nó ko sửa được

Gửi Bạn Huyenmeocon
Tôi đã gửi (Email) ví dụ minh hoạ để Bạn tham khảo, nếu chưa nhận được Mail hoặc chưa rõ chỗ nào, Bạn cho biết thêm nhé!.

tuan_tvkg
14-10-2011, 10:26
Bác Tayngangvfp chỉ dùm cách in màu Report trong VFP. Tôi thiết kế Report có Line màu mà in ra toàn đen trắng. Nhờ bác chỉ giúp. Thank

hoangnnm
14-10-2011, 15:45
Bác Tayngangvfp chỉ dùm cách in màu Report trong VFP. Tôi thiết kế Report có Line màu mà in ra toàn đen trắng. Nhờ bác chỉ giúp. Thank

Hỏi vài câu hơi "ngu", bạn thông cảm nhá :
- Khi preview có màu hay không ?
- Máy in ... có phải là máy in màu không ?
- Nếu là máy in màu thì in từ word hay excel .v...v chẳng hạn có màu hay không hay chỉ mõi Foxpro bị ?

Nếu tất cả đều không phải thì bạn up 2 file frx, frt và bảng dữ liệu để in lên mọi người cùng xem :)

tuan_tvkg
14-10-2011, 22:10
ông hoangnnm hơi bị quá lời đó. ông mới là thằng ngu. Máy in của tôi HP 5550 có màu không ông nội.

hoangnnm
15-10-2011, 11:39
ông hoangnnm hơi bị quá lời đó. ông mới là thằng ngu. Máy in của tôi HP 5550 có màu không ông nội.

He he , ông hiểu nhầm ý tôi rồi . Tôi nói là tôi hỏi hơi ngu ông thông cảm cơ mà . Vì có nhiều trường hợp phải hỏi nhiều câu ngô nghê như thế đấy . :)
Xem lại đi .

thanhtam_t3a
18-10-2011, 01:16
- Tôi có 2 file Visual Foxpro đã biên dịch. Tôi muốn chạy file thứ 2 bằng c ách gọi lệnh trong file thứ nhất nhưng nó báo lỗi
- Cú pháp run/N “D:\THUCHANH\FILE2” (Cú pháp trên nằm trong FILE1, với cú pháp trên tôi gọi các ứng dụng khác đều chạy được OK, nhưng nếu FILE2 là ứng dụng biên dịch từ Visual Foxpro thì không được)
- Ai có thể chỉ giúp tôi được không

robotfpt
18-10-2011, 08:40
- Tôi có 2 file Visual Foxpro đã biên dịch. Tôi muốn chạy file thứ 2 bằng c ách gọi lệnh trong file thứ nhất nhưng nó báo lỗi
- Cú pháp run/N “D:\THUCHANH\FILE2” (Cú pháp trên nằm trong FILE1, với cú pháp trên tôi gọi các ứng dụng khác đều chạy được OK, nhưng nếu FILE2 là ứng dụng biên dịch từ Visual Foxpro thì không được)
- Ai có thể chỉ giúp tôi được không

Nếu File2 là file biên dịch của Fox thì bạn dùng lệnh DO D:\THUCHANH\FILE2 để thi hành.
Nếu dùng lệnh run thì chỉ rõ file ứng dụng chạy của nó, ví dụ:
RUN /N "D:\THUCHANH\VFP9.EXE" "D:\THUCHANH\FILE2.FXP"
Bạn thử xem có được không?

luu_luu
19-10-2011, 07:30
mình đang làm tự điển NHẬT - VIỆT, mình tạo table bằng lệnh CREATE TABLE CODEPAGE=932 (STT C(3),NHAT C(30),VIET (50)), nhưng mình không thể nhập ký tự Nhật được, máy có đủ bộ gõ & font Nhật...có cách nào để giải quyết không, xin giúp mình vấn đề này, cám ơn

thanhtam_t3a
19-10-2011, 22:19
Cam on ban Robotfpt nhieu, minh lam duoc roi
Truoc day min khong biet co dien dan nay nen phai mo co 1 minh

thanhtam_t3a
20-10-2011, 23:47
- Mình muốn khi chương trình chạy (VPF) thì nó ghi nhớ fonts hệ thống, sau đó nó chuyển qua fonts TCVN. Trước khi thoát thì nó hoàn trả lại fonts hệ thống như cũ
- Mình muốn kết xuất dữ liệu từ file DBF sang EXCEL với đúng định dạng trên file EXCEL mẫu
Mong các bạn giúp mình, giờ mình phải chỉnh Properties trên Desktop cực quá

VuNhatVan
21-10-2011, 13:16
Mình cũng làm nhiều VFP, chỉ ở mức phổ thông, tuy nhiên cũng xin đóng góp chút it mong các bác đừng chém:
1. Để chạy chương trình hoàn toàn tiếng Việt có 2 cách:
a. Dùng tính năng thay thế cho Menu, tooltip . . . để hiển thị trực tiếp tiếng Việt, không liên quan gì đến font của hệ thống (tất nhiên là phải có font TCVN trên máy)
b. Thay đổi font của hệ thống bằng các tác động vào regedit, chỉnh sửa font trong [HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics]. Tất nhiên là sau khi tác động phải log-off máy hoặc khởi động lại mới có tác dụng. Phương pháp này chỉ dùng với phần mềm đóng gói. Sau khi cài đặt xong máy sẽ tự chỉnh sang font TCVN3 và khởi động lại máy.
2. Kết kết xuất dữ liệu từ file DBF sang EXCEL với đúng định dạng trên file EXCEL mẫu bạn tham khảo ví dụ ở google với tên Xuất số liệu từ DBF sang Excel (bài của tayngangvfp)
(Sory vì không thể post link được)

Nếu bạn quan tâm với cách trả lời trên thì PM với mình

nquilai
21-10-2011, 15:18
Cho hỏi các cao thủ :tôi có viết chương trình vf9 nếu tôi để ở thư mục chương cụ thể là c:\thu_muc ,sau khi dịch ra file exe và chạy chương trình trong win7 để in thì bình thường .Nhưng nếu tôi để chương trình ở thư mục tùy ý (Trong chương trình co đoạn lệnh thu_muc=FULLPATH("")
SET DEFAULT TO &thu_muc) sau khi dịch ra file exe và chạy ,hiện được trên màn hình khi nháy vào biểu tượng để in trong môi trường win7 bị lổi

hoangnnm
21-10-2011, 15:25
Cho hỏi các cao thủ :tôi có viết chương trình vf9 nếu tôi để ở thư mục chương cụ thể là c:\thu_muc ,sau khi dịch ra file exe và chạy chương trình trong win7 để in thì bình thường .Nhưng nếu tôi để chương trình ở thư mục tùy ý (Trong chương trình co đoạn lệnh thu_muc=FULLPATH("")
SET DEFAULT TO &thu_muc) sau khi dịch ra file exe và chạy ,hiện được trên màn hình khi nháy vào biểu tượng để in trong môi trường win7 bị lổi

Bạn thử set default to home()

thanhtam_t3a
21-10-2011, 17:01
tai sao toi khong the post bai

HUGOVFP
21-10-2011, 18:47
tai sao toi khong the post bai
Tôi đã bị tình trạng như Bạn. Bạn phải có ít nhất 10 bài thì mới Post được bài có diễn giải đầy đủ, được nhiều ký tự hơn. Tình trạng này xảy ra chỉ mới sau khi nâng cấp Diễn Đàn trong thời gian gần đây, có thể do vấn đề nâng cấp chưa ổn. Đề nghị Bạn thực hiện thử giải pháp đối phó trước mắt để Post bài là Sau khi đăng nhập, Bạn Click vào nút Like vào một số bài bất kỳ Bạn thích là được (để có đủ số lượng 10 bài). Sau đó Bạn Post bài.

thanhtam_t3a
21-10-2011, 20:33
Cám ơn bạn HUGOVPF, mình post bài được rồi

Gửi bạn nquilai
Đây là code để đặt thư mục tùy ý của tôi:

Server1 = sys(5) + curd()
Dr_account = "&Server1.Account\"
Dr_autobk = "&Server1.Autobk\"
Dr_backup = "&Server1.Backup\"
Dr_data = "&Server1.Data\"

Trong đó thu mục Server1 chính là thu mục chứa file biên dịch, các thu mục bên dưới là thư mục con của nó (chứa data và các file khác để làm việc)
Theo cách đặt đường dẫn như trên tôi có thể chạy trong WinXP cũng như Win7 (kể cả thư mục có nhiều khoảng trắng)

thanhtam_t3a
21-10-2011, 20:39
Gửi bạn VuNhatVan

Mình cám ơn bạn, bạn có thể gửi code cho mình được không. Mail của mình thanhtam_t3a@yahoo.com
1. chỉnh font:
Theo mình cách chỉnh fonts theo phương án a là tốt nhất, sau khi thoat chương trình nó sẽ hoàn nguyên lại fonts cũ, không ảnh hưởng đến các ứng dụng khác
2. Xuất dữ liệu ra file excell theo định dạng của file mẫu có trước:
Mình có lđọc bài của tayngangvfp nhưng bài đó chỉ hướng dẫn kết xuất ra excell và kẻ mẫu, chứ không phải kết xuất vào 1 file mẫu có sẵn (Ví dụ như file Bangkebanra.xls của HTKK – kê khai thuế đó). Mình còn tay mơ nên không làm được
Nhờ bạn giúp đỡ, có gì cho mình địa chỉ mail để dễ liên lạc

hoangnnm
21-10-2011, 21:50
Gửi bạn VuNhatVan

Mình cám ơn bạn, bạn có thể gửi code cho mình được không. Mail của mình thanhtam_t3a@yahoo.com
2. Xuất dữ liệu ra file excell theo định dạng của file mẫu có trước:
Mình có lđọc bài của tayngangvfp nhưng bài đó chỉ hướng dẫn kết xuất ra excell và kẻ mẫu, chứ không phải kết xuất vào 1 file mẫu có sẵn (Ví dụ như file Bangkebanra.xls của HTKK – kê khai thuế đó). Mình còn tay mơ nên không làm được
Nhờ bạn giúp đỡ, có gì cho mình địa chỉ mail để dễ liên lạc

- Ở đây mình sẽ nói cụ thể về trường hợp cho việc xuất sang HTKK nhé .

1. Tạo object excel để nắm control với file mẫu ( file này phải đang không được mở ,không bị readOnly )


m.File_mau = [x:\***\bangkebanra]
* Mở File excel đích ra .
ox = CreateObject ("Excel.Application")
Ox.Workbooks.Open(m.File_mau)
ox.Visible = .F.

loWorkBook = Ox.ActiveWorkbook
loWorkSheet = loWorkBook.Sheets(1) && Sheet đầu tiên


2. Xác định mốc bắt đầu của file bangkebanra.xls , mốc này có thể coi như hằng số , khong bao giờ thay đổi .


* Mốc bắt đầu của file đích luôn luôn là B18
M.StartPoint = 18


3. Xóa số liệu có sẵn nếu có , nghĩa là xóa hết chỉ chừa lại cho đúng y nguyên như file mẫu ban đầu .


* Thực hiện xóa số liệu chi tiết có sẵn .
m.i = m.StartPoint
Do While .T.
loRange = loWorkSheet.Range("B" + Alltrim ( Str( i) ) )
m._Value = loRange.Value
If IsNull( _Value ) && Xóa dòng rỗng
loRange.EntireRow.Delete
Loop
Endif
If Not Left( Alltrim( trans( _Value) ) , 2) $ [2.,3.,4.,5.,T?] Or Type ( [_value] ) = [N]
loRange.EntireRow.Delete && Dòng có số và không phải các dòng tiêu đề
Loop
Endif
If [....] $ Alltrim (Trans( _Value) )
loRange.EntireRow.Insert &&& trước đó lỡ tay xóa mất 1 dòng
Exit
Endif
* Xóa nếu có dòng tổng .
loRange = loWorkSheet.Range("I" + Alltrim ( Str( i) ) )
loRange.Value = .Null.
loRange = loWorkSheet.Range("J" + Alltrim ( Str( i) ) )
loRange.Value = .Null.
i = m.i + 1
EndDo


4. Đưa số liệu chi tiết vào lần lượt theo loại hình sản xuất kinh doanh .
Đến đây bạn có thể tự mày mò tiếp được rồi .
Có vài điểm cần lưu ý như sau :
- Fox thì TCVN3 còn file mẫu theo unicode .
- Chủ yếu là cách bạn điều khiển con trỏ ( m.i ) , cho nên mỗi khi hết 1 loại hình sản xuất kinh doanh nào thì con trỏ phải đứng ở vị trí của dòng tổng của loại hình sxkd tiếp theo ( bạn có thể mở file excel, đứng ở 1 dòng tổng bất kỳ, chuột phải là chọn insert entire row sẽ hiểu ) .

HUGOVFP
21-10-2011, 22:25
- Mình muốn khi chương trình chạy (VPF) thì nó ghi nhớ fonts hệ thống, sau đó nó chuyển qua fonts TCVN. Trước khi thoát thì nó hoàn trả lại fonts hệ thống như cũ
.............
Mong các bạn giúp mình, giờ mình phải chỉnh Properties trên Desktop cực quá

Gửi bạn thanhtam_t3a
Tôi nghĩ chắc Bạn cũng đã tham khảo một số bài hướng dẫn (về vấn đề Bạn đang cần) đã nêu trong Tạp chí Công nghệ Thông tin …(ECHIP) và trên Diễn Đàn này. Tôi trao đổi với Bạn riêng vài ý mang tính cá nhân:
Một thời gian Tôi cũng đã từng dùng như Bạn nêu trên vì tiện ích cho chính bản thân chương trình, nhưng rồi không dùng nữa vì thấy cũng bất tiện (do khi chạy chương trình, font hệ thống chuyển sang font TCVN3 trong khi các ứng dụng khác sử dụng đồng thời dùng font Unicode).

Bạn có thể tham khảo cách dùng ít ảnh hưởng đến font hệ thống thì tốt hơn:
- Hàm Messagebox2() của Bạn Tayngangvfp
- Menu, TitleBar Của form và MyMessagebox() bằng Unicode của Bạn Hshason bài 1648 trang 165 của Diễn Đàn này.

Chào Bạn.

VuNhatVan
22-10-2011, 20:54
Gửi thanhtam_t3a
Trước đây mình làm các phần mềm cũng thường theo cách thay đổi font của hệ thống, từ ngày có Windows8 thì học theo phong cách của nó đôi chút, đồng thời cũng bỏ qua cách đó luôn, font hiện trực tiếp trên form, không liên quan đến font của hệ thống nữa. Cách mình làm như hình dưới đây
http://imageshack.us/photo/my-images/847/unledvgk.jpg/
http://imageshack.us/photo/my-images/846/unled2gxt.jpg/
http://imageshack.us/photo/my-images/707/unled3tf.jpg/

Chắc nhìn các hình vậy bạn đã hình dung ra đúng không, rất dễ làm mà không ảnh hưởng gì đến font hệ thống cả

hoangnnm
22-10-2011, 23:29
Gửi thanhtam_t3a
Trước đây mình làm các phần mềm cũng thường theo cách thay đổi font của hệ thống, từ ngày có Windows8 thì học theo phong cách của nó đôi chút, đồng thời cũng bỏ qua cách đó luôn, font hiện trực tiếp trên form, không liên quan đến font của hệ thống nữa. Cách mình làm như hình dưới đây
http://imageshack.us/photo/my-images/847/unledvgk.jpg/
http://imageshack.us/photo/my-images/846/unled2gxt.jpg/
http://imageshack.us/photo/my-images/707/unled3tf.jpg/

Chắc nhìn các hình vậy bạn đã hình dung ra đúng không, rất dễ làm mà không ảnh hưởng gì đến font hệ thống cả

Bác làm giao diện thật là đẹp

nquilai
25-10-2011, 21:57
Cám ơn bạn thanhtam_t3a
Dựa theo y tưởng của bạn mình cũng sửa code cho chương trình

nquilai
26-10-2011, 13:21
Hỏi các cao thủ vf
Chương trình mình viết chạy trong winxp bình thường không co gì lỗi
Nhưng trong win7 chương trình xử lý không bị lỗi (kể cả thư mục có khoảng trắng ) chỉ có điều : in ra được màn hình ,nếu nháy vào biểu tượng máy in máy báo lỗi có hình tam giác màu vàng và có dấu ! .
code in trong chương trình là :
EPORT FORM bc_ve TO PRINTER PROMPT PREVIEW NOCONSOLE

nquilai
26-10-2011, 13:22
Hỏi các cao thủ vf
Chương trình mình viết chạy trong winxp bình thường không co gì lỗi
Nhưng trong win7 chương trình xử lý không bị lỗi (kể cả thư mục có khoảng trắng ) chỉ có điều : in ra được màn hình ,nếu nháy vào biểu tượng máy in máy báo lỗi có hình tam giác màu vàng và có dấu !
code in trong chương trình là :
REPORT FORM bc_ve TO PRINTER PROMPT PREVIEW NOCONSOLE

HUGOVFP
26-10-2011, 14:09
Hỏi các cao thủ vf
Chương trình mình viết chạy trong winxp bình thường không co gì lỗi
Nhưng trong win7 chương trình xử lý không bị lỗi (kể cả thư mục có khoảng trắng ) chỉ có điều : in ra được màn hình ,nếu nháy vào biểu tượng máy in máy báo lỗi có hình tam giác màu vàng và có dấu !
code in trong chương trình là :
REPORT FORM bc_ve TO PRINTER PROMPT PREVIEW NOCONSOLE

Bạn thực hiện thử 1 trong 2 dòng lệnh sau (lưu ý máy tính phải có cài đặt sẵn máy in):
- Nếu Bạn muốn xuất Report ra màn hình, Bạn thay dòng Code trên bằng dòng lệnh:
REPORT FORM bc_ve PREV
(cần thiết muốn in ra máy in thì chọn biểu tượng máy in trên thanh Toolbars Preview)
- Hoặc nếu muốn xuất thẳng Report ra máy in, Bạn thay bằng dòng lệnh:
REPORT FORM bc_ve to PRINT

thanhtam_t3a
26-10-2011, 14:56
Ban xem lai coi cac file kh nhu .XLS, .doc c in duoc khong
theo minh khong phai loi code ma loi driver, khi minh cai win7, minh cung bi khon don cai driver may in cua win7

nquilai
28-10-2011, 08:40
Các file *.doc,*.xls in bình thường,Nếu đặt là thư mục cố định in bình thường (Chương trình mình viết chạy trên win7 hoặc server 2008 đều có lỗi như vậy)

HUGOVFP
28-10-2011, 09:36
Các file *.doc,*.xls in bình thường,Nếu đặt là thư mục cố định in bình thường (Chương trình mình viết chạy trên win7 hoặc server 2008 đều có lỗi như vậy)

Tôi chưa rõ lỗi in Report do nguyên nhân nào? Qua mô tả của Bạn chương trình không nhận ra đường dẫn thư mục chứa Report “… Nếu đặt là thư mục cố định in bình thường …”). Tôi đề xuất Bạn thử thay dòng Code này xem như thế nào:

Ví dụ Report bc_ve đặt tại thư mục “D:\Ten thu muc bat ky\Ten thu muc chua report]”

cPath=ADDBS([D:\Ten thu muc bat ky\Ten thu muc chua report]) && cPath là biến chung có thể khai báo tại file khởi động chương trình.

Repo form (cPath+[bc_ve]) prev

(Bạn có thể tham khảo thêm bài 1590 trang 159)

thanhtam_t3a
28-10-2011, 14:37
Theo như bạn nói thì nhiều khả năng bạn khai báo đường dẫn sai
Nếu file “bc_ve” bạn để chế độ Include thì câu lệnh của bạn đúng rồi, chương trình sẽ không báo lỗi, còn nếu bạn để ở chế độ Exclude thì bạn có thể đặt như thế này

Server1 = sys(5) + curd()
Dr_report = "&Server1.Report\"

report form [&Dr_report.bc_ve.frx] to print prompt preview
report form [&Dr_report. bc_ve.frx] to printer noconsole

Theo cách đặt như trên bạn có thể để chương trình chạy ở đâu tùy ý, không phải cố định đường dẫn một chỗ


Cám ơn bạn HUGOVFP, mình đã đọc hướng dẫn của bạn, Nhưng mình bận quá nên chưa nghiên cứu theo đường Link mà bạn đã cho mình. Sau này nếu có gì thắc mắc nhờ bạn giúp đỡ.

nquilai
31-10-2011, 22:04
Cám ơn 2 bạn HUGOVFP và thanhtam_t3a !
Theo hướng dẫn của 2 bạn mình làm được rồi

thanhtam_t3a
03-11-2011, 21:45
Mình nhớ trước đây có bài viết xác định một ứng dụng có được thi hành hay chưa (ví dụng mình cần biết file "D:\Winrar.exe" có đang được mở hay không)
Ai biết xin chỉ giúp mình

hoangnnm
04-11-2011, 08:21
Mình nhớ trước đây có bài viết xác định một ứng dụng có được thi hành hay chưa (ví dụng mình cần biết file "D:\Winrar.exe" có đang được mở hay không)
Ai biết xin chỉ giúp mình

Đây là code ví dụ trả về danh sách process như khi bạn xem bằng Task Manager :


Clear

Private lcComputer, loWMIService, colProcessList, loProcess
lcComputer = '.'
loWMIService = Getobject('winmgmts:' ;
+ '{impersonationLevel=impersonate}!\\' + lcComputer + '\root\cimv2')
colProcessList = loWMIService.ExecQuery('Select * from Win32_Process')

For Each loProcess In colProcessList
?loProcess.name
next

thanhtam_t3a
04-11-2011, 09:54
Bạn có thể nói câu lệnh bằng VFP để xác định một wngs dụng có đang chạy hay không
Ví dụ file "D:\Winrar.exe" (Trong ứng dụng VFP của mình có gọi file "D:\Winrar.exe", nên mình cần biết nó có đang chạy hay không)
Cảm ơn bạn

HUGOVFP
04-11-2011, 10:51
Bạn có thể nói câu lệnh bằng VFP để xác định một wngs dụng có đang chạy hay không
Ví dụ file "D:\Winrar.exe" (Trong ứng dụng VFP của mình có gọi file "D:\Winrar.exe", nên mình cần biết nó có đang chạy hay không)
Cảm ơn bạn

Gửi Bạn Thanhtam_t3a

Đoạn Code trên của Bạn Hoangnnm rất hữu ích và rất cụ thể. Ví dụ Bạn muốn xác định một ứng dụng “Winrar.exe" có được thi hành hay chưa?, Bạn ứng dụng vào chương trình của Bạn như sau:
(Dùng đoạn code trên của Bạn Hoangnnm để gợi ý với Bạn)


Set talk off
Private lcComputer, loWMIService, colProcessList, loProcess
lcComputer = '.'
loWMIService = Getobject('winmgmts:' + '{impersonationLevel=impersonate}!\\' + lcComputer + '\root\cimv2')
colProcessList = loWMIService.ExecQuery('Select * from Win32_Process')
For Each loProcess In colProcessList
cFilename=Allt(Lower(loProcess.name))
If cFilename=[winrar.exe]
MESSAGEBOX([Chuong trinh "]+Uppe(cFilename)+[" nay dang su dung.])
Exit
Endi
Next
Retu

robotfpt
04-11-2011, 10:51
Xin các pro cho mình hỏi, mình muốn mở 1 file bất kỳ trong fox thì làm thế nào? (Chẳng hạn chạy file *.Exe, *.Doc, *.Xls, *.Pdf...). Các ứng dụng để đọc các file đó (nếu có) đã được cài đặt. Tks!

hoangnnm
04-11-2011, 12:00
Xin các pro cho mình hỏi, mình muốn mở 1 file bất kỳ trong fox thì làm thế nào? (Chẳng hạn chạy file *.Exe, *.Doc, *.Xls, *.Pdf...). Các ứng dụng để đọc các file đó (nếu có) đã được cài đặt. Tks!

Cách đơn giản :


Private cmd, lcFile
lcFile = [D:\temp\doc\doc1.doc]
cmd = lcFile
Run &cmd && dùng cmd nên luôn hiện cửa sổ cmd ( chớp cái rồi tắt )

Ít đơn giản hơn 1 tí, (không hiện cửa sổ cmd) :


Private Shell, cmd, lcFile, _error

oShell = createobject("WScript.Shell")
lcFile = [D:\temp\doc\doc1.doc]
cmd = lcFile

_error= oShell.Run(cmd , 0, .T.)

Release oShell

If _error <> 0
Messagebox( 'co loi khi nen so lieu' )
Return
Endif

Hoặc dùng win32 Api :


Declare INTEGER ShellExecute in shell32 INTEGER handle, STRING @ oper, ;
STRING @ ifile, STRING @ iparam, STRING @ ipath, INTEGER showcmd

Private cmd, lcFile

lcFile = [D:\temp\doc\doc1.doc]
cmd = lcFile

=shellexecute(0,"open",cmd ,"","c:\", 1)

HUGOVFP
04-11-2011, 12:06
Xin các pro cho mình hỏi, mình muốn mở 1 file bất kỳ trong fox thì làm thế nào? (Chẳng hạn chạy file *.Exe, *.Doc, *.Xls, *.Pdf...). Các ứng dụng để đọc các file đó (nếu có) đã được cài đặt. Tks!

Bạn tham khảo thêm đoạn Code này để kích hoạt các file có kiểu mở rộng *.exe, *.htm, *.doc, *.xls, *.pdf …


Private cFileName
cFileName = GETFILE([exe|htm|doc|xls|pdf],[Chon file])
If !Empt(cFileName) then
DECLARE INTEGER ShellExecute IN SHELL32.DLL ;
INTEGER nWinHandle,;
STRING cOperation,;
STRING cFileName,;
STRING cParameters,;
STRING cDirectory,;
INTEGER nShowWindow
ShellExecute( 0, "Open",cFileName, "", "", 1 )
CLEAR DLLS ShellExecute
Endi

robotfpt
04-11-2011, 13:38
Cảm ơn các bạn, mình sẽ thử, thanks!

robotfpt
04-11-2011, 14:05
Xin hỏi các bạn 1 vấn đề nữa:
Mình tạo 1 form và trên form add 1 grid có 2 column, cả form và grid mình sử dụng lệnh để tạo (create form để tạo form và Lệnh addobject để add gridview để tạo đối tượng Grid vào form. Đối tượng Grid mình dùng Define để tạo grid và định nghĩa các thuộc tính, sau đó add vào form). Giờ mình muốn viết sự kiện cho Grid1.Column1.Text1.DblClick chẳng hạn, thì viết ở đâu?

thanhtam_t3a
04-11-2011, 14:33
Gửi bạn HUGOVFP và Hoangnnm
Cám ơn các bạn đã cho mình đoạn code để xác định một ứng dụng có đang chạy hay không
Cho mình hỏi, đoạn code trên các bạn viết trong VFP mấy (6, 7, 8 hay 9). Mình dùng VFP 6 viết đoạn code trên nhưng bị báo lỗi

HUGOVFP
04-11-2011, 15:42
Gửi bạn HUGOVFP và Hoangnnm
Cám ơn các bạn đã cho mình đoạn code để xác định một ứng dụng có đang chạy hay không
Cho mình hỏi, đoạn code trên các bạn viết trong VFP mấy (6, 7, 8 hay 9). Mình dùng VFP 6 viết đoạn code trên nhưng bị báo lỗi

Tôi dùng ứng dụng VFP9 để test đoạn code dùng “xác định file chương trình đã được thi hành hay chưa?” kết quả chạy tốt.

tayngangvfp
04-11-2011, 16:08
Gửi bạn HUGOVFP và Hoangnnm
Cám ơn các bạn đã cho mình đoạn code để xác định một ứng dụng có đang chạy hay không
Cho mình hỏi, đoạn code trên các bạn viết trong VFP mấy (6, 7, 8 hay 9). Mình dùng VFP 6 viết đoạn code trên nhưng bị báo lỗi

Một cách khác

nFH=FOPEN([C:\WINDOWS\NOTEPAD.EXE],1)
IF nFH = -1
* Đang mở / chạy / ....
ELSE
*Không đang chạy
FCLOSE(nFH)
ENDIF

thanhtam_t3a
07-11-2011, 15:05
cám ơn bạn tayngangvfp, mình đã sử dụng được câu lệnh bạn chỉ cho mình
cho mình hỏi thêm một vấn đề: khi mình đã xác định được một ứng dụng được xác định trước là đang chạy (ví dụ mình xác định được file d:\winrar.exe đang chạy). Mình phải dùng lệnh gì để bắt nó thoát, không chạy nữa

huyenmeocon
07-11-2011, 18:11
cho mình hỏi tí....làm thế nào để đóng gói phần mềm khi viết trong visual foxpro 9.0?
Mình muốn phần mềm thành 1 file exe chạy độc lập với visual foxpro.

HUGOVFP
07-11-2011, 21:30
cho mình hỏi tí....làm thế nào để đóng gói phần mềm khi viết trong visual foxpro 9.0?
Mình muốn phần mềm thành 1 file exe chạy độc lập với visual foxpro.

Vấn đề của Bạn, việc thực hành đóng gói dự án, biên dịch thành file thực thi (EXE) cho một chương trình cụ thể của Bạn thì không phức tạp lắm, tuy nhiên nếu trình bày lý thuyết thì không thể trả lời một tí được …, hướng dẫn tổng quát chung chung thì không đầy đủ, hướng dẫn cụ thể, chi tiết thì phải cần nhiều thời gian, không biết thế nào là đủ, để đáp ứng các yêu cầu, tình huống mỗi chương trình, dự án khác nhau (trong các tài liệu, vấn đề này liên quan đến một số chương, đọc cũng mất thời gian nhưng cũng dễ hiểu).
Để kịp thời, Bạn có thể liên hệ Mail với các Bạn khác trong Diễn đàn này để được hướng dẫn tỉ mỉ hoặc liên hệ trực tuyến thì tốt hơn.

hoangpnt349
08-11-2011, 12:59
cám ơn bạn tayngangvfp, mình đã sử dụng được câu lệnh bạn chỉ cho mình
cho mình hỏi thêm một vấn đề: khi mình đã xác định được một ứng dụng được xác định trước là đang chạy (ví dụ mình xác định được file d:\winrar.exe đang chạy). Mình phải dùng lệnh gì để bắt nó thoát, không chạy nữa

Cách đơn giản nhất là bạn sử dụng câu lệnh như sau:
RUN TASKKILL.EXE /F /IM "winrar.exe"

nquilai
09-11-2011, 07:11
Cho hỏi ace minh dùng chương refox XI để chống dich ngược chương khôngminhf viết bằng vf 9 nhưng có vấn đề là trong win7 hoặc sever 2008 in được ra màn hình còn in ra máy in bị lỗi .ACE nào có chương trình chống dịch ngược chương trình viết bằng VF 9 nào khắc phục được không

thanhtam_t3a
10-11-2011, 07:53
Cách đơn giản nhất là bạn sử dụng câu lệnh như sau:
RUN TASKKILL.EXE /F /IM "winrar.exe"

cám ơn hướng dẫn của bạn, nhưng có các nào chỉ tắt riêng ứng dụng tại một địa chỉ nhất đinh không. Theo cách của bạn, nó tắt tất cả ứng dụng đang chạy có tên là winrar.exe bất kể địa chỉ nào

hoangpnt349
11-11-2011, 09:04
cám ơn hướng dẫn của bạn, nhưng có các nào chỉ tắt riêng ứng dụng tại một địa chỉ nhất đinh không. Theo cách của bạn, nó tắt tất cả ứng dụng đang chạy có tên là winrar.exe bất kể địa chỉ nào
Nếu bạn xác định được Process ID (PID) của ứng dụng cần tắt thì dùng lệnh sau:
RUN TASKKILL.EXE /F /PID nnnn
Trong đó: nnnn là PID của ứng dụng cần tắt.

changkhoag
14-11-2011, 09:47
Mình có CSDL bao gồm tên và điểm, bác nào có thể giúp mình viết đoạn code để xếp hạng cho từng học sinh giống như hàm Rank trong Excel:
- Nếu các HS có điểm số giống nhau thì được xếp hạng bằng nhau.
- Điền hạng tương ứng vào Field Hang trong file .DBF.
Mình có gửi File .DBF dữ kèm. Xin cảm ơn trước.

hoangpnt349
14-11-2011, 11:52
Mình có CSDL bao gồm tên và điểm, bác nào có thể giúp mình viết đoạn code để xếp hạng cho từng học sinh giống như hàm Rank trong Excel:
- Nếu các HS có điểm số giống nhau thì được xếp hạng bằng nhau.
- Điền hạng tương ứng vào Field Hang trong file .DBF.
Mình có gửi File .DBF dữ kèm. Xin cảm ơn trước.

USE test
INDEX ON bai1 * (-1) TO #a
whang = 1
DO WHILE !EOF()
wbai1_truoc = bai1
wdem = 0
DO WHILE bai1 = wbai1_truoc AND !EOF()
REPLACE hang WITH whang
wdem = wdem + 1
SKIP
ENDDO
whang = whang + wdem
ENDDO
USE IN test

Bạn nhớ mở rộng field Hang trong file .dbf (Nếu không sẽ bị tràn số).
Chúc bạn vui.

changkhoag
14-11-2011, 14:16
Cảm ơn bác hoangpnt34 rất nhiều!

HUGOVFP
14-11-2011, 19:49
Mình có CSDL bao gồm tên và điểm, bác nào có thể giúp mình viết đoạn code để xếp hạng cho từng học sinh giống như hàm Rank trong Excel:
- Nếu các HS có điểm số giống nhau thì được xếp hạng bằng nhau.
- Điền hạng tương ứng vào Field Hang trong file .DBF.
Mình có gửi File .DBF dữ kèm. Xin cảm ơn trước.

Gửi changkhoag
Bạn có thể tham khảo thêm đoạn Code sau, tuy hơi dài dòng nhưng có thêm việc xếp thứ tự record từ hạng từ 1 đến hạng cuối.


Set talk off
Clos tabl all
Sele A
Crea Curs Temp1(Hoten C(40),bai1 N(5,2),hang I)
Sele B
Use Test Excl
Do Whil Recc()>0
nMax= 0
Sele B
Go top
Scan
nMax = MAX(nMax,bai1)
Ends
Set filt to bai1=nMax
Scan
Sele A
Appen blan
If Recc()=1
nHang=1
Else
If nMax<nMax2
nHang=Recn()
Endi
Endi
Repl A.Hoten with B.Hoten,A.bai1 with nMax,A.hang with nHang
nMax2=A.bai1
Sele B
Ends
Sele B
Dele all
Pack
nMax=0
Sele B
Set filt to
Endd
Sele B
Dele all
Pack
Sele A
Scan
Sele B
Appen blan
Repl B.Hoten with A.Hoten,B.bai1 with A.bai1,B.hang with A.hang
Sele A
Ends
Use
Sele B
Go top
Brow && lenh nay chi de xem co the xoa
Use
Retu

nghinvbds
16-11-2011, 17:06
Bác nào có code gửi email hàng loạt ko nhỉ

three_xi
21-11-2011, 09:10
Em có vấn đề ngày nhờ các bác giúp đỡ:
em có một bảng theo_doi_ban_hang như sau:
ngay_ban c(10); ma_hang c(3); so_luong n(10)
01/01/2011; ABC ; 100
01/01/2011; ACB ; 200
09/01/2011; ABC ; 150
15/01/2011; ABC; 270



Em muốn tạo 1 form:
Gồm 1 text box đển nhập mã hàng
và 1 combo box để thể hiện các ngày bán của mã hàng đã nhập trong text box
Các bác giúp em với, viết code ntn để combo box lấy dữ liệu từ trường ngay_ban và mặc định giá trị thể hiện là ngày cuối cùng mà mã hàng được nhập vào
Cụ thể: nếu em nhập mã hàng là ABC, thì trong combo box sẽ có các giá trị: 01/01/2011; 09/01/2011; 15/01/2011.
Và giá trị mặc định của combo box là: 15/01/2011 (ngày lớn nhất).
Cảm ơn các bác trước.

HUGOVFP
21-11-2011, 12:14
Em có vấn đề ngày nhờ các bác giúp đỡ:
em có một bảng theo_doi_ban_hang như sau:
ngay_ban c(10); ma_hang c(3); so_luong n(10)
01/01/2011; ABC ; 100
01/01/2011; ACB ; 200
09/01/2011; ABC ; 150
15/01/2011; ABC; 270



Em muốn tạo 1 form:
Gồm 1 text box đển nhập mã hàng
và 1 combo box để thể hiện các ngày bán của mã hàng đã nhập trong text box
Các bác giúp em với, viết code ntn để combo box lấy dữ liệu từ trường ngay_ban và mặc định giá trị thể hiện là ngày cuối cùng mà mã hàng được nhập vào
Cụ thể: nếu em nhập mã hàng là ABC, thì trong combo box sẽ có các giá trị: 01/01/2011; 09/01/2011; 15/01/2011.
Và giá trị mặc định của combo box là: 15/01/2011 (ngày lớn nhất).
Cảm ơn các bác trước.

Bạn đã có:
- 1 bảng Theo_doi_ban_hang có cấu trúc như đã nêu (Nếu không trở ngại, Bạn nên chỉnh thiết kế kiểu của field ngay_ban là kiểu ngày (D) thay cho kiểu chuỗi (C))
- 1 text box của Form để nhập mã hàng (Name): Txtmahang
- 1 combo box của Form để thể hiện ngày bán hàng (Name): Cmbngayban

Bạn tham khảo đoạn Code sau:
(viết tại sự kiện InteractiveChange của text box Txtmahang)


Clos tabl all
Thisform.Cmbngayban.Clear
Use Theo_doi_ban_hang
Set filt to
Go top
Loca for Allt(Lower(ma_hang))= Allt(Lower(This.Value))
If foun()
Set filt to Allt(Lower(ma_hang))= Allt(Lower(This.Value))
Coun to So
Go bott
Thisform.Cmbngayban.DisplayValue=Ngay_ban && Combobox thể hiện giá trị mặc định ngày bán là ngày của mẫu tin cuối cùng chỉ theo ma_hang được chọn trong Bảng Theo_doi_ban_hang
Go top
Dimension cNgayban(So)
i=1
Scan
cNgayban(i)=Allt(Ngay_ban)
Thisform.Cmbngayban.AddItem(cNgayban(i))
i=i+1
Ends
Endi

huyenmeocon
25-11-2011, 22:48
cho mình hỏi, làm thế nào để tạo một report tự động trong phần mềm.
ví dụ, mình làm form thống kê các nhân viên có lương bằng một số nào đó( được nhập từ bàn phím). khi lọc được những nhân viên đó thì mình muốn xuất report ra, có danh sách các công nhân sau khi lọc, giúp mình nhá.

saobangkhoc_qt
25-11-2011, 23:44
huyenmeocon noi ro y cua banduoc ko?

thanhtam_t3a
28-11-2011, 10:48
- Mình có 1 folder có chứa file "Setfonts.inf" và một số file Fonts (file font chữ)
- Trong Explore mình bấm chuột phải vào file "Setfonts.inf" và chọn Intall thì nó sẽ chép những file Font vào hệ thống
- Cho mình hỏi, trong VFP để nó thực thi giống như mình chọn chuột phải và chọn Intall

Mong các bạn giúp đỡ mình, cảm ơn các bạn
MÌnh không biết cách upload file, nếu bạn nào cần những file này thì nhắn Email để gửi

HUGOVFP
28-11-2011, 17:19
- Mình có 1 folder có chứa file "Setfonts.inf" và một số file Fonts (file font chữ)
- Trong Explore mình bấm chuột phải vào file "Setfonts.inf" và chọn Intall thì nó sẽ chép những file Font vào hệ thống
- Cho mình hỏi, trong VFP để nó thực thi giống như mình chọn chuột phải và chọn Intall

Mong các bạn giúp đỡ mình, cảm ơn các bạn
MÌnh không biết cách upload file, nếu bạn nào cần những file này thì nhắn Email để gửi

Giả sử bạn có 1 folder FONTS có chứa file "Setfonts.inf" và một số file Fonts (file font chữ) đặt tại thư mục gốc EXE của chương trình. Bạn tham khảo đoạn code sau đặt trong file khởi động chương trình:


If Messagebox('Nap fonts MS Sanserif, .Vntime ... cho chuong trinh (Y/N) ? ',292,[Xac nhan])= 6 then
Napfont= [RunDLL32.EXE SetupAPI.dll,InstallHinfSection DefaultInstall 132 ] +;
Full(Curdir())+[FONTS\setfonts.inf]
RUN &Napfont
Endi

dung_kg
30-11-2011, 16:05
Cho mình hỏi: Giả sử mình muốn sửa trường TEN trong table Danhsach mẫu tin đầu tiên thì làm như sau:

select danhsach
go top
replace TEN with "Tran Van A"

Vậy muốn replace mẫu tin thứ 2 hoăc mẫu tin bất kỳ thì dùng lệnh nào?

thanhtam_t3a
30-11-2011, 17:41
muốn replace mẫu tin nào thì chuyển đến mẫu tin đó rồi replace
ví dụ muốn replace mẫu tin thứ 100 trường TEN thành "Nguyen Van Teo" thì gõ:

go 100
replace TEN with "Nguyen Van Teo"

nethangkhong
30-11-2011, 20:25
Mình có một chương trình viết trên nền VFP 3.0. Lúc trước cài trên máy cũ ram 256 Mb chạy ok. Giờ nâng cấp lên máy mới Ram 1Gb ko chạy được chương trình. Có cách nào khắc phục mà không hạn chế Ram về 256 Mb ko???

HUGOVFP
30-11-2011, 21:01
Mình có một chương trình viết trên nền VFP 3.0. Lúc trước cài trên máy cũ ram 256 Mb chạy ok. Giờ nâng cấp lên máy mới Ram 1Gb ko chạy được chương trình. Có cách nào khắc phục mà không hạn chế Ram về 256 Mb ko???
Trước đây Bạn chạy chương trình trên máy cũ cài hệ điều hành (Windows) nào? có thể do chương trình của Bạn viết trên nền VFP 3.0 (cũ) không tương thích với hệ điều hành mới (WinXP hoặc Win7…). Bạn thử cài vào máy tính ứng dụng VFP 6.0 hoặc cao hơn, sau đó biên dịch lại chương trình trên nền ứng dụng này và chạy thử xem sao.

dung_kg
01-12-2011, 09:28
vậy cho mình hỏi muốn replace mẫu tin kế mẫu tin cuối cùng thì dùng lệnh gì?

VD: replace mẫu tin cuối cùng(record số 300) thì là:

go bottom
replace TEN with "Nguyen Van Teo"

Vậy muốn replace mẫu tin kế mẫu tin cuối (tức là record 299) mà không phải dùng lệnh "go 299" vì mình không thể xác định số record

hoangnnm
01-12-2011, 10:33
vậy cho mình hỏi muốn replace mẫu tin kế mẫu tin cuối cùng thì dùng lệnh gì?

VD: replace mẫu tin cuối cùng(record số 300) thì là:

go bottom
replace TEN with "Nguyen Van Teo"

Vậy muốn replace mẫu tin kế mẫu tin cuối (tức là record 299) mà không phải dùng lệnh "go 299" vì mình không thể xác định số record

Đó là vì bạn không chịu đọc file help của foxpro .

Recno() : trả về số thứ tự của bản ghi hiện hành ( nơi con trỏ đang đứng )
Reccount() : trả về tổng số bản ghi của bảng hiện hành

darshana
02-12-2011, 09:24
Đó là vì bạn không chịu đọc file help của foxpro .

Recno() : trả về số thứ tự của bản ghi hiện hành ( nơi con trỏ đang đứng )
Reccount() : trả về tổng số bản ghi của bảng hiện hành
Bạn có thể dùng các hàm Recno(), Reccount() để xác định con trỏ bản ghi cũng được nhưng nếu trong trường hợp có index, hoặc filter thì có thể thứ tự bản ghi cuối cùng không phải ở cuối đâu. Cách khác bạn dùng:
go bottom
skip -1
replace ...

ngthva
06-12-2011, 08:05
Các bạn giúp mình:
Viết chương trình như nào để có thể hiển thị tờ lịch ngày thường xuyên trên form.

kelangdu
06-12-2011, 21:27
mình cần các bạn giúp đỡ
tình hình là mình cần show 1 bức ảnh có đuôi .npg mà tên file được nhập từ textbox vì mình đang thực hiện nghiệp vụ tìm kiếm .bạn nào biết cho mình xin đoạn chương trình mẫu
mình mới tham gia diễn đàn mong các bạn giúp đỡ

luu_luu
07-12-2011, 07:36
mình cần các bạn giúp đỡ
tình hình là mình cần show 1 bức ảnh có đuôi .npg mà tên file được nhập từ textbox vì mình đang thực hiện nghiệp vụ tìm kiếm .bạn nào biết cho mình xin đoạn chương trình mẫu
mình mới tham gia diễn đàn mong các bạn giúp đỡ

xem thử...có dùng được không

HUGOVFP
07-12-2011, 10:43
Các bạn giúp mình:
Viết chương trình như nào để có thể hiển thị tờ lịch ngày thường xuyên trên form.
Nếu Bạn chưa thiết kế được việc hiển thị thường xuyên Lịch ngày trên form, Bạn cho biết địa chỉ Email để tiện việc liên hệ trao đổi, hướng dẫn thiết kế bản Demo.

VuNhatVan
07-12-2011, 15:05
mình cần các bạn giúp đỡ
tình hình là mình cần show 1 bức ảnh có đuôi .npg mà tên file được nhập từ textbox vì mình đang thực hiện nghiệp vụ tìm kiếm .bạn nào biết cho mình xin đoạn chương trình mẫu
mình mới tham gia diễn đàn mong các bạn giúp đỡ

Mình sửa lại đôi chút cho bạn dễ sử dụng: Tên file hình ảnh có thể nhập vào textbox hoặc bấm button "Chon"
Nháy đúp vào từng thành phần để xem code

VuNhatVan
07-12-2011, 15:11
vậy cho mình hỏi muốn replace mẫu tin kế mẫu tin cuối cùng thì dùng lệnh gì?

VD: replace mẫu tin cuối cùng(record số 300) thì là:

go bottom
replace TEN with "Nguyen Van Teo"

Vậy muốn replace mẫu tin kế mẫu tin cuối (tức là record 299) mà không phải dùng lệnh "go 299" vì mình không thể xác định số record

Bạn dùng lệnh:
GO RECCOUNT()-1
repl Ten with "Nguyen Van B"

kelangdu
07-12-2011, 19:12
trước tiên mình cám ơn 2 bạn VuNhatVan và luu_luu rất nhiều nhưng mình muốn chỉ đánh vào textbox tên file thôi còn đường dẫn thì mật định vào 1 thư mục định sẵn
giống như mình tìm Mã số học sinh hiện ra thông tin của học sinh và hình luôn đó bạn
mong bạn chỉ mình lần nửa
cám ơn 2 bạn đã giúp mình

VuNhatVan
07-12-2011, 21:42
- Trong ví dụ của mình, nếu bạn copy form đó vào thư mục có chứa những file ảnh, cho chạy form rồi đánh tên file ảnh vào Textbox, bấm Enter là sẽ hiện ra file ảnh.
- Còn nếu bạn để file ảnh ở chỗ khác chỗ để form, ví dụ "D:\Anh" thì trong Valid của textbox bạn có thêm câu lệnh ở phía trên cùng là Set default to "D:\Anh" rồi cho chạy form, đánh tên file cũng vẫn ra.
- Để chạy mặc định file PNG mà khi đánh tên file trong textbox nếu đánh đuôi là .png hoặc không đánh đuôi vẫn ra thì sau lệnh Set default to "D:\Anh" bạn cho thêm mấy dòng sau đây vào:
IF UPPER(RIGHT(ALLTRIM(this.Value),4))<>".PNG"
this.Value=ALLTRIM(this.Value)+".PNG"
ENDIF

kelangdu
08-12-2011, 20:37
cám ơn bạn VuNhatVan rất nhiều,bạn chỉ mình nhiệt tình quá vì mình mới tìm hiểu ngôn ngữ này nên mình viết dỡ ẹt .

cám ơn bạn lần nửa nha

huyenmeocon
13-12-2011, 08:36
Cho em hỏi tí về background trong ASP.NET.
Em thiết kê trang web, khi em chọn 1 div chẳng hạn, bên mục properties của div này em chọn style->background sau đó em đưa vào 1 hình ảnh design thì hiển thị bình thường nhưng chạy thì lại không có gì, nhưng chọn màu thì chạy nó hiển thị .. bạn nào biết chỉ giùm em cách sữa lỗi này.

Người hỏi đáp
18-12-2011, 12:20
Cho em hỏi tí về background trong ASP.NET.
Em thiết kê trang web, khi em chọn 1 div chẳng hạn, bên mục properties của div này em chọn style->background sau đó em đưa vào 1 hình ảnh design thì hiển thị bình thường nhưng chạy thì lại không có gì, nhưng chọn màu thì chạy nó hiển thị .. bạn nào biết chỉ giùm em cách sữa lỗi này.
Tạo 1 cái css rồi add vào div

hung_public
29-12-2011, 10:24
Chào các bác!
Em có một file dữ liệu dạng *.csv, bây giờ em muốn dùng VFP để thực hiện định dạng file này thành một file khác có dạng bảng biểu, trình bày đẹp... theo ý muốn của mình thì phải làm thế nào?
Có 2 cách mà em dự định sẽ thực hiện:
- Cách 1: Dùng VFP để chèn nội dung, add dữ liệu từ file *.csv rồi sau đó định dạng file *.xls này.
- Cách 2: Dùng một mẫu biểu đã có trước rồi thực hiện paste dữ liệu từ file *.csv vào.
Vậy cách làm nào thuận và dễ hơn? Các bác hướng dẫn em cách làm với nhé.
Em cảm ơn các bác rất nhiều!

hoangnnm
29-12-2011, 13:16
Chào các bác!
Em có một file dữ liệu dạng *.csv, bây giờ em muốn dùng VFP để thực hiện định dạng file này thành một file khác có dạng bảng biểu, trình bày đẹp... theo ý muốn của mình thì phải làm thế nào?
Có 2 cách mà em dự định sẽ thực hiện:
- Cách 1: Dùng VFP để chèn nội dung, add dữ liệu từ file *.csv rồi sau đó định dạng file *.xls này.
- Cách 2: Dùng một mẫu biểu đã có trước rồi thực hiện paste dữ liệu từ file *.csv vào.
Vậy cách làm nào thuận và dễ hơn? Các bác hướng dẫn em cách làm với nhé.
Em cảm ơn các bác rất nhiều!

Theo mình thì cả 2 cách trên đều không khó, nhưng cách thứ 2 phiền phức hơn 1 tí bởi vì nó đòi hỏi file mẫu luôn phải đúng định dạng và trống dữ liệu .

Bạn nên làm theo cách này :
- mở file csv ra
- chạy record Macro của excel
- thực hiện việc trình bày, định dạng lại cho đẹp theo ý của bạn
- sau khi xong xuôi thì stop macro recording
- xem code được tạo ra từ việc record macro
- tham khảo và sửa thành code vfp

chanhkhmt
04-01-2012, 08:19
có ai chỉ cho mình cách nào để lấy dữ liệu từ Access / Excell vào trong Visual FoxPro 6.0 sử dụng không? Vì mình có CSDL từ Access rồi giờ mình vào VFP sử dụng mà muốn dùng lại SCDL đó mà mình không biết cách làm. Mong bạn có thể chỉ giúp mình. Thanks you!

tuan_tvkg
04-01-2012, 09:11
Đây là Code chuyển Database dữ liệu từ Access Sang VFP

PARAMETERS _Dir, _File
*_Dir = Duong dan thu muc Data; _File : Ten File Access
IF !DIRECTORY(_Dir)
MD (_Dir)
ENDIF
_Dir = ADDBS(_Dir)
LOCAL lcMyFile, lnConnHandle, lnResult, _Default
_Default = FULLPATH('')
CLOSE DATABASES ALL
CLOSE TABLES ALL
SET TALK OFF
SET SAFETY OFF
SET DEFAULT TO (_Dir)

IF !FILE(_Dir + _File)
=MESSAGEBOX("Khong co File : " + _Dir + _File)
RETURN
ENDIF
lnConnHandle = SQLSTRINGCONNECT('DRIVER=MICROSOFT ACCESS DRIVER (*.MDB);DBQ=' + _Dir + _File)
IF lnConnHandle > 0
lnResult = SQLTABLES(lnConnHandle,'TABLE','TABLELIST')
IF lnResult > 0
CREATE DATABASE MyDatabase
SET DATABASE TO MyDatabase
SCAN
_Table_Name = ALLTRIM(Table_Name)
lcNewName = SQLEXEC(lnConnHandle, [SELECT * FROM ] + _Table_Name,[TmpTable])
IF lcNewName > 0
WAIT WINDOW NOWAIT "Dang chuyen Table " + _Table_Name
SELECT TmpTable
COPY TO (_Dir + _Table_Name) DATABASE MyDatabase
USE IN TmpTable
SELECT TABLELIST
ENDIF
ENDSCAN
USE IN TABLELIST
ENDIF
SQLDISCONNECT(lnConnHandle)
ELSE
SET DEFAULT TO (_Default)
SET TALK ON
SET SAFETY ON
=MESSAGEBOX("Khong ket noi duoc")
SET DEFAULT TO (_Default)
RETURN
ENDIF
SET DEFAULT TO (_Default)
CLOSE DATABASES ALL
CLOSE TABLES ALL
SET TALK ON
SET SAFETY ON
RETURN

dungnt1011
12-01-2012, 13:07
Các Bro ai có Key Refox XII(hoặc bản full) post cho mình với nhé.
Cảm ơn các Bro nhiều!

dungnt1011
18-01-2012, 15:45
Ko ai trả lời em ạ. Các Bro nghỉ tết hết rồi ưh?
Chúc các Bro năm mới "An khang thịnh vượng"

VuNhatVan
19-01-2012, 04:15
Mình có bản XI+ thôi bạn