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

tayngangvfp
06-03-2009, 09:28
To TayngangVFP.
Mình không thể Modify hoặc Run Form ChuyenDoiFont nếu không cài VFP9. Mặc dù mình đã chép 1 số file .Dll kể cả file Vfp9.exe như bạn đã hướng dẫn trước đây. Còn thiếu file nào không hướng dẫn mình với nhé.
Cám ơn bạn trước.

- Vì đây là các file trong giai đoạn thiết kế, nên Anh phải cài VFP để có thể xem được. Còn những file như anh nói thì chỉ dùng khi đã biên dịch ra file.exe thôi.
M có nghe nói chỉ cần chép các file sau đây, là có thể chạy IDE của VFP được
vfp9r.dll
vfp9renu.dll
msvcr71.dll
gdiplus.dll
vfp9.exe
ReportBuilder.app
ReportOutput.app
ReportPreview.app
Nếu chỉ copy các file như trên. Anh phải mở = open with ...

rong70
06-03-2009, 12:40
To TayngangVFP
Cám ơn bạn. Đúng là chép tất cả các file đó là chạy IDE của VFP9 được đấy.
Mình thấy với VFP9 dùng Unicode tổ hợp thì nhập liệu bằng Font Unicode được. Khi chuyển file này sang Excel thì Excel không hiểu. Nhưng nếu nhập trực tiếp bằng bảng mã Unicode tổ hợp font unicode thì Excel lại hiển thị tiếng việt rất tốt. Mình không hiểu tại sao !

tayngangvfp
06-03-2009, 13:00
To TayngangVFP
Cám ơn bạn. Đúng là chép tất cả các file đó là chạy IDE của VFP9 được đấy.
Mình thấy với VFP9 dùng Unicode tổ hợp thì nhập liệu bằng Font Unicode được. Khi chuyển file này sang Excel thì Excel không hiểu. Nhưng nếu nhập trực tiếp bằng bảng mã Unicode tổ hợp font unicode thì Excel lại hiển thị tiếng việt rất tốt. Mình không hiểu tại sao !

Anh nói rõ 1 chút, vì m chưa hiểu ý anh như thế nào

rong70
06-03-2009, 13:12
To TayNgangVFP
Ví dụ mình Brow 1 file Temp.DBF chẳn hạn. Sau đó trên menu chọn Table\Font\rồi chọn font Unicode cần nhập. Ở phần Scrip chọnh vietnamese.
Ở bộ gỏ Unikey chẳn hạn chọn Unicode tổ hợp. Lúc này ở cửa sổ Brow chúng ta nhập liệu được bằng font unicode tiếng việt. Nhưng nếu mình copy file này bằng lệnh copy to file ... Type Xls để ra file Excel thì không hiển thị đúng tiếng việt có dấu nữa.

tayngangvfp
06-03-2009, 15:22
To TayNgangVFP
Ví dụ mình Brow 1 file Temp.DBF chẳn hạn. Sau đó trên menu chọn Table\Font\rồi chọn font Unicode cần nhập. Ở phần Scrip chọnh vietnamese.
Ở bộ gỏ Unikey chẳn hạn chọn Unicode tổ hợp. Lúc này ở cửa sổ Brow chúng ta nhập liệu được bằng font unicode tiếng việt. Nhưng nếu mình copy file này bằng lệnh copy to file ... Type Xls để ra file Excel thì không hiển thị đúng tiếng việt có dấu nữa.

1/ Các control của VFP không hỗ trợ nhập trực tiếp unicode => không thể nhập trong cửa sổ Brow => nếu nhập được, đó là font gì đó chứ không phải unicode. A nên kiểm tra lại.
2/ Các field kiểu char trong table của VFP cũng không hỗ trợ unicode. Nên để lưu chỉ còn cách lưu vào Field kiểu memo.

rong70
06-03-2009, 15:57
1/ Các control của VFP không hỗ trợ nhập trực tiếp unicode => không thể nhập trong cửa sổ Brow => nếu nhập được, đó là font gì đó chứ không phải unicode. A nên kiểm tra lại.
2/ Các field kiểu char trong table của VFP cũng không hỗ trợ unicode. Nên để lưu chỉ còn cách lưu vào Field kiểu memo.

Không đâu bạn ạ kiểu Char đấy. Mình đã nhập thử rồi. Bạn cứ làm thử xem. Để chắt ăn hơn sau khi lưu lại rồi bạn Brow Font "Times New Roman" rồi vào Menu\Table\font chọn font Time New Roman. Phần Scrip chọn Vietnamese bạn sẽ thấy kết quả.
Để mình nói thêm phần này nữa với file Excel không hiển thị được đúng font tiếng việt như mình đã nói ở trên thì mình định dạng lại font gì nó cũng không ra đúng tiếng việt cả. Nhưng nếu mình copy đoạn text này (không hiển thị đúng font tiếng việt) rồi dùng unikey chuyển mã clipboard với nguồn là window Cp 1258 đích là Unicode thì kết ra đúng tiếng việt Unicode

tayngangvfp
06-03-2009, 16:58
Không đâu bạn ạ kiểu Char đấy. Mình đã nhập thử rồi. Bạn cứ làm thử xem. Để chắt ăn hơn sau khi lưu lại rồi bạn Brow Font "Times New Roman" rồi vào Menu\Table\font chọn font Time New Roman. Phần Scrip chọn Vietnamese bạn sẽ thấy kết quả.
Để mình nói thêm phần này nữa với file Excel không hiển thị được đúng font tiếng việt như mình đã nói ở trên thì mình định dạng lại font gì nó cũng không ra đúng tiếng việt cả. Nhưng nếu mình copy đoạn text này (không hiển thị đúng font tiếng việt) rồi dùng unikey chuyển mã clipboard với nguồn là window Cp 1258 đích là Unicode thì kết ra đúng tiếng việt Unicode

Bảng mã 1258 không phải là mã unicode.
Nếu dùng bảng mã này (vietkey gọi là VN Unicode 2), các control trong VFP có thể nhập tiếng việt được!!!
Tuy nhiên word, excel thì không được

Anh xem thêm ở đây
http://www.3c.com.vn/Story/vn/hotrokhachhang/traodoikinhnghiem/legcosodulieu/2006/12/5175.html
http://clubvt.info/index.php?showtopic=2439

nktkbnn
09-03-2009, 20:55
Bác nào có thể cho em một Project mà khi buld lên chạy file này chỉ xuất hiện một form mà mình cần thôi! Cái này em chưa dành vì khi chạy nó vẫn xuất hiện môi trường của Vfp đối với *.app còn *.exe thì không hiện lên được! Em rất cần! Em xin cám ơn trước!

icanvn
10-03-2009, 08:49
Bác nào có thể cho em một Project mà khi buld lên chạy file này chỉ xuất hiện một form mà mình cần thôi! Cái này em chưa dành vì khi chạy nó vẫn xuất hiện môi trường của Vfp đối với *.app còn *.exe thì không hiện lên được! Em rất cần! Em xin cám ơn trước!

Đây là đoạn code tôi dung để build Project cua mình bạn tham khảo nhe!
Nếu cần bạn đưa email mình gửi cho.

SET DATE DMY
SET DEFAULT TO SYS(5) + SYS(2003)
SET PATH TO "kindergarten";"pic";"kindergarten\Security\data","kindergarten\data"
PUBLIC useridsaved_c,usernamesaved_c
useridsaved_c = "Admin"
SET RESOURCE OFF
_SCREEN.width = 1024
_SCREEN.height = 649
_SCREEN.windowstate = 2
_SCREEN.closable = .T.
_SCREEN.backcolor = 12632256
_SCREEN.picture = "logo\kgreyback.bmp"
MODIFY WINDOW SCREEN TITLE "Kindergarten System" NOCLOSE
_SCREEN.caption = "Kindergarten System "
_SCREEN.icon = "\pic\icon\259.ico"
SET SYSMENU TO
ZOOM WINDOW screen MAX
MODIFY WINDOW screen NOCLOSE
SET MESSAGE TO "Kindergarten System " + CDOW(DATE()) + ', ' + DTOC(DATE())
SET CLASSLIB TO class\class_vn
SET PATH TO DATA
DO FORM forms\frm_main.scx
READ EVENTS
ENDPROC

nktkbnn
10-03-2009, 20:37
Đây là đoạn code tôi dung để build Project cua mình bạn tham khảo nhe!
Nếu cần bạn đưa email mình gửi cho.

SET DATE DMY
SET DEFAULT TO SYS(5) + SYS(2003)
SET PATH TO "kindergarten";"pic";"kindergarten\Security\data","kindergarten\data"
PUBLIC useridsaved_c,usernamesaved_c
useridsaved_c = "Admin"
SET RESOURCE OFF
_SCREEN.width = 1024
_SCREEN.height = 649
_SCREEN.windowstate = 2
_SCREEN.closable = .T.
_SCREEN.backcolor = 12632256
_SCREEN.picture = "logo\darkgreyback.bmp"
MODIFY WINDOW SCREEN TITLE "Kindergarten System" NOCLOSE
_SCREEN.caption = "Kindergarten System "
_SCREEN.icon = "\pic\icon\259.ico"
SET SYSMENU TO
ZOOM WINDOW screen MAX
MODIFY WINDOW screen NOCLOSE
SET MESSAGE TO "Kindergarten System " + CDOW(DATE()) + ', ' + DTOC(DATE())
SET CLASSLIB TO class\arkclass
SET PATH TO DATA
DO FORM forms\frm_main.scx
READ EVENTS
ENDPROC

Vâng em rất cần! Em cám ơn trước nhé! Mail của em
nghiemkhactienkbnn@yahoo.com.vn

VuNhatVan
10-03-2009, 20:41
Mình làm một ứng dụng sử dụng VFP9.0, trong ứng dụng có tạo file help chạy trên máy của mình rất tốt, nhưng khi chạy trên máy khác (không cài VFP9.0) thì khi ấn F1 không thể nào gọi được file help. Bác nào biết chỉ giúp với.

qminh1968
11-03-2009, 09:19
Xin hỏi các cao thủ VFP
Có thể chuyển DL báo cáo thuế của CT viết = VFox vào thẳng chương trình báo cáo thuế HHKK của Tổng cục thuế được không ? (không qua file Excel, giao diện nhập).
Mình nghe nói có 1 số CT kế toán đã làm được.
Do dữ liệu của HTKK lưu = file .xml dạng text sử dung font Unicode, theo các bạn mình có thể làm như sau :
- Đọc dữ liệu trong file DBF (font non-Uni),
- chuyển font ->Unicode
- Ghi vào file .xml

Được không ? Có ai làm được rồi cho mình biết nhé.

nktkbnn
11-03-2009, 17:47
Vâng em rất cần! Em cám ơn trước nhé! Mail của em
nghiemkhactienkbnn@yahoo.com.vn

Không thể nào tải được bác ơi! Nó báo lỗi mail! Bác có cách nào gửi khác không? Em cám ơn bác trước nhé!Hay bác chuyển lại cho em vào
nktkbnn@yahoo.com.vn

tienpvbrvt
11-03-2009, 22:33
Bác nào biết xin chi giúp:
Tôi đang viết 1 phần mềm và Visual Foxpro + CSQL là SQL Server 2000. Đoạn code vào để lưu file dạng Image, Doc,... vào SQL Sever và xuất ra để xem.Theo tôi biết phải dùng hàm chuyển đổi dữ liệu về dạng Binary nhưng không biết cách làm.
Xin cảm ơn trước

rong70
12-03-2009, 07:45
Mình có vấn đề như thế này bạn nào biết giúp mình với.
Giả sử mình có TextBox1 và TextBox2. Khi nhập liệu vào TextBox1 font Vni-times tiếng việt có dấu thì ở TextBox2 hiển thị nội dung vừa nhập nhưng không dấu.

tienpvbrvt
12-03-2009, 09:09
Mình có vấn đề như thế này bạn nào biết giúp mình với.
Giả sử mình có TextBox1 và TextBox2. Khi nhập liệu vào TextBox1 font Vni-times tiếng việt có dấu thì ở TextBox2 hiển thị nội dung vừa nhập nhưng không dấu.
Bạn đã set FontName trong properties của TextBox2 là Vni-Times chưa?

tayngangvfp
12-03-2009, 09:11
Bác nào biết xin chi giúp:
Tôi đang viết 1 phần mềm và Visual Foxpro + CSQL là SQL Server 2000. Đoạn code vào để lưu file dạng Image, Doc,... vào SQL Sever và xuất ra để xem.Theo tôi biết phải dùng hàm chuyển đổi dữ liệu về dạng Binary nhưng không biết cách làm.
Xin cảm ơn trước

Bạn thử dùng: FILETOSTR() và STRTOFILE()

@rong70
anh dùng hàm này xem sao

**************************
FUNCTION Vni2KhongDau
PARAMETERS tcChuoiVNICanDoi
LOCAL lcChuoiKhongDau,lnChieuDai,lcKyTuKhongDau
lcChuoiKhongDau=[]
lnChieuDai=LEN(tcChuoiVNICanDoi)
FOR I=1 TO lnChieuDai
lcKyTu=SUBSTR(tcChuoiVNICanDoi,i,1)
IF ASC(lcKyTu)>122 &&*ASC(z)=122
DO CASE
CASE lcKyTu=[ô]
lcKyTuKhongDau=[o]
CASE lcKyTu=[Ô]
lcKyTuKhongDau=[O]
CASE AT(lcKyTu,[íìæóò])>0
lcKyTuKhongDau=[i]
CASE AT(lcKyTu,[ÍÌÆÓÒ])>0
lcKyTuKhongDau=[I]
CASE lcKyTu=[î]
lcKyTuKhongDau=[y]
CASE lcKyTu=[Î]
lcKyTuKhongDau=[Y]
CASE lcKyTu=[ñ]
lcKyTuKhongDau=[d]
CASE lcKyTu=[Ñ]
lcKyTuKhongDau=[D]
CASE lcKyTu=[ö]
lcKyTuKhongDau=[u]
CASE lcKyTu=[Ö]
lcKyTuKhongDau=[U]
OTHERWISE
lcKyTuKhongDau=[]
ENDCASE
ELSE
lcKyTuKhongDau=lcKyTu
ENDIF
lcChuoiKhongDau=lcChuoiKhongDau+lcKyTuKhongDau
ENDFOR
RETURN lcChuoiKhongDau
ENDFUNC
************************

tienpvbrvt
12-03-2009, 09:31
Bạn thử dùng: FILETOSTR() và STRTOFILE()


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

Cảm ơn bạn, để tôi thử xem sao.
đây là đoạn code tôi sưa tầm để lưu và đọc file Image dung trong C# và VB.Net để các bãn tham khảo.
C#
private void SaveToSqlDatabase(AtalaImage image)
{
SqlConnection myConnection = null;
try
{
// Save image to byte array.
byte[] imagedata = image.ToByteArray(new Atalasoft.Imaging.Codec.JpegEncoder(75));



// Create the SQL statement to add the image data.
myConnection = new SqlConnection(CONNECTION_STRING);
SqlCommand myCommand = new SqlCommand
("INSERT INTO Atalasoft_Image_Database (Caption, ImageData) VALUES ('" + txtCaption.Text + "', @Image)", myConnection);
SqlParameter myParameter = new SqlParameter("@Image", SqlDbType.Image, imagedata.Length);
myParameter.Value = imagedata;
myCommand.Parameters.Add(myParameter);


// Open the connection and execture the statement.
myConnection.Open();
myCommand.ExecuteNonQuery();
}
finally
{
myConnection.Close();
}
}
Visual Basic.NET
Private Sub SaveToSqlDatabase(ByVal image As AtalaImage)
Dim myConnection As SqlConnection = Nothing
Try
' Save image to byte array.
Dim imagedata() As Byte = image.ToByteArray(New Atalasoft.Imaging.Codec.JpegEncoder(75))


' Create the SQL statement to add the image data.
myConnection = New SqlConnection(CONNECTION_STRING)
Dim myCommand As SqlCommand = New SqlCommand
("INSERT INTO Atalasoft_Image_Database (Caption, ImageData) VALUES ('" + txtCaption.Text + "', @Image)", myConnection)
Dim myParameter As SqlParameter = New SqlParameter("@Image", SqlDbType.Image, imagedata.Length)
myParameter.Value = imagedata
myCommand.Parameters.Add(myParameter)


' Open the connection and execture the statement.
myConnection.Open()
myCommand.ExecuteNonQuery()
Finally
myConnection.Close()
End Try
End Sub
Read from a Database
C#
private AtalaImage OpenFromSqlDatabase()
{
SqlConnection myConnection = null;
try
{
// Establish connection and SELECT statement.
myConnection = new SqlConnection(CONNECTION_STRING);
SqlCommand myCommand = new SqlCommand
("SELECT ImageData FROM Atalasoft_Image_Database WHERE Caption = '" + txtCaption.Text + "'", myConnection);
myConnection.Open();


// Get the image from the database.
byte[] imagedata = (byte[])myCommand.ExecuteScalar();
if (imagedata != null)
{
AtalaImage image = AtalaImage.FromByteArray(imagedata);
return image;
}
else
{
MessageBox.Show("Image does not exist in database.");
return null;
}
}
finally
{
myConnection.Close();
}
}
Visual Basic .NET
Private Function OpenFromSqlDatabase() As AtalaImage
Dim myConnection As SqlConnection = Nothing
Try
' Establish connection and SELECT statement.
myConnection = New SqlConnection(CONNECTION_STRING)
Dim myCommand As SqlCommand = New SqlCommand
("SELECT ImageData FROM Atalasoft_Image_Database WHERE Caption = '" + txtCaption.Text + "'", myConnection)
myConnection.Open()


' Get the image from the database.
Dim imagedata() As Byte = CType(myCommand.ExecuteScalar(), Byte())
If (Not imagedata Is Nothing) Then
Dim image As AtalaImage = AtalaImage.FromByteArray(imagedata)
Return image
Else
MessageBox.Show("Image does not exist in database.")
Return Nothing
End If
Finally
myConnection.Close()
End Try
End Function

rong70
12-03-2009, 11:05
Bạn thử dùng: FILETOSTR() và STRTOFILE()

@rong70
anh dùng hàm này xem sao

**************************
FUNCTION Vni2KhongDau
PARAMETERS tcChuoiVNICanDoi
LOCAL lcChuoiKhongDau,lnChieuDai,lcKyTuKhongDau
lcChuoiKhongDau=[]
lnChieuDai=LEN(tcChuoiVNICanDoi)
FOR I=1 TO lnChieuDai
lcKyTu=SUBSTR(tcChuoiVNICanDoi,i,1)
IF ASC(lcKyTu)>122 &&*ASC(z)=122
DO CASE
CASE lcKyTu=[ô]
lcKyTuKhongDau=[o]
CASE lcKyTu=[Ô]
lcKyTuKhongDau=[O]
CASE AT(lcKyTu,[íìæóò])>0
lcKyTuKhongDau=[i]
CASE AT(lcKyTu,[ÍÌÆÓÒ])>0
lcKyTuKhongDau=[I]
CASE lcKyTu=[î]
lcKyTuKhongDau=[y]
CASE lcKyTu=[Î]
lcKyTuKhongDau=[Y]
CASE lcKyTu=[ñ]
lcKyTuKhongDau=[d]
CASE lcKyTu=[Ñ]
lcKyTuKhongDau=[D]
CASE lcKyTu=[ö]
lcKyTuKhongDau=[u]
CASE lcKyTu=[Ö]
lcKyTuKhongDau=[U]
OTHERWISE
lcKyTuKhongDau=[]
ENDCASE
ELSE
lcKyTuKhongDau=lcKyTu
ENDIF
lcChuoiKhongDau=lcChuoiKhongDau+lcKyTuKhongDau
ENDFOR
RETURN lcChuoiKhongDau
ENDFUNC
************************

To TayngangVFP
Cám ơn bạn. Đoạn code trên đơn giản mà hay quá. Nhưng hình như còn thiếu ký tự [ơ] phải không bạn ? Trả lời giúp mình nhé.

tayngangvfp
12-03-2009, 13:03
To TayngangVFP
Cám ơn bạn. Đoạn code trên đơn giản mà hay quá. Nhưng hình như còn thiếu ký tự [ơ] phải không bạn ? Trả lời giúp mình nhé.

Đủ rồi mà. Anh cứ test thử xem có lỗi gì không

rong70
12-03-2009, 13:37
To TayngangVFP
Ồ! Đúng rồi không thiếu, cám ơn bạn. Nhưng mình chưa hiểu rõ bạn giải thích dùm mình nhé. Mình dùng hàm ASC("ơ") kiểm tra mã ASCII của ký tự [ơ] font Vni thì code là 244. Nếu đúng thế thì đoạn code nào thay chử "ơ" thành chử "o"

tayngangvfp
12-03-2009, 15:10
To TayngangVFP
Ồ! Đúng rồi không thiếu, cám ơn bạn. Nhưng mình chưa hiểu rõ bạn giải thích dùm mình nhé. Mình dùng hàm ASC("ơ") kiểm tra mã ASCII của ký tự [ơ] font Vni thì code là 244. Nếu đúng thế thì đoạn code nào thay chử "ơ" thành chử "o"

Ngay cái CASE đầu tiên đó.
Trong của sổ soạn code, A chọn font là vni thì biết ngay mà.

tungvv
12-03-2009, 15:22
Xin hỏi các cao thủ VFP
Có thể chuyển DL báo cáo thuế của CT viết = VFox vào thẳng chương trình báo cáo thuế HHKK của Tổng cục thuế được không ? (không qua file Excel, giao diện nhập).
Mình nghe nói có 1 số CT kế toán đã làm được.
Do dữ liệu của HTKK lưu = file .xml dạng text sử dung font Unicode, theo các bạn mình có thể làm như sau :
- Đọc dữ liệu trong file DBF (font non-Uni),
- chuyển font ->Unicode
- Ghi vào file .xml

Được không ? Có ai làm được rồi cho mình biết nhé.

********************
Nói chung theo tôi có thể làm được, tuy nhiên ko ai đi làm lòng vòng như thế cho mất công khi mà Ct HTKKT đã cho phép nhập dữ liệu từ file *.xls. Các tệp dữ liệu về Thuế trong chương trình kế toán chạy trên VFP đều ở dạng *.DBF, vì vậy chỉ cần vài thủ tục đơn giản là bạn đã chuyển về được file *.xls theo y chang mẫu của CT HTKK Thuế và gộp vào CT HTKK Thuế. Về phần chuyển font abc hay vni thành Font Unicode thì đã có cái class chuyển font của bạn Tayngangvfp cung cấp rồi, bạn liên hệ lấy về mà code vào Ct Kế toán của mình
Tôi đã làm theo cách sau :
+ Kiếm một mấu xls có định dạng theo đúng mẫu của HTKK Thuế ( có thể trích xuất ra từ CT HTKK Thuế ).
+ Từ DBF của cơ sở dữ liệu thuế trong CT kế toán, viết code kết xuất sang *.xls theo mẫu đã cho trước ( ko sử dụng lệnh copy to xls, mà phải sử dụng code kết chuyển từng bản ghi để kết hợp chuyển font abc thành unicode)
+ Sau đó sữ dụng tệp xls đó để gộp vào CSDL Thuế. Chính xác 100%, ko lổi.
Chúc thành công.

rong70
12-03-2009, 16:04
To TayngangVFP.
Mình quên chỉnh font nên nghĩ đó là ký tự "ô". Nếu thế thì ký tự 'ôÔ' ở đâu ? Mình chưa hiểu rõ nên phải hỏi. Trả lời dùm mình nhé. Cám ơn.

nktkbnn
12-03-2009, 20:49
Đây là đoạn code tôi dung để build Project cua mình bạn tham khảo nhe!
Nếu cần bạn đưa email mình gửi cho.

SET DATE DMY
SET DEFAULT TO SYS(5) + SYS(2003)
SET PATH TO "kindergarten";"pic";"kindergarten\Security\data","kindergarten\data"
PUBLIC useridsaved_c,usernamesaved_c
useridsaved_c = "Admin"
SET RESOURCE OFF
_SCREEN.width = 1024
_SCREEN.height = 649
_SCREEN.windowstate = 2
_SCREEN.closable = .T.
_SCREEN.backcolor = 12632256
_SCREEN.picture = "logo\darkgreyback.bmp"
MODIFY WINDOW SCREEN TITLE "Kindergarten System" NOCLOSE
_SCREEN.caption = "Kindergarten System "
_SCREEN.icon = "\pic\icon\259.ico"
SET SYSMENU TO
ZOOM WINDOW screen MAX
MODIFY WINDOW screen NOCLOSE
SET MESSAGE TO "Kindergarten System " + CDOW(DATE()) + ', ' + DTOC(DATE())
SET CLASSLIB TO class\arkclass
SET PATH TO DATA
DO FORM forms\frm_main.scx
READ EVENTS
ENDPROC

Cái này rất hay! Nhưng không đúng như em mong muốn! Cái này vẫn xuất hiện SCREEN mà em muốn nó chỉ xuất hiện form thôi!
Có bác nào có Project khác như em mong muốn thì gửi cho em với!
Mail của em: nktkbnn@yahoo.com.vn
Em xin cám ơn trước!Nhưng khi gửi qua mail thì đừng build vì có exe thì mail bị lỗi ngay!

dinhanhency
12-03-2009, 21:07
Xin hỏi các cao thủ VFP
Có thể chuyển DL báo cáo thuế của CT viết = VFox vào thẳng chương trình báo cáo thuế HHKK của Tổng cục thuế được không ? (không qua file Excel, giao diện nhập).
Mình nghe nói có 1 số CT kế toán đã làm được.
Do dữ liệu của HTKK lưu = file .xml dạng text sử dung font Unicode, theo các bạn mình có thể làm như sau :
- Đọc dữ liệu trong file DBF (font non-Uni),
- chuyển font ->Unicode
- Ghi vào file .xml

Được không ? Có ai làm được rồi cho mình biết nhé.

Để chuyển sang HTKK thuế bạn nghiên cứ cấu trúc của chương trình HTKK thuế, dữ liệu lưu như thế nào sau đó viết chương trình từ fox ghi vào file dữ liệu HTKK là ok. HTKK 1.3.1 lưu dữ liệu dưới dạng file xml nên xuất từ fox ra ok.

qminh1968
12-03-2009, 23:20
********************
Nói chung theo tôi có thể làm được, tuy nhiên ko ai đi làm lòng vòng như thế cho mất công khi mà Ct HTKKT đã cho phép nhập dữ liệu từ file *.xls. Các tệp dữ liệu về Thuế trong chương trình kế toán chạy trên VFP đều ở dạng *.DBF, vì vậy chỉ cần vài thủ tục đơn giản là bạn đã chuyển về được file *.xls theo y chang mẫu của CT HTKK Thuế và gộp vào CT HTKK Thuế. Về phần chuyển font abc hay vni thành Font Unicode thì đã có cái class chuyển font của bạn Tayngangvfp cung cấp rồi, bạn liên hệ lấy về mà code vào Ct Kế toán của mình
Tôi đã làm theo cách sau :
+ Kiếm một mấu xls có định dạng theo đúng mẫu của HTKK Thuế ( có thể trích xuất ra từ CT HTKK Thuế ).
+ Từ DBF của cơ sở dữ liệu thuế trong CT kế toán, viết code kết xuất sang *.xls theo mẫu đã cho trước ( ko sử dụng lệnh copy to xls, mà phải sử dụng code kết chuyển từng bản ghi để kết hợp chuyển font abc thành unicode)
+ Sau đó sữ dụng tệp xls đó để gộp vào CSDL Thuế. Chính xác 100%, ko lổi.
Chúc thành công.

DL HTKK lưu = xml mà bạn. Nếu phải qua EXCEL là trung gian đó. (Sau khi nhân xong DL từ file excel, thì thử xoa file đó đi, CT HTKK vẩn có dữ liệu)

dinhanhency
12-03-2009, 23:25
DL HTKK lưu = xml mà bạn. Nếu phải qua EXCEL là trung gian đó. (Sau khi nhân xong DL từ file excel, thì thử xoa file đó đi, CT HTKK vẩn có dữ liệu)
Dữ liệu lưu dạng XML file, bảng kê mua vào - bán ra trong HTKK cho phép nhập dữ liệu từ EXCEL.

tienpvbrvt
13-03-2009, 07:20
Trở lại vấn đề lưu và đọc file Image vao SQL sever thông qua Foxpro:
Tôi đã sưa tầm một đoạn code sau, tuy nhiên không hiểu lắm. Tôi xin post lên mong các cao thủ chỉ dùm:

* Test Data yarat - Create test data
lnHandle = Sqlstringconnect('Driver={SQL Native Client};Server=.\SQLExpress;Trusted_Connection=yes ')
SQLExec(m.lnHandle,'Create Database ImageDb')
SQLExec(m.lnHandle,'Use ImageDb')
SQLExec(m.lnHandle,'Create Table ImageTable'+;
' (pkId uniqueidentifier rowguidcol default NewID(),'+;
' fName varchar(20),lName varchar(20),'+;
' personPicture image)')

SQLPrepare(m.lnHandle, ;
"insert into ImageTable (fName,lName,personPicture) values (?m.fname,?m.lname,?m.image)")

lcImagePath = _samples + 'data\graphics'
For ix=1 To Adir(aFiles, Addbs(m.lcImagePath)+'*.*')
Image = Createbinary(Filetostr(Addbs(m.lcImagePath)+aFiles[m.ix,1])) && works for any type of file to store as is
fname = Proper(Left(aFiles[m.ix,1],4))
lName = Proper(Substr(aFiles[m.ix,1],5,4))
SQLExec(m.lnHandle)
Endfor
SQLDisconnect(m.lnHandle)
* Test Data yarat - Create test data


Get back the data and show on a form:
* Form ile goster - Show on a form
Public oForm
oForm = Createobject('myForm')
oForm.Show

Define Class myForm As Form
DataSession = 2
Height = 400
Width = 620

Add Object myGrid As Grid With Height = 400, Width = 400, RecordSource = 'Sample'
Add Object myImage As Image With Left = 410,Top = 10

Procedure Load
lnHandle = Sqlstringconnect('Driver={SQL Native Client};Server=.\SQLExpress;Trusted_Connection=yes ')
CursorSetProp("MapBinary",.T.,0)
SQLExec(m.lnHandle,'select * from ImageDb..ImageTable','Sample')
SQLDisconnect(m.lnHandle)
Endproc

Procedure myGrid.AfterRowColChange
Lparameters nColIndex
If This.RowColChange%2 = 1
Thisform.myImage.PictureVal = Sample.personPicture
Endif
Endproc

Procedure Init
Thisform.myImage.PictureVal = Sample.personPicture
Endproc
Enddefine
*********
Xin cho biết ý nghĩa của hàm SQLPrepare(), Adir(), Addbs()

n_minhtri
13-03-2009, 14:21
cho minh biet doan code de luu du lieu tu the combo box nhu the nao? gui qua mail cua minh nhe : n_minhtri@yahoo.com

manhtungtnk28
13-03-2009, 15:05
Mình có một nút "cmdADD" và 2 textbox "idnhanvien", "txtten". Trong csdl mình có một table là "NhanVien(idnhanvien,tennhanvien)". bạn nào pro có thể viết code hộ mình làm sao để ghi xuống csdl ở 2 textbox xuống bảng csdl đó hộ mình với

INSERT INTO Nhap(idnhap,ngaynhap,soluong,mahang) VALUES (4,"1/1/2006",6,1)

không được ???

rong70
13-03-2009, 15:32
Mình có một nút "cmdADD" và 2 textbox "idnhanvien", "txtten". Trong csdl mình có một table là "NhanVien(idnhanvien,tennhanvien)". bạn nào pro có thể viết code hộ mình làm sao để ghi xuống csdl ở 2 textbox xuống bảng csdl đó hộ mình với

INSERT INTO Nhap(idnhap,ngaynhap,soluong,mahang) VALUES (4,"1/1/2006",6,1)

không được ???

Bạn thử viết như thế này xem :
INSERT INTO NhanVien(idnhanvien,tennhanvien)Values(Thisform.id nhanvien.Value,Thisform.txtten.Value)

manhtungtnk28
13-03-2009, 15:50
nó báo lỗi "data type mismatch" bạn à

rong70
13-03-2009, 15:57
Bạn nên kiểm tra lại kiểu của trường idnhanvien,tennhanvien có tương ứng với kiểu của 2 TextBox của bạn không. À còn idnhanvien phải viết liền nhau nhé.

manhtungtnk28
13-03-2009, 16:59
INSERT INTO

Nhap
(
idnhap,mahang,ngaynhap,soluong
)

VALUES
(
VAL(thisform.txtSTT.Value), VAL(thisform.cobMaHang.Value),
MDY(thisform.txtNgayNhap.Value), VAL(thisform.txtSoLuong.Value)
)

Khong biết cau insert này sai cái gì mà nó báo là function argument value, type or count is invalid.

idnhap --> integer
mahang --> integer
ngaynhap -> date
soluong --> integer

nktkbnn
15-03-2009, 10:22
Cái này rất hay! Nhưng không đúng như em mong muốn! Cái này vẫn xuất hiện SCREEN mà em muốn nó chỉ xuất hiện form thôi!
Có bác nào có Project khác như em mong muốn thì gửi cho em với!
Mail của em: nktkbnn@yahoo.com.vn
Em xin cám ơn trước!Nhưng khi gửi qua mail thì đừng build vì có exe thì mail bị lỗi ngay!
Bác nào có ! Cho em xin với! Em đang rất cần! Em xin cám ơn rất nhiều!

tayngangvfp
16-03-2009, 07:52
....xuất hiện SCREEN mà em muốn nó chỉ xuất hiện form thôi! Bác nào có ! Cho em xin với! Em đang rất cần! Em xin cám ơn rất nhiều!

Để không hiện màn hình chính của fox khi chạy chương trình, bạn nên dùng file cấu hình: Bạn tạo 1 file có tên config.fpw đặt tại thư mục gốc của chương trình. Sau đó nhập nội dung như sau


SCREEN=OFF

Hoặc dùng cách này: http://www.winnersoft.coolfreepages.com/vfp/hidescreen.htm

danngudien
16-03-2009, 09:51
2/Dùng ODBC
****************************
CLOSE TABLES ALL
lcXLS = Getfile('XLS')
lcConn = "Driver={Microsoft Excel Driver (*.xls)};"+;
"DriverId=790;Dbq="+m.lcXLS+;
";DefaultDir="+Justpath(m.lcXLS)+";"
lnHandle = Sqlstringconnect(m.lcConn)
SQLTables(m.lnHandle,"", "Cur_ListOfSheet")
* Chi xet nhung Sheet thuc su la Sheet !
SET FILTER TO ALLTRIM(Table_type)=[SYSTEM TABLE]

* Chi nhap 1 sheet
GO TOP
lcTableName = Trim(Cur_ListOfSheet.Table_Name)
lcOutput = Chrtran(m.lcTableName,'$','')
SQLExec(lnHandle,'select * from ['+m.lcTableName+']',m.lcOutput )

IF SQLDisconnect(m.lnHandle)=1
m.lnHandle=0
ENDIF

BROWSE
* Save to ......
****************
cách chuyển này rất hay nhưng tại sao khi chuyển vào dữ liệu các trường đều ở dạng memo!!!?
Có cách nào để lấy đúng kiểu trường như cũ không?, chỉ giúp với nhé! rất cám ơn

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

Được gửi bởi tayngangvfp
@danngudien

1/ "Câu lệnh Cắt trang trong xls": M chưa hiểu ý bạn ?
2/ Bạn dùng thử code sau
********
oExcel.Cells.Select
oExcel.Selection.Locked = .F.
oExcel.Columns("A:A").Select && Khong cho sua cot A
oExcel.Selection.Locked = .T.
oExcel.ActiveSheet.Protect("123",.F.,.T.,.F.)
&&DrawingObjects=.F.,Contents=.T., Scenarios=.F.
********

Trong đó "123" là pasword để Unprotect sheet. M test với excel 2000 thì OK. Nếu bạn dùng excel khác thì có thể thứ tự tham số truyền cho oExcel.ActiveSheet.Protect(....) sẽ khác.
Chúc thành công
Nhờ tayngangvfp chỉ thêm.
Với code trên thì chạy rất tốt nhưng các cột không định dạng độ rộng được.
bạn giúp cho câu lệnh chỉ khóa cột thôi, còn các định dạng khác không khóa vẫn thực hiện được như chỉnh độ rộng cột, hàng ...
Rất mong sự giúp đở

vietcuonghv
19-03-2009, 08:15
Các bạn ơi cho mình hỏi với, mình có 2 bảng dữ liệu ví dụ như vbcd09.dbf và hoso_sl.dbf trong các bảng đó có các trường, tôi muốn thay thể 1 trường bất kỳ nào đó có 1 bảng bên vbcd09.dbf bằng 1 trường bên hoso_sl.dbf, các bạn giúp tôi sớm nhé vì tôi rất cần;
Thanks các bạn rất nhiều!

icanvn
19-03-2009, 08:59
Mình có 1 cobobox, Rowsource của nó được lấy từ 1 trường của bảng LIST_HANG.DBF
Mình muốn khi đưa con trỏ đến Combobox này thì tự động nó sẽ hiển thị những thông tin trong đó để chọn.
Trường hợp nếu thông tin chưa có trong Combobox nay thì cho phép người dùng nhập vào và lưu lại thông tin đó vào bảng LIST_HANG.DBF

Mọi người giúp đỡ dùm.
Xin cảm ơn trước!

tayngangvfp
19-03-2009, 10:59
Mình có 1 cobobox, Rowsource của nó được lấy từ 1 trường của bảng LIST_HANG.DBF
Mình muốn khi đưa con trỏ đến Combobox này thì tự động nó sẽ hiển thị những thông tin trong đó để chọn.
Trường hợp nếu thông tin chưa có trong Combobox nay thì cho phép người dùng nhập vào và lưu lại thông tin đó vào bảng LIST_HANG.DBF

Mọi người giúp đỡ dùm.
Xin cảm ơn trước!

Bạn viết code trong sự kiện valid của combobox
***************

IF this.ListIndex=0
* Viet code tien hanh luu vao ......
MESSAGEBOX("Chua co")

ENDIF

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


@danngudien

1/Thường VFP sẽ chuyển các cột kiểu text vào kiểu memo. Tuy nhiên việc viết code chuyển từ memo về char là dễ dàng mà.

2/M không có Excel khác để thử. Còn Excel 2000 thì M không có cách nào làm được.

phanquocdoan
19-03-2009, 15:42
Xin chào các cao thủ VFP, mình cũng là tay ngang vfp thôi, mình có vấn đề này xin các cao thủ chỉ giúp :
Trong SQL Server mình có 1 function

CREATE Function [dbo].[Fn_LoadData] (@ParaInput NVARCHAR(2))
RETURNS NVARCHAR(200)
BEGIN
DECLARE @SQL NVARCHAR(2000)
SET @SQL = (SELECT AaDesc FROM TblNhomNo WHERE Aa = @Parainput)

RETURN @SQL
END
Hàm này chạy tốt trên SQL
Từ VFP mình dùng cách nào để gọi hàm này và lấy giá trị trả về từ hàm ?
Xin các cao thủ chỉ giáo
Anh Tayngangvfp biết chỉ dùm em nhé...
Email : newbie8310@gmail.com

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


Xin chào các cao thủ VFP, mình cũng là tay ngang vfp thôi, mình có vấn đề này xin các cao thủ chỉ giúp :
Trong SQL Server mình có 1 function

CREATE Function [dbo].[Fn_LoadData] (@ParaInput NVARCHAR(2))
RETURNS NVARCHAR(200)
BEGIN
DECLARE @SQL NVARCHAR(2000)
SET @SQL = (SELECT AaDesc FROM TblNhomNo WHERE Aa = @Parainput)

RETURN @SQL
END
Hàm này chạy tốt trên SQL
Từ VFP mình dùng cách nào để gọi hàm này và lấy giá trị trả về từ hàm ?
Xin các cao thủ chỉ giáo
Anh Tayngangvfp biết chỉ dùm em nhé...
Email : newbie8310@gmail.com

=======================
Không biết có cao thủ nào vfp đã làm qua cái này chưa? help me...

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


Xin chào các cao thủ VFP, mình cũng là tay ngang vfp thôi, mình có vấn đề này xin các cao thủ chỉ giúp :
Trong SQL Server mình có 1 function

CREATE Function [dbo].[Fn_LoadData] (@ParaInput NVARCHAR(2))
RETURNS NVARCHAR(200)
BEGIN
DECLARE @SQL NVARCHAR(2000)
SET @SQL = (SELECT AaDesc FROM TblNhomNo WHERE Aa = @Parainput)

RETURN @SQL
END
Hàm này chạy tốt trên SQL
Từ VFP mình dùng cách nào để gọi hàm này và lấy giá trị trả về từ hàm ?
Xin các cao thủ chỉ giáo
Anh Tayngangvfp biết chỉ dùm em nhé...
Email : newbie8310@gmail.com

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



=======================
Không biết có cao thủ nào vfp đã làm qua cái này chưa? help me...

Hehe, Mình đã tìm được rồi , thank tất cả...

manhtungtnk28
20-03-2009, 11:04
bạn có thể làm như sau:

For example, the following code displays the results of calling a stored procedure named sp_who on SQL Server using an active connection to the data source sqlremote:

nConnectionHandle = SQLCONNECT('sqlremote')
? SQLEXEC(nConnectionHandle, 'use pubs')
? SQLEXEC(nConnectionHandle, 'sp_who')
BROWSE

không biết là Ông tay ngang học đến Lồi mắt ra thế có biết không chứ mình thì bó tay rồi. Hình như là dùng remote view gì đó (nói thế thôi chứ mình có biết remote view) gì đâu

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


Xin chào các cao thủ VFP, mình cũng là tay ngang vfp thôi, mình có vấn đề này xin các cao thủ chỉ giúp :
Trong SQL Server mình có 1 function

CREATE Function [dbo].[Fn_LoadData] (@ParaInput NVARCHAR(2))
RETURNS NVARCHAR(200)
BEGIN
DECLARE @SQL NVARCHAR(2000)
SET @SQL = (SELECT AaDesc FROM TblNhomNo WHERE Aa = @Parainput)

RETURN @SQL
END
Hàm này chạy tốt trên SQL
Từ VFP mình dùng cách nào để gọi hàm này và lấy giá trị trả về từ hàm ?
Xin các cao thủ chỉ giáo
Anh Tayngangvfp biết chỉ dùm em nhé...
Email : newbie8310@gmail.com

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



=======================
Không biết có cao thủ nào vfp đã làm qua cái này chưa? help me...

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



Hehe, Mình đã tìm được rồi , thank tất cả...

làm sao thì phải post cách làm lên đi chứ, mình cũng đang cần cái này mà

phanquocdoan
20-03-2009, 15:25
* Hàm Connect to SQL Server 2000
FUNCTION ConnectDatabaseSQL
LOCAL nHandle, ConnectString
ConnectString = "Driver={SQL Server};Server=192.168.1.2; Trusted_Connection=No;Database=Support;Uid=sa;Pwd="
nHandle = SQLSTRINGCONNECT(ConnectString)
RETURN nHandle
* Hàm Lấy Giá trị Column của 1 Table bất kỳ trên SQL Server 2000
Ex: (Table : TblNhomNo (Aa NVARCHAR(2),AaDesc NVARCHAR(200))
CREATE Function [dbo].[Fn_LoadData] (@ParaInput NVARCHAR(2))
RETURNS NVARCHAR(200)
BEGIN
DECLARE @SQL NVARCHAR(2000)
SET @SQL = (SELECT AaDesc FROM TblNhomNo WHERE Aa = @Parainput)
RETURN @SQL
END
Ex : mình tạo 1 Function từ VFP gọi hàm này :
FUNC LoadDataComponent
PARAMETERS cValue
LOCAL nHandle, nStatus,Kq
Kq = ''
nHandle = ConnectDatabaseSQL() && Hàm ConnectDatabaseSQl khai báo ở trên
IF nHandle > 0
nStatus = SQLEXEC(nHandle,"{?@Kq = Call Fn_LoadData(?cValue)}")
IF nStatus > 0 && Thuc hien load data thanh cong
Messagebox([Load Data Thành Công])
Else
Messagebox([Lỗi load data])
ENDIF
= SQLDISCONNECT(nHandle)

ELSE
MESSAGEBOX([Khong the ket noi Database])
RETURN
ENDIF
RETURN Kq
ENDFUNC
Đã Test và chạy tốt, không biết viết vậy có đúng không mấy pác.
Không biết anh TayNgayVfp có thể cho mình xin source code chuyển font sang unicode không vậy?
Email của mình : newbie8310@gmail.com, thanks nhiều.

giupdo
20-03-2009, 17:05
chào các bạn !!

Mình là một người mới bước vao lập trình visual foxpro, mình từ .net chuyển qua nên có một vài cái thắc mắc chưa giải đáp đựoc mong các bạn và tayngang giúp cho.

Mình thấy trong foxpro có các đối tượng sau:

1. Form
2. Class
3. Programe

Mình lập trình .net nên hướng theo đối tượng mà trong foxpro lại không biết làm sao, mình xin có một câu hỏi như sau:

mình muốn viết một chương trình đơn gian là.

1. trong Form tạo ra một form rồi không làm gì cã
2. trong class tạo ra 1 lớp thuộc loại cotener và kéo vào đó một textbox và 1 nút nhấn.
3. trong programe viết 1 hàm có tên là hienthi và làm một nhiệm vụ đơn giản là làm sao mà khi chạy form lên và kích vào nút nhấn (lớp đó đựoc kéo vào form) thì nó hiển thị lên một messbox có nội dung nhập vào từ text box.

Rất mong các bạn giúp đở, vì qua đây mình có thể biết đựoc cách gọi một hàm từ file programe vào lớp và cách sử dụng các control trong lớp.

manhtungtnk28
21-03-2009, 09:30
chào các bạn !!

Mình là một người mới bước vao lập trình visual foxpro, mình từ .net chuyển qua nên có một vài cái thắc mắc chưa giải đáp đựoc mong các bạn và tayngang giúp cho.

Mình thấy trong foxpro có các đối tượng sau:

1. Form
2. Class
3. Programe

Mình lập trình .net nên hướng theo đối tượng mà trong foxpro lại không biết làm sao, mình xin có một câu hỏi như sau:

mình muốn viết một chương trình đơn gian là.

1. trong Form tạo ra một form rồi không làm gì cã
2. trong class tạo ra 1 lớp thuộc loại cotener và kéo vào đó một textbox và 1 nút nhấn.
3. trong programe viết 1 hàm có tên là hienthi và làm một nhiệm vụ đơn giản là làm sao mà khi chạy form lên và kích vào nút nhấn (lớp đó đựoc kéo vào form) thì nó hiển thị lên một messbox có nội dung nhập vào từ text box.

Rất mong các bạn giúp đở, vì qua đây mình có thể biết đựoc cách gọi một hàm từ file programe vào lớp và cách sử dụng các control trong lớp.

hình như làm thế không đựoc, trong foxpro không hỗ trợ nó thì phải, khó làm theo oop lắm bạn à

nktkbnn
21-03-2009, 14:51
Để không hiện màn hình chính của fox khi chạy chương trình, bạn nên dùng file cấu hình: Bạn tạo 1 file có tên config.fpw đặt tại thư mục gốc của chương trình. Sau đó nhập nội dung như sau


SCREEN=OFF

Hoặc dùng cách này: http://www.winnersoft.coolfreepages.com/vfp/hidescreen.htm

Bác xem cho em cái vụ này với! Theo hướng dẫn đã làm được nhưng nó bị lỗi! Bác vào nguyenvanankbnn@yahoo.com.vn với pass là 1234567 để lấy và xem hộ em với nhé! Cám ơn bác trước!

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

Các bác cho em hỏi! Để tạo TreeView thì khi nhúng qua OLE vào Form thì trước tiên ta viết code cho Form với Init là:

Local oTree
With Thisform
oTree = .tvCode
oTree.ImageList = .imgCode

mRoot="TONGCONGTY"
*---- Goc
oTree.Nodes.Add(, , mRoot, "TONGCONGTY")
oTree.Nodes(mRoot).Expanded = .T.
oTree.Nodes(mRoot).Image = 2

*---- Nhanh
FOR m=1 TO 3
mName="BR"+ALLTRIM(STR(m))
mPrompt="CONG TY - "+ALLTRIM(STR(m))
oTree.Nodes.Add(mRoot ,4 , mName, mPrompt)
oTree.Nodes(mName).Image = 1
FOR n=1 TO 5
mLeaf="LEEF"+ALLTRIM(STR(m))+ALLTRIM(STR(n))
mPrompt="CHI NHANH - "+ALLTRIM(STR(n))
oTree.Nodes.Add(mName ,4 , mLeaf, mPrompt)
oTree.Nodes(mLeaf).Image = 0
ENDFOR
ENDFOR


EndWith

Trong TreeView có tên là tvCode có Collapse là
LPARAMETERS node
If Node.Image = 1
Node.Image = 1
EndIf

Trong TreeView có tên là tvCode có Expand là

LPARAMETERS node
If Node.Image = 1
Node.Image = 2
EndIf
Trong TreeView có tên tvCode với NodeClick là:

LPARAMETERS node
if node.image=2
messagebox('Toi thay no hay',0+16+0,'Thong bao')
rele thisform
do form\f_vphc
endif

Khi chạy nó vẫn bị lỗi! Có bác nào sành về TreeView chỉ cho em muốn Click vào từng chi nhánh (CHI NHANH ) tà ta có thể gọi được sự kiện nào đó! Cám ơn các bác trước!

danngudien
23-03-2009, 10:43
ban tayngangvfp ơi! chỉ giúp cho cách viết code
tìm một file trên đĩa
nếu tìm thấy thì mở file
còn không thoát
******
cho thêm câu lệnh kiểm tra file
nếu file đang mở thì thoát
còn lại mở file đó
mình loay hoay mãi vẫn không làm được

cuong246
23-03-2009, 16:40
cho mình hỏi với khi muốn kết xuất ra excel ma chi tiết thì làm sao !
vi dụ như mình muốn kết xuất ra excel chi tiết thường thì chỉ có một chứng từ để hiển thị kết quả, nhưng trong đó thì còn nhiều hóa đơn khác nửa nhưng nó chỉ lấy kết quả của các hóa đơn kia rồi cộng lại không in chi tiết all cả hóa đơn được, bạn nào chỉ mình với thank's trước nghe

hienkieudiem
25-03-2009, 10:26
nhờ giúp đở hàm for endfor
vd
for i=1 to 10
? i
endfor
----------
thì thấy i chạy từ 1 đến 10,mình muốn đặt i nầy trong text1 hoặc đăt theo tọa độ @ say làm không được mấy bạn giúp dùm cám ơn

rong70
26-03-2009, 07:49
nhờ giúp đở hàm for endfor
vd
for i=1 to 10
? i
endfor
----------
thì thấy i chạy từ 1 đến 10,mình muốn đặt i nầy trong text1 hoặc đăt theo tọa độ @ say làm không được mấy bạn giúp dùm cám ơn

Nếu text1 của bạn là TextBox thì trong phần Valid của Text1 bạn viết
j = Thisform.Text1.Valid
Fox i=j To ...
...
Endfor

Còn nếu Text1 của bạn là 1 biến (get) bình thường thì bạn gán :
j = Text1
Fox i=j To ...
...
Endfor

Bạn thử xem sao !

kteatm
26-03-2009, 08:46
Chào các bạn.Mình đang cần học về lập trình foxpro,nhưng là mô phỏng thuật toán trên foxpro, mình cần tìm người dạy về nó, mình đang ở hà nội.Ai dạy được thì mail cho mình theo địa chỉ này nhé,mình sẽ cung cấp tài liệu của bọn mình :nangcongchuakieuhanh@gmail.com.Mình cần gấp.

nktkbnn
26-03-2009, 12:42
Tôi có một Proj, bây giờ muốn tạo một file Setup thì phải làm sao? Cám ơn các bác trước nhé!

trungkien1976tb
26-03-2009, 15:01
Co bac nao biet code Viual foxpro doc ma HDD(Ma cua nha SX, format khong thay doi) post len cho em xin voi, thank nhieu.

tayngangvfp
26-03-2009, 15:21
Bác xem cho em cái vụ này với! Theo hướng dẫn đã làm được nhưng nó bị lỗi! Bác vào nguyenvanankbnn@yahoo.com.vn với pass là 1234567 để lấy và xem hộ em với nhé! Cám ơn bác trước!

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

Các bác cho em hỏi! Để tạo TreeView thì khi nhúng qua OLE vào Form thì trước tiên ta viết code cho Form với Init là:

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

Khi chạy nó vẫn bị lỗi! Có bác nào sành về TreeView chỉ cho em muốn Click vào từng chi nhánh (CHI NHANH ) tà ta có thể gọi được sự kiện nào đó! Cám ơn các bác trước!

@ nktkbnn : bị lỗi như thế nào vậy bạn?


@ danngudien:
1) Đoạn code tìm 1 file trên đĩa

***********

ThuMucCanDuyet =[C:\]
TenFile=[readme.txt]
=Duyet(ThuMucCanDuyet,TenFile)
Return

Procedure Duyet
Parameters cDir,cTenFile
Local i,nSoThuMuc,cDangDuyet
LOCAL ARRAY aThuMuc[1,5]
cDangDuyet=Addbs(cDir)
nSoThuMuc=Adir(aThuMuc,cDangDuyet+"*.*", 'AHRSD')
For i=1 To nSoThuMuc
If aThuMuc[i,1]=='.' Or aThuMuc[i,1]=='..'
Else
If Atc('D', aThuMuc[i,5])=0
* File => xu ly gi do o day
IF UPPER(cTenFile)=aThuMuc[i,1]
IF MESSAGEBOX("Da tim thay"+CHR(13)+cDangDuyet+aThuMuc[i,1]+CHR(13)+CHR(13)+"Dung tim ?",4+32,"Search")=6
RETURN TO MASTER
ENDIF
ELSE
ENDIF
Else
* Folder => duyet tiep hoac xu ly gi do o day
*1/Xu ly

*2/ Duyet tiep
WAIT WINDOW NOWAIT cDangDuyet
=Duyet(cDangDuyet+aThuMuc[i,1],cTenFile)
Endif
Endif
Endfor
Return

***********

2) Câu lệnh kiểm tra file đang mở: do không biết là bạn đề cập đến file kiểu gì: .txt, .prg, .dbf, .... Nên M chỉ ví dụ 1 cách tổng quát. Bằng cách dùng hàm FOPEN

nHandle=FOPEN( tên file,12)
If nHandle>0
Messageb("OK")
FLOSE(nHandle)
else
Messageb("File dang mo")
endif

danngudien
26-03-2009, 21:20
mình muốn tìm file EXcel
nếu tìm thấy thì đóng file đó lại
else

thực hiện lênh
endif
***
vì khi kết chuyển sang excel mà file đang mở thì nó báo lỗi khó chịu quá!
Cám ơn nhiều nhé!

tuan_tvkg
26-03-2009, 23:03
Gởi bạn trungkien1976tb
*****Lay so ****** o dia cung 0
FUNCTION Gethddid
LPARAMETERS _Driver
LOCAL _LastError, _Error, _Driver, M.sn, M.Mod, M.Rev, M.str , ;
M.vnb, M.vnbs, M.vsn, M.mcl, M.fsf, M.fsnb, M.fsnbs, ;
M.drivenumber, M.handle, M.sci, M.sco, M.ret_buffersize, M.otv
_LastError = ON('ERROR')
_Error = 0
ON ERROR _Error = ERROR()

IF EMPTY(_Driver) OR PARAMETERS() = 0
_Driver = ADDBS(SYS(5))
ELSE
_Driver = ADDBS(_Driver)
ENDIF

DECLARE INTEGER CloseHandle IN kernel32 INTEGER hObject
DECLARE INTEGER CreateFile IN kernel32 STRING lpFileName, INTEGER dwDesiredAccess, INTEGER dwShareMode, INTEGER lpSecurityAttributes, INTEGER dwCreationDisposition, INTEGER dwFlagsAndAttributes, INTEGER hTemplateFile
DECLARE INTEGER DeviceIoControl IN kernel32 INTEGER hDevice, INTEGER dwIoControlCode, STRING @lpInBuffer, LONG nInBufferSize, STRING @lpOutBuffer, LONG nOutBufferSize, INTEGER @lpBytesReturned, INTEGER lpOverlapped
DECLARE INTEGER GetDriveType IN Win32API STRING &&M.path
DECLARE INTEGER GetVolumeInformation IN Win32API STRING lpRootPathName, STRING @lpVolumeNameBuffer, INTEGER nVolumeNameSize, LONG @lpVolumeSerialNumber, INTEGER @lpMaximumComponentLength, INTEGER @lpFileSystemFlags, STRING @lpFileSystemNameBuffer, INTEGER nFileSystemNameSize

M.sn=""
M.mod=""
M.rev=""
M.str = _Driver
M.vnb=REPLICATE(CHR(0),64)
M.vnbs=64
M.vsn=0
M.mcl=0
M.fsf=0
M.fsnb=REPLICATE(CHR(0),10)
M.fsnbs=10
GetVolumeInformation(_Driver, @M.vnb,M.vnbs,@M.vsn,@M.mcl,@M.fsf,@M.fsnb,M.fsnbs )
IF M.vsn<0
M.vsn=M.vsn+16^8
ENDIF
M.vsn = PADL(ALLT(SUBSTR(TRANSFORM(M.vsn,"@0"),3)),8,"0")
M.vsn = ALLTRIM(SUBSTR(M.vsn, 1, 4) + [-] + SUBSTR(M.vsn, 5))
IF DRIVETYPE(LEFT(M.str,1)) = 3
M.drivenumber=ASC(SUBSTR(M.str,1,1))-ASC("C")
M.handle = CreateFile("\\.\"+CHR(ASC("c")+M.drivenumber)+":", 0xC0000000, 3, 0, 3, 0, 0)
IF M.handle<>-1
M.sci=CHR(0)+CHR(2)+REPLICATE(CHR(0),3)+REPLICATE( CHR(1),2)+REPLICATE(CHR(0),2)+CHR(0xA0)+CHR(0xEC)+ REPLICATE(CHR(0),501)
M.sco=REPLICATE(CHR(0),2048)
M.ret_buffersize=0
M.otv=DeviceIoControl(M.handle, 0x7C088, @M.sci, LEN(sci), @M.sco, LEN(sco), @M.ret_buffersize, 0)
CloseHandle(M.handle)
IF M.otv<>0
M.sn=ALLTRIM(UPPER(CHRTRAN(ALLT(conv21(SUBSTR(M.sc o,37,20))),CHR(0),"")))
M.rev=CHRTRAN(ALLT(conv21(SUBSTR(M.sco,63,8))),CHR (0),"")
M.mod=CHRTRAN(ALLT(conv21(SUBSTR(M.sco,71,40))),CH R(0),"")
ENDIF
ENDIF
ENDIF
IF EMPTY(M.Sn)
M.sn = M.vsn
ENDIF
CLEAR DLLS "CloseHandle"
CLEAR DLLS "CreateFile"
CLEAR DLLS "DeviceIoControl"
CLEAR DLLS "GetDriveType"
CLEAR DLLS "GetVolumeInformation"
ON ERROR &_LastError
RETURN M.Sn
********
FUNCTION conv21
LPARAMETER M.str
IF LEN(M.str)%2=1
M.str=M.str+" "
ENDIF
LOCAL M.i, M.str2
M.str2=""
FOR M.i=1 TO LEN(M.str)
M.str2=M.str2+SUBSTR(M.str,M.i+IIF(M.i%2=0,-1,1),1)
NEXT
RETURN M.str2

trungkien1976tb
27-03-2009, 13:55
Cám ơn bạn TUAN_TVKG nhiều lắm, vì mình đang viết 1 chương trình quản lý bằng FOX,mình rất muốn bảo mật chương trình của mình, bạn cho mình hỏi chút nữa nhé.Mình dịch toàn bộ project chương trình ra .Exe, sau đó mình đóng gói bảo mật Brand Level III của Refox XI+, nhưng khi chạy chương trình báo lỗi (Fatal error : Exception code=C0000005) Bạn có biết cách sử dụng Brand của Refox XI+ giúp minh với, Cám ơn bạn nhiều lắm.

tuan_tvkg
27-03-2009, 22:41
Bạn trungkien1976tb gởi cho mình chương trình Refox XI+ mình thử xem sao. Mail của mình : tuanacc@gmail.com

trungkien1976tb
28-03-2009, 08:09
Mình gừi cho ban roi do

ngocuong128
28-03-2009, 21:35
các bác giúp em voi cho em những bài tầp mẫu với. em khong biết viết code trong form. mong các bác giúp đở

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

mong các bác giúp đở

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

em đang học visual foxpro. em đang làm chương trình quan lý cửa hàng văn phòng phẩm mà em chưa biết cách viết code trong from.
Mong các bác giúp đở cho em chương trình mẩu để em có thể biết được cách làm.
em xinh cám ơn
đia chỉ mail của em là < manhcuongtinb@gmail.com>

vangiangfly
28-03-2009, 23:45
Các pác ah! Em la dân mới làm về fox. Em muốn hỏi các pác mốt chút, bac nào dảnh giúp em nhé.
Chuyện là thế này: em làm 1 form nhập điểm cho sinh viên, form gồm thông tin về sinh viên và điểm của sinh viên,Thông tin về sinh viên thi em dùng câu lệnh SQL lấy từ bảng sinh viên. Con điểm của sinh viên thì em nhâp trực tiếp trên lưới. Nhưng em lấy được thông tin cua sinh nhưnng chịu không thể nhập điểm vào được mong các pác chỉ em với
Hồi âm vào mail của em là:giangfly.t.v@gmail.com
nhanh giúp em nhé các pác.

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

Các pác ah! Em la dân mới làm về fox. Em muốn hỏi các pác mốt chút, bac nào dảnh giúp em nhé.
Chuyện là thế này: em làm 1 form nhập điểm cho sinh viên, form gồm thông tin về sinh viên và điểm của sinh viên,Thông tin về sinh viên thi em dùng câu lệnh SQL lấy từ bảng sinh viên. Con điểm của sinh viên thì em nhâp trực tiếp trên lưới. Nhưng em lấy được thông tin cua sinh nhưnng chịu không thể nhập điểm vào được mong các pác chỉ em với
Hồi âm vào mail của em là:giangfly.t.v@gmail.com
nhanh giúp em nhé các pác.

VuNhatVan
01-04-2009, 09:13
Cám ơn bạn TUAN_TVKG nhiều lắm, vì mình đang viết 1 chương trình quản lý bằng FOX,mình rất muốn bảo mật chương trình của mình, bạn cho mình hỏi chút nữa nhé.Mình dịch toàn bộ project chương trình ra .Exe, sau đó mình đóng gói bảo mật Brand Level III của Refox XI+, nhưng khi chạy chương trình báo lỗi (Fatal error : Exception code=C0000005) Bạn có biết cách sử dụng Brand của Refox XI+ giúp minh với, Cám ơn bạn nhiều lắm.

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

icanvn
01-04-2009, 17:01
Chao các bác! Bác nào biết chỉ cho em cách để đổi ngày dương lịch sang ngày âm lich với!
Chẳng hạng như: ngay_duong = 12/02/2006 => ngay_am =?

Cảm ơn các bác nhiều lắm!

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

Chao ban, minh cung viet chuong trinh cho co quan. hien da compile thanh exe. Rat muon bao mat. Ban co the gui cho minh Refox MMII dc ko. dia chi email cua minh : truong_supplya75@yahoo.com .

emgaivfp
02-04-2009, 15:13
Chào mọi người.
Cho mình hỏi tạo bộ đĩa cài đạ­t cho chương trình viết bằng VFP9 từ InstallShield 5. Hướng dẫn chi tiết từng bước hộ mình nhé.
Xin cảm ơn trước.

kteatm
06-04-2009, 01:43
chao cac ban. Hom truoc minh co nhan qua dien dan, nhung khong thay ban nao tra loi, co ban nao kien thuc tot ve lap trình foxpro, nhung su dung cho viec mo phong thuat toan khong ? Nhan lai cho minh nhé
Vì minh đang cần nghiên cứu về nó ,nhưng chưa hiểu mấy
Thanhks

danngudien
08-04-2009, 15:49
Bạn dùng đoạn code này thử nhé, sửa Font theo font của bạn dùng.
Chúc thành công!

LOCAL _FontName, _LcBuff

DECLARE INTEGER SystemParametersInfo IN USER32 Integer uAction, Integer uParam, String @lpvParam, Integer fuWinIni

SPI_GETICONTITLELOGFONT = 31
SPI_SETICONTITLELOGFONT = 34
SPI_GETNONCLIENTMETRICS = 41
SPI_SETNONCLIENTMETRICS = 42

****** Set Destop font
_LcBuff = CHR(MOD(340, 256))+CHR(INT((1.328125)))+CHR(0)+CHR(0)+REPLICATE (CHR(0), 336)
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, LEN(_LcBuff), @_LcBuff, 0)

_LcCaption = 53
_LcsmCaption = 121
_LcMenu = 189
_LcStatus = 249
_LcMessage = 309
_FontName = "MS Sans Serif"
_LcBuff = STUFF(_LcBuff, _LcCaption, LEN(_FontName)+1, _FontName+CHR(0))
_LcBuff = STUFF(_LcBuff, _LcsmCaption, LEN(_FontName)+1, _FontName+CHR(0))
_LcBuff = STUFF(_LcBuff, _LcMenu, LEN(_FontName)+1, _FontName+CHR(0))
_LcBuff = STUFF(_LcBuff, _LcStatus, LEN(_FontName)+1, _FontName+CHR(0))
_LcBuff = STUFF(_LcBuff, _LcMessage, LEN(_FontName)+1, _FontName+CHR(0))

****** Set value and save update. (fuWinIni=0 : set and not save update)
SystemParametersInfo(SPI_SETNONCLIENTMETRICS, LEN(_LcBuff), @_LcBuff, 1)

Với code trên tôi đã sửa font theo ý thích thật là tuyệt, với nội dung chú thích (tooltip) thể hiện tiếng Việt như ý. Nhưng còn vấn đề đó là size quá nhỏ chưa theo ý muốn được Bạn có thể cho thêm câu lệnh chọn size the ý muốn đựơc không?
Cám ơn nhiều.
Chúc các bạn gặp nhiều may mắn

icanvn
09-04-2009, 11:18
Hiện nay theo tôi thấy ngôn ngữ VFP rất hay, rất phổ biến và có nhiều công ty đang sử dụng.
Tôi đề nghị anh em nào trong Room có khả năng thì mở những khóa huấn luyện nâng cao về VFP tại TPHCM để các anh em còn non tay nghề có cơ hội phát triển cao hơn. Không biết ý của các bác thế nào?

viewback
09-04-2009, 15:58
Chào các bạn

Mình là thành viên mới, cũng đang mài VFP. Mình đang phân vân trong việc tổ chức CSDL và chương trình để thực hiện nghiệp vụ quản lý tồn (nói chung), ví dụ như tồn kho.

Mình nghỉ ra 2 phương án nhưng chưa biết chọn phương án nào là tối ưu:

Phương án 1: Không lưu lại giá trị tồn theo thời gian (từng kỳ) phát sinh.

Phương án 2: Lưu lại giá trị tồn theo thời gian (từng kỳ) phát sinh.

Mình có mô tả 2 phương án này bằng 1 file word, mong các bạn pro cố gắng nghiên cứu và cho mình một lời khuyên hoặc giải pháp tốt hơn.

(File Word ở đây)

http://www.mediafire.com/download.php?nyramdxvnmu

Mình chân thành cảm ơn các bạn.

icanvn
10-04-2009, 14:01
Chào các bạn

Mình là thành viên mới, cũng đang mài VFP. Mình đang phân vân trong việc tổ chức CSDL và chương trình để thực hiện nghiệp vụ quản lý tồn (nói chung), ví dụ như tồn kho.

Mình nghỉ ra 2 phương án nhưng chưa biết chọn phương án nào là tối ưu:

Phương án 1: Không lưu lại giá trị tồn theo thời gian (từng kỳ) phát sinh.

Phương án 2: Lưu lại giá trị tồn theo thời gian (từng kỳ) phát sinh.

Mình có mô tả 2 phương án này bằng 1 file word, mong các bạn pro cố gắng nghiên cứu và cho mình một lời khuyên hoặc giải pháp tốt hơn.

(File Word ở đây)

http://www.mediafire.com/download.php?nyramdxvnmu

Mình chân thành cảm ơn các bạn.

Mình nghĩ bạn sử dụng phương án 2 thì hay hơn.

manhtungtnk28
10-04-2009, 15:34
Mình có một store proceduce trong sql server về insert data.

trong fox mình gọi hàm sqlexec để thực thi

Không biết sao khi mình gán
lclenh = [execute dbo.InsertChungTu ] + ['] + VAL(TRIM(mact)) + [','] + DTOC(ngay) + [','] + VAL(TRIM(soct)) + [','] + TRIM(lydo) + [','] + TRIM(nguoi) + [','] + TRIM(diachi) + [','] + TRIM(manguonpk) + [']

thì nó báo lỗi

http://www.2shared.com/file/5299768/19cea541/1_online.html

and

http://www.2shared.com/file/5299777/906a8991/2_online.html

Bạn nào biết chỉ giúp

icanvn
10-04-2009, 16:41
Mình có một store proceduce trong sql server về insert data.

trong fox mình gọi hàm sqlexec để thực thi

Không biết sao khi mình gán
lclenh = [execute dbo.InsertChungTu ] + ['] + VAL(TRIM(mact)) + [','] + DTOC(ngay) + [','] + VAL(TRIM(soct)) + [','] + TRIM(lydo) + [','] + TRIM(nguoi) + [','] + TRIM(diachi) + [','] + TRIM(manguonpk) + [']

thì nó báo lỗi

http://www.2shared.com/file/5299768/19cea541/1_online.html

and

http://www.2shared.com/file/5299777/906a8991/2_online.html

Bạn nào biết chỉ giúp
Theo như bạn mô tả ở đây thì minh nghĩ là vì kiểu text sẽ không thể nào cộng được với kiểu số. Cho nên nó báo lỗi là không trung kiểu.

viewback
11-04-2009, 08:03
Mình nghĩ bạn sử dụng phương án 2 thì hay hơn.

Cảm ơn bạn icanvn rất nhiều. Mình còn rất nhiều thắc mắc, mong bạn nhiệt tình giúp đỡ.

ltbình

hoangpnt349
11-04-2009, 12:55
Mình có một store proceduce trong sql server về insert data.

trong fox mình gọi hàm sqlexec để thực thi

Không biết sao khi mình gán
lclenh = [execute dbo.InsertChungTu ] + ['] + VAL(TRIM(mact)) + [','] + DTOC(ngay) + [','] + VAL(TRIM(soct)) + [','] + TRIM(lydo) + [','] + TRIM(nguoi) + [','] + TRIM(diachi) + [','] + TRIM(manguonpk) + [']

thì nó báo lỗi

http://www.2shared.com/file/5299768/19cea541/1_online.html

and

http://www.2shared.com/file/5299777/906a8991/2_online.html

Bạn nào biết chỉ giúp

Bạn thử tạo biến lclenh bằng cách sau:
TEXT TO lclenh TEXTMERGE NOSHOW
execute dbo.InsertChungTu <<VAL(TRIM(mact))>>, '<<DTOC(ngay)>>', <<VAL(TRIM(soct))>>, '<<TRIM(lydo)>>', '<<TRIM(nguoi)>>', '<<TRIM(diachi)>>', '<<TRIM(manguonpk)>>'
ENDTEXT

nhatsang@
13-04-2009, 12:14
bác nao co tài liệu về c# chỉ cho em với

manhtungtnk28
13-04-2009, 14:29
Theo như bạn mô tả ở đây thì minh nghĩ là vì kiểu text sẽ không thể nào cộng được với kiểu số. Cho nên nó báo lỗi là không trung kiểu.

thế thì phải làm sao để insert xuống csdl trong vfp này mà có thể có cã 2 loại là text và number bạn nhĩ

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


Bạn thử tạo biến lclenh bằng cách sau:
TEXT TO lclenh TEXTMERGE NOSHOW
execute dbo.InsertChungTu <<VAL(TRIM(mact))>>, '<<DTOC(ngay)>>', <<VAL(TRIM(soct))>>, '<<TRIM(lydo)>>', '<<TRIM(nguoi)>>', '<<TRIM(diachi)>>', '<<TRIM(manguonpk)>>'
ENDTEXT

cám ơn bạn những vẫn không được bạn à

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


bác nao co tài liệu về c# chỉ cho em với

C# thì nhiều lắm. Bạn thử cuốn này xem http://files.dot.net.vn/Download.aspx/2395753C95A543CCBB3DC2CA76BE7FE5/1/ApressAcceleratedCSharp2008Nov2007.pdf

Bodoi
14-04-2009, 11:15
Các bạn giúp đỡ mình một chút nhé. Mình có cơ sở dữ liệu Fox Dos, cơ sở dữ liệu này lại dùng font VietRes, mình giờ chỉ cần chuyển CSDL sang các loại CSDL mới bây giờ như Access, SQL, Excel...
Bạn nào có thể có phương án chuyển dữ liệu từ dbf sang Excel hoặc Access thì giúp mình nhá!!!

Mail mình là dungda@gmail.com Thanks for all!!!

manhtungtnk28
14-04-2009, 15:54
search trườc khi hỏi nhé:

http://www.ddth.com/showthread.php?t=203177

tungvv
18-04-2009, 15:30
Với code trên tôi đã sửa font theo ý thích thật là tuyệt, với nội dung chú thích (tooltip) thể hiện tiếng Việt như ý.

Trước đây, tôi cũng đã làm theo cách này nhưng sao Tooltip và menu title (Thanh tiêu đề trên mỗi ứng dụng) nó ko hiện được tiếng Việt ABC theo như font của PM. Bạn xem lại đi, chắc là bạn đang cài đặt Tooltip và Title bar ở trong dekstop của windows là font ABC nó mới hiện được đấy thôi. Bạn thử đổi các thứ này sang font Tahoma hoặc loại font Unicode khác mà PM của bạn vẫn hiện lên được tiếng việt ABC theo PM thì là điều lạ đấy, vì Tooltip và Title bar là các thứ mà windows quản lý và luôn hiện theo font của window nếu như ko có sự giả lập khác
Bạn xem ảnh tại đây nhé : http://www.quangbinh-izs.gov.vn/tung/tieng_viet.jpg
Bạn kiểm tra lại giúp nhé, nếu quả thực là như bạn nói thì cho tôi xin code chuyển font của bạn với.

Cám ơn nhiều!

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


Hiện nay, việc sử dụng unicode đã và đang dần trở thành 1 tiêu chuẩn đối với các phần mềm. Điều này là một khó khăn lớn cho các fan của VFP.

Nhằm có thể giải quyết vấn đề này, chúng ta (những người vẫn chưa thể rời bỏ chú cáo lúc này!) hãy cùng nhau trao đổi nhằm tìm ra những giải pháp "chữa cháy" trong "thời kỳ quá độ" này ! (trong khi chuẩn bị chuyển sang các ngôn ngữ khác)

Theo tôi, 1 phần mềm có thể dùng unicode như sau:

1/ Trong việc thể hiện: chỉ dùng để thể hiện như :
* label, commandbutton : do chỉ cần thể hiện được tiếng việt, nên có thể không cần dùng unicode. Vì vậy nên dùng vni,abc để thể hiện. Tuy nhiên nếu vẫn muốn dùng unicode thì vẫn được: dùng label và command trong microsof form 2.0
*menu bar (là menu bên dưới thanh tiêu đề của form). Việc sử dụng unicode trong trường hợp này là cần thiết. Vì menubar dùng font chữ được quy định bởi windows (cho tất cả các ứng dụng) nên nếu ta dùng loại font khác, sẽ gây ảnh hưởng đến các ứng dụng khác. Để giải quyết có thể dùng kỹ thuật "ownerdraw menu". Tuy nhiên khá khó.
*Titlebar: cũng như menubar, vậy có thể dùng owner titlebar" hoặc tạo riêng 1 thanh tiêu đề khác.
...

TayngangVFP, Bạn hướng dẫn hoặc cho mình code để sử dụng dùng kỹ thuật "ownerdraw menu" hay "owner titlebar" hoặc tạo riêng 1 thanh tiêu đề khác ...
Mình đã thể hiện hầu hết tiếng Việt bằng font của PM ko phụ thuộc vào font windows rồi nhưng chỉ còn lại cái titlebar, menu bar và tooltip là chưa độc lập được.
Theo mình thì các PM viết trên VFP chỉ cần hiển thị đúng font abc/Vni trên môi trường windows đang có font hệ thông là unicode thôi, ko cần phải lưu dữ liệu bằng font unicode(việc lưu đữ liệu trong VFP bằng kiểu font Unicode chẳng giải quyết thêm được vấn đề gì mà làm cho PM nặng nề thêm, khó code, trừ trường hợp PM có liên kết với các kiểu ngôn ngữ lập trình mới khác)
Bạn gửi cho mình tại đây nhé : tungvv@gmail.com
Cám ơn nhiều !

Bodoi
20-04-2009, 11:43
Mạnh Tùng có YM ko? Cho tớ địa chỉ. Tớ down mãi không đc bạn à.

danngudien
22-04-2009, 22:35
Trước đây, tôi cũng đã làm theo cách này nhưng sao Tooltip và menu title (Thanh tiêu đề trên mỗi ứng dụng) nó ko hiện được tiếng Việt ABC theo như font của PM. Bạn xem lại đi, chắc là bạn đang cài đặt Tooltip và Title bar ở trong dekstop của windows là font ABC nó mới hiện được đấy thôi. Bạn thử đổi các thứ này sang font Tahoma hoặc loại font Unicode khác mà PM của bạn vẫn hiện lên được tiếng việt ABC theo PM thì là điều lạ đấy, vì Tooltip và Title bar là các thứ mà windows quản lý và luôn hiện theo font của window nếu như ko có sự giả lập khác
Bạn xem ảnh tại đây nhé : http://www.quangbinh-izs.gov.vn/tung/tieng_viet.jpg
Bạn kiểm tra lại giúp nhé, nếu quả thực là như bạn nói thì cho tôi xin code chuyển font của bạn với.

Cám ơn nhiều!

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


TayngangVFP, Bạn hướng dẫn hoặc cho mình code để sử dụng dùng kỹ thuật "ownerdraw menu" hay "owner titlebar" hoặc tạo riêng 1 thanh tiêu đề khác ...
Mình đã thể hiện hầu hết tiếng Việt bằng font của PM ko phụ thuộc vào font windows rồi nhưng chỉ còn lại cái titlebar, menu bar và tooltip là chưa độc lập được.
Theo mình thì các PM viết trên VFP chỉ cần hiển thị đúng font abc/Vni trên môi trường windows đang có font hệ thông là unicode thôi, ko cần phải lưu dữ liệu bằng font unicode(việc lưu đữ liệu trong VFP bằng kiểu font Unicode chẳng giải quyết thêm được vấn đề gì mà làm cho PM nặng nề thêm, khó code, trừ trường hợp PM có liên kết với các kiểu ngôn ngữ lập trình mới khác)
Bạn gửi cho mình tại đây nhé : tungvv@gmail.com
Cám ơn nhiều !

để thể hiện tếng việt trên Tooltip và Title bar tôi cũng tạo một code như các bạn đấy thôi nhưng muốn tể hiện tiếng việt hoàn chỉnh thì khi chạy chương trình xong phải thoát khỏi visuafoxpro rồi vào lại thì tếng việt thể hiện đúng như ý mình.Còn cứ ở trong chương trình thì vẫn đầu lâu xương sọ thôi.

manhtungtnk28
23-04-2009, 09:28
Chào hoangtucodon76

Bạn thử tham khảo tại
http://www.echip.com.vn/echiproot/html/2005/so165/laptrinh.html
http://www.echip.com.vn/echiproot/html/2005/so167/laptrinh.html

Chúc thành công

ặc, đang cần bài này mà bị pageload rồi, chỉ lại giúp mình với

phongvan83
24-04-2009, 12:23
Mình thấy một số chương trình có thể check cấu hình máy (ổ cứng, windows, mainboard) để sinh ra một mã rồi dùng mã đó để ktra xem chương trình là có bản quyền hay không. Có ai biết trong vfp7 thì mình làm thê bằng cách nào không?

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

Liên hệ : ttphong68@yahoo.com

tự nhiên lập ra topic rồi phán câu không bao giờ thấy quay lại

Mèo mù với được cá ráng này. hố hố, xem nhạc hiệu đoán chương trình
http://www.garfieldhudson.com/FreeVideos.aspx

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


Mạnh Tùng có YM ko? Cho tớ địa chỉ. Tớ down mãi không đc bạn à.

tải được mà, bạn thử lại xem

tungvv
30-04-2009, 09:14
để thể hiện tếng việt trên Tooltip và Title bar tôi cũng tạo một code như các bạn đấy thôi nhưng muốn tể hiện tiếng việt hoàn chỉnh thì khi chạy chương trình xong phải thoát khỏi visuafoxpro rồi vào lại thì tếng việt thể hiện đúng như ý mình.Còn cứ ở trong chương trình thì vẫn đầu lâu xương sọ thôi.

Như vậy thì ko ổn rồi, cách của bạn thực ra là thêm vào PM code thay đổi kiểu hiện thị font TileBar và Tooltips của hệ thống về kiểu font abc/vni, như vậy thì chẳng khác gì việc chỉnh đổi desktop trước khi chạy PM, chỉ có điều là 1 bên làm thủ công, bên kia nhờ PM hỗ trợ thôi . Nếu theo cách này,khi bạn đang chạy PM KToán thì những chương trình khác có kiểu font là unicode đều ko hiển thị đúng tiếng việt. --> hướng này ko ổn rồi, Thấy bạn quảng cáo ngon quá, tôi cứ nghỉ là đã có cách hay.
Nói thật, tôi đã mất rất nhiều thời gian vì vấn đề này rồi nhưng đến nay vẫn bó ay đó . Ko biết có sư phụ nào đã làm chưa xin trợ giúp với ? Qua thảo luận trên 4rum này, tôi nghỉ là theo hướng bạn tayngangvfpthì có thể giúp được nhưng chắc dạo này bạn ấy đang bận nên chưa thấy trả lời đấy thôi.

txtcntt
30-04-2009, 23:02
Minh đang làm bài tập nhóm về visual foxpro. Mình đang vướng mắc vấn đề sau:Mình xây dựng một form tìm_kiếm hàng hóa theo mã hàng hoặc theo tên hàng hoặc là theo nhà cung cấp.kết quả tìm thấy sẽ được hiện ra bằng grid.
Thêm nữa là mình muốn xây dựng chức năng help trên menu mà không biết cách làm. Ai biết về vấn đề này thì cố gắng giúp mình với nhé. Mình cảm ơn rất nhiều. Cuối tuần này là mình phải nộp rồi. Các Pro hãy cố gắng giúp mình với nhé!

Thaphuong
05-05-2009, 13:31
có thể cho tôi xin một chương trình mẫu về cách tạo dăng nhập với name và password trong foxpro.
cảm ơn nhiều

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

giúp tôi cách chuyển file chạy trong chương trình foxpro thành exe zoi

vukg2030
06-05-2009, 11:12
Chào mọi người, mình cũng là fan của VFP!
Trước đây mình cũng có mấy phần mềm nho nhỏ viết bằng VFP,
Vừa mới chuyển cơ quan nên xếp mới muốn thử việc = một chương trình quản lý bán hàng của bộ phận mình làm.
Mình gặp khó khăn là khi chuyển năm làm việc từ thư mục này sang thư mục khác thì phần mềm báo lỗi, rẩ mong các cao thủ VFP giúp, cảm ơn nhiều.
Thanks

alone_night
06-05-2009, 17:08
Chẳng phải cao thủ gì, đây là lệnh cơ bản của vfp
dùng lệnh set default to
VD:
cPath = "C:\XYZ"
set default to (cPath)

dinhanhency
06-05-2009, 17:13
Mình thấy một số chương trình có thể check cấu hình máy (ổ cứng, windows, mainboard) để sinh ra một mã rồi dùng mã đó để ktra xem chương trình là có bản quyền hay không. Có ai biết trong vfp7 thì mình làm thê bằng cách nào không?

Check như thế này không có hợp lý ví dụ nếu khách hàng mua bản quyền về cài thì chỉ cài được 1 máy duy nhất ah? Máy đó hỏng thì sao?

damanthoidai
06-05-2009, 21:20
Chào anh TayngangVFP, em là thành viên mới gia nhập diễn đàn, đang học năm thứ hai nghành kế toán tài chính. Em vừa tự học visual foxpro qua sách của Ông Văn Thông về quản lý kế toán, nhưng bị vướn ở chỗ hình như có sự khác biệt giữa hai véion 6 và 9. Em viết đoạn code sau khi thi hành lựa chọn trên OptionGroup với 6 lựa chọn :
WITH thisform
IF .YeuCau.Value=0 Then
TB = "Xin Chon Ðieu Yeu Cau" + CHR(13) +;
"Muon Thuc Hien -Cam on"
=MESSAGEBOX(TB,"He Ke Toan")
ELSE
DO Case
Case.YeuCau.Value=1
DO Form "TC 01 Nhay Ky Thu"
Case.YeuCau.Value=2
DO Form "TC 02 Nhât Ky Chi"
Case.YeuCau.Value=3
DO Form "TC 03 Ton Quy Thang"
Case.YeuCau.Value=4
DO Form "TC 04 Bao Cao Quy"
Case.YeuCau.Value=5
DO Form "TC 05 Chung Tu Ghi So"
Case.YeuCau.Value=6
DO Form "TC 06 Nhat Ky Chung Tu"
ENDCASE
ENDIF
EndWith
nhưng khi xong rồi thì nhấp vào nút lệnh thi hành đoạn code trên không thấy thực hiện được các lệnh của Do Case .... EndCase. Nhờ anh chỉ giáo giúp dùm em nên sửa thế nào cho hợp lý. chân thành cảm ơn

manhtungtnk28
07-05-2009, 15:14
bạn nào giải thích hộ mình đoạn code này với:


IF nLevel = 0
BEGIN TRANSACTION
PUBLIC cOldError, nError
cCursors = ""
cOldError = ON("ERROR")
nError = 0
ON ERROR nError = ERROR()
ENDIF


ON("ERROR") ??
ON ERROR nError = ERROR() ??

icanvn
07-05-2009, 15:17
Chào anh TayngangVFP, em là thành viên mới gia nhập diễn đàn, đang học năm thứ hai nghành kế toán tài chính. Em vừa tự học visual foxpro qua sách của Ông Văn Thông về quản lý kế toán, nhưng bị vướn ở chỗ hình như có sự khác biệt giữa hai véion 6 và 9. Em viết đoạn code sau khi thi hành lựa chọn trên OptionGroup với 6 lựa chọn :
WITH thisform
IF .YeuCau.Value=0 Then
TB = "Xin Chon Ðieu Yeu Cau" + CHR(13) +;
"Muon Thuc Hien -Cam on"
=MESSAGEBOX(TB,"He Ke Toan")
ELSE
DO Case
Case.YeuCau.Value=1
DO Form "TC 01 Nhay Ky Thu"
Case.YeuCau.Value=2
DO Form "TC 02 Nhât Ky Chi"
Case.YeuCau.Value=3
DO Form "TC 03 Ton Quy Thang"
Case.YeuCau.Value=4
DO Form "TC 04 Bao Cao Quy"
Case.YeuCau.Value=5
DO Form "TC 05 Chung Tu Ghi So"
Case.YeuCau.Value=6
DO Form "TC 06 Nhat Ky Chung Tu"
ENDCASE
ENDIF
EndWith
nhưng khi xong rồi thì nhấp vào nút lệnh thi hành đoạn code trên không thấy thực hiện được các lệnh của Do Case .... EndCase. Nhờ anh chỉ giáo giúp dùm em nên sửa thế nào cho hợp lý. chân thành cảm ơn

Hình như là bạn viết dính như vậy là không được.
Bạn thử viết cách ra như thế này xem sao
DO Case
Case .YeuCau.Value=1
DO Form "TC 01 Nhay Ky Thu"
Case .YeuCau.Value=2
DO Form "TC 02 Nhât Ky Chi"
Case .YeuCau.Value=3
DO Form "TC 03 Ton Quy Thang"
Case .YeuCau.Value=4
DO Form "TC 04 Bao Cao Quy"
Case .YeuCau.Value=5
DO Form "TC 05 Chung Tu Ghi So"
Case .YeuCau.Value=6
DO Form "TC 06 Nhat Ky Chung Tu"
ENDCASE

damanthoidai
07-05-2009, 20:47
chào anh tayngangvfp,em xin anh gửi cho em chương trình nhập liệu cho vfp bằng unicode để tham khảo học hỏi nhé ! email của em là : giaovienangiang2009@gmail.com, rất chân thành học hỏi thêm ở anh và các đồng nghiệp trong diễn đàn.

tayngangvfp
08-05-2009, 08:40
bạn nào giải thích hộ mình đoạn code này với:


IF nLevel = 0
BEGIN TRANSACTION
PUBLIC cOldError, nError
cCursors = ""
cOldError = ON("ERROR")
nError = 0
ON ERROR nError = ERROR()
ENDIF


ON("ERROR") ??
ON ERROR nError = ERROR() ??


Đoạn code trên dùng ghi nhận số hiệu lỗi.
1. cOldError = ON("ERROR") : lưu lệnh bẫy lỗi hiện tại.
2. ON ERROR nError = ERROR(): đặt lệnh bẫy lỗi mới, có mục đích là ghi nhận số hiệu lỗi vào biến nError trong trường hợp có lỗi xảy ra.


@damanthoidai

Đã gửi, bạn check mail nhé.

vukg2030
08-05-2009, 10:07
Mọi người cho mình hỏi Visual FoxExpress (VFE) là gì vậy, nó có phải là addon của VFP không ?
Mình thấy bộ tài liệu VFE trong Box này hay quá, bạn nào có VFE hoặc có kinh nghiệm về VFE Post lên cho mọi người tham khảo nhé

icanvn
08-05-2009, 10:21
Cho mình hỏi trong vfp có thể làm cho screen lấp đầy màn hình giống như khi ta chiếu chương trình PowerPoint được không? Nhờ anh em chỉ giúp.

tayngangvfp
09-05-2009, 08:38
Cho mình hỏi trong vfp có thể làm cho screen lấp đầy màn hình giống như khi ta chiếu chương trình PowerPoint được không? Nhờ anh em chỉ giúp.

Bạn thiết lập các thuộc tính sau của form

WindowState= 2
TitleBar= 0
AlwaysOnTop = .T.
Desktop= .T.
ShowWindow= 2
BorderStyle= 1

damanthoidai
09-05-2009, 19:08
chào các anh em trong diễn đàn cho em hỏi, trong vfp 9 muốn cho nút thoát hiện ra cau thông báo có muốn thoát hay không kèm theo các nút oh và cancel như access thì phải viết như thế nào vậy ?

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

chào các anh em trong diễn đàn cho em hỏi, trong vfp 9 muốn cho nút thoát hiện ra cau thông báo có muốn thoát hay không kèm theo các nút ok và cancel như access thì phải viết như thế nào vậy ?

hoanglinhqh
11-05-2009, 10:38
Bác nào có tài liệu về lập trình hướng đối tượng trong vf6 cho em xin với.

icanvn
11-05-2009, 14:55
damanthoidai:

MESSAGEBOX("Ban co muon thoat hay khong?",1,"Hoi Lai Thu!")

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


Bạn thiết lập các thuộc tính sau của form

WindowState= 2
TitleBar= 0
AlwaysOnTop = .T.
Desktop= .T.
ShowWindow= 2
BorderStyle= 1

Cam on anh Tayngangvfp nhieu OK roi

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

Có Huynh nào biết viết đồng hồ đếm ngược không? làm ơn chỉ dùm cho mình với.

damanthoidai
11-05-2009, 21:31
chào các anh chi trong diễn đàn cho em hỏi trong đoạn chương trình sau em viết theo sách của tác giả Ông Văn Thông tự học visual foxpro 5 cơ bản tạo 1 form với hàm ngưởi dùng sau :
TC07.Init (Ủe Procedure) :
PARAMETERS WorkKey, LoaiPhieu
SELECT A02
SET FILTER TO A02.TKTong = .F.
SELECT A10
IF LoaiPhieu = .T.
SET FILTER TO A10.MaNC = "N"
ELSE
SET FILTER TO A10.MaNC = "C"
ENDIF
SELECT B02
IF LoaiPhieu = "T"
SET FILTER TO B02.MaCT $ "011-013"
ELSE
SET FILTER TO B02.MaCT $ "012-014"
ENDIF
SET ORDER TO B02RKey
SEEK WorkKey
ThisForm.Refresh
nghưng khi chạy thì bị báo lỗi này : Operator/ operand type mismatch em chỉnh hoài không được nhờ các cao thủ chỉ giúp cho, chân thành cảm ơn !

The Old Man
11-05-2009, 21:56
chào các anh chi trong diễn đàn cho em hỏi trong đoạn chương trình sau em viết theo sách của tác giả Ông Văn Thông tự học visual foxpro 5 cơ bản tạo 1 form với hàm ngưởi dùng sau :
TC07.Init (Ủe Procedure) :
PARAMETERS WorkKey, LoaiPhieu
SELECT A02
SET FILTER TO A02.TKTong = .F.
SELECT A10
IF LoaiPhieu = .T.
SET FILTER TO A10.MaNC = "N"
ELSE
SET FILTER TO A10.MaNC = "C"
ENDIF
SELECT B02
IF LoaiPhieu = "T"
SET FILTER TO B02.MaCT $ "011-013"
ELSE
SET FILTER TO B02.MaCT $ "012-014"
ENDIF
SET ORDER TO B02RKey
SEEK WorkKey
ThisForm.Refresh
nghưng khi chạy thì bị báo lỗi này : Operator/ operand type mismatch em chỉnh hoài không được nhờ các cao thủ chỉ giúp cho, chân thành cảm ơn !

Coi chổ màu đỏ này đi!

damanthoidai
12-05-2009, 08:46
cảm ơn anh em đã sửa lại và khắc phục được lỗi này nhưng lại báo lỗi ở chổ : Seek WorkKey là Data type mismatch không biết sửa sao đây anh chỉ dùm em

The Old Man
12-05-2009, 09:13
chào các anh chi trong diễn đàn cho em hỏi trong đoạn chương trình sau em viết theo sách của tác giả Ông Văn Thông tự học visual foxpro 5 cơ bản tạo 1 form với hàm ngưởi dùng sau :
TC07.Init (Ủe Procedure) :
PARAMETERS WorkKey, LoaiPhieu
.
.
.
.
.
.
.
SET ORDER TO B02RKey
SEEK WorkKey
ThisForm.Refresh
nghưng khi chạy thì bị báo lỗi này : Operator/ operand type mismatch em chỉnh hoài không được nhờ các cao thủ chỉ giúp cho, chân thành cảm ơn !

Field name B02RKey không cùng loại (mismatch type) với Workkey pass từ parameters vào trong Procedure.

Ví dụ bạn pass cái parameter vảo trong procedure là Char mà field name B02RKey type là numeric thì bị error ngay vì không thể seek char trong index numeric.

damanthoidai
14-05-2009, 11:01
chào các anh chị trong diễn đàn em xem trong tài liệu của tác giả Ông Văn Thông và viết hàm đọc số ra chữ việt để tính tiền trong form như sau :
PARAMETERS BaoNhieu
PRIVATE ALL EXCEPT BaoNhieu
IF BaoNhieu = 0 Then
KetQua = "Không Đồng"
ELSE
IF ABS(BaoNhieu) >= 999999999999999.99 Then
KetQua = "Số Quá Lớn"
ELSE
IF BaoNhieu < 0 Then
KetQua = "Trừ" + SPACE(1)
ELSE
KetQua = SPACE(0)
ENDIF
XSoTien = STR(ABS(BaoNhieu),18,2)
DIMENSION Hang(3), Doc(6), Dem(9)
STORE "trăm" TO Hang(1)
STORE "mươi" TO Hang(2)
STORE "gì Đó" TO Hang(3)
STORE "ngàn Tỷ" TO Doc(1)
STORE "tỷ" TO Doc(2)
STORE "triệu" TO Doc(3)
STORE "ngàn" TO Doc(4)
STORE "đồng" TO Doc(5)
STORE "Xu" TO Doc(6)
STORE "một" TO Dem(1)
STORE "hai" TO Dem(2)
STORE "ba" TO Dem(3)
STORE "bốn" TO Dem(4)
STORE "năm" TO Dem(5)
STORE "sáu" TO Dem(6)
STORE "bảy" TO Dem(7)
STORE "tám" TO Dem(8)
STORE "chín" TO Dem(9)
FOR N = 1 TO 6
Nhom = SUBSTR(XSoTien, N * 3 - 2,3)
IF Nhom <> SPACE(3) Then
DO CASE
CASE Nhom = "000"
IF N = 5 Then
Chu = "đồng" + SPACE(1)
ELSE
Chu = SPACE(0)
ENDIF
CASE Nhom = ",00" OR Nhom = ".00"
Chu = "chẵn"
OTHERWISE
S1 = LEFT(Nhom,1)
S2 = SUBSTR(Nhom,2,1)
S3 = RIGHT(Nhom,1)
Chu = SPACE(0)
FOR M = 1 TO 3
Dich = SPACE(0)
S = VAL(SUBSTR(Nhom,M,1))
IF S > 0 Then
Dich = Dem(S) + SPACE(1) + Hang(M) + SPACE(1)
ELSE
IF M = 1 AND N > 1 AND N < 6 AND;
VAL(SUBSTR(XSoTien,(N - 1) * 3 - 2,3)) > 0 Then
Dich = "không " + Hang(M) + SPACE(1)
ENDIF
ENDIF
DO CASE
CASE M = 2 AND S = 1
Dich = "mười" + SPACE(1)
CASE M = 3 AND S = 0 AND Nhom <> SPACE(2) + "0"
Dich = Hang(M) + SPACE(1)
CASE M = 3 AND S = 5 AND S2 <> SPACE(1) AND S2 <> "0"
Dich = "l" + SUBSTR(Dich,2)
CASE M = 2 AND S = 0 AND S3 <> "0"
IF N > 1 VAL(SUBSTR(XSotien,(N - 1) * 3 - 2,3)) > 0;
OR(VAL(S1) > 0) Then
Dich = "lẻ" + SPACE(1)
ENDIF
END CASE
Chu = Chu + Dich
NEXT M
END CASE
ViTri = AT("mươi một", Chu)
IF ViTri > 0 Then
Chu = LEFT(Chu, ViTri - 1) + "mươi mốt" + SUBSTR(Chu, ViTri + 9)
ENDIF
KetQua = KetQua + Chu
ENDIF
NEXT N
ENDIF
ENDIF
ENDIF
RETURN UPPER(LEFT(KetQua, 1)) + SUBSTR(KetQua, 2)
Nhưng khi chạy trên form thì bị báo lỗi ngay tại chỗ :

An IF|ELSE|ENDIF Statement í missing, không biết thiếu hay thừa chổ nào của phát biểu IF Then Else mà nó báo lỗi xin các anh chị xem xét dùm cho, em chân thành cảm ơn

The Old Man
14-05-2009, 11:29
3 chữ ENDIF cuối câu dư một chữ. Chỉ cần có 2. Hoặc là bạn thiếu 1 cái IF nơi nào đó.

icanvn
14-05-2009, 11:29
chào các anh chị trong diễn đàn em xem trong tài liệu của tác giả Ông Văn Thông và viết hàm đọc số ra chữ việt để tính tiền trong form như sau :
PARAMETERS BaoNhieu
PRIVATE ALL EXCEPT BaoNhieu
IF BaoNhieu = 0 Then
KetQua = "Không Đồng"
ELSE
IF ABS(BaoNhieu) >= 999999999999999.99 Then
KetQua = "Số Quá Lớn"
ELSE
IF BaoNhieu < 0 Then
KetQua = "Trừ" + SPACE(1)
ELSE
KetQua = SPACE(0)
ENDIF
XSoTien = STR(ABS(BaoNhieu),18,2)
DIMENSION Hang(3), Doc(6), Dem(9)
STORE "trăm" TO Hang(1)
STORE "mươi" TO Hang(2)
STORE "gì Đó" TO Hang(3)
STORE "ngàn Tỷ" TO Doc(1)
STORE "tỷ" TO Doc(2)
STORE "triệu" TO Doc(3)
STORE "ngàn" TO Doc(4)
STORE "đồng" TO Doc(5)
STORE "Xu" TO Doc(6)
STORE "một" TO Dem(1)
STORE "hai" TO Dem(2)
STORE "ba" TO Dem(3)
STORE "bốn" TO Dem(4)
STORE "năm" TO Dem(5)
STORE "sáu" TO Dem(6)
STORE "bảy" TO Dem(7)
STORE "tám" TO Dem(8)
STORE "chín" TO Dem(9)
FOR N = 1 TO 6
Nhom = SUBSTR(XSoTien, N * 3 - 2,3)
IF Nhom <> SPACE(3) Then
DO CASE
CASE Nhom = "000"
IF N = 5 Then
Chu = "đồng" + SPACE(1)
ELSE
Chu = SPACE(0)
ENDIF
CASE Nhom = ",00" OR Nhom = ".00"
Chu = "chẵn"
OTHERWISE
S1 = LEFT(Nhom,1)
S2 = SUBSTR(Nhom,2,1)
S3 = RIGHT(Nhom,1)
Chu = SPACE(0)
FOR M = 1 TO 3
Dich = SPACE(0)
S = VAL(SUBSTR(Nhom,M,1))
IF S > 0 Then
Dich = Dem(S) + SPACE(1) + Hang(M) + SPACE(1)
ELSE
IF M = 1 AND N > 1 AND N < 6 AND;
VAL(SUBSTR(XSoTien,(N - 1) * 3 - 2,3)) > 0 Then
Dich = "không " + Hang(M) + SPACE(1)
ENDIF
ENDIF
DO CASE
CASE M = 2 AND S = 1
Dich = "mười" + SPACE(1)
CASE M = 3 AND S = 0 AND Nhom <> SPACE(2) + "0"
Dich = Hang(M) + SPACE(1)
CASE M = 3 AND S = 5 AND S2 <> SPACE(1) AND S2 <> "0"
Dich = "l" + SUBSTR(Dich,2)
CASE M = 2 AND S = 0 AND S3 <> "0"
IF N > 1 VAL(SUBSTR(XSotien,(N - 1) * 3 - 2,3)) > 0;
OR(VAL(S1) > 0) Then
Dich = "lẻ" + SPACE(1)
ENDIF
END CASE
Chu = Chu + Dich
NEXT M
END CASE
ViTri = AT("mươi một", Chu)
IF ViTri > 0 Then
Chu = LEFT(Chu, ViTri - 1) + "mươi mốt" + SUBSTR(Chu, ViTri + 9)
ENDIF
KetQua = KetQua + Chu
ENDIF
NEXT N
ENDIF
ENDIF
ENDIF
RETURN UPPER(LEFT(KetQua, 1)) + SUBSTR(KetQua, 2)
Nhưng khi chạy trên form thì bị báo lỗi ngay tại chỗ :

An IF|ELSE|ENDIF Statement í missing, không biết thiếu hay thừa chổ nào của phát biểu IF Then Else mà nó báo lỗi xin các anh chị xem xét dùm cho, em chân thành cảm ơn

Bạn lấy cái này về dùng, chạy ổn rồi đó.
FUNCTION vnd
PARAMETERS BaoNhieu
PRIVATE ALL EXCEPT BaoNhieu
IF BaoNhieu = 0 Then
KetQua = "Không đồng"
ELSE
IF ABS(BaoNhieu) >= 999999999999999.99 then
KetQua="Số quá lớn"
ELSE
IF BaoNhieu < 0 then
KetQua="Trừ"+SPACE(1)
ELSE
KetQua=SPACE(0)
ENDIF

SoTien=STR(ABS(BaoNhieu),18,2)
DIMENSION Hang (3),Doc (6), Dem (9)
STORE "trăm" TO Hang(1)
STORE "mươi" TO Hang(2)
STORE "gì đó" TO Hang(3)
STORE "nghìn tỷ" TO Doc(1)
STORE "tỷ" TO Doc(2)
STORE "triệu" TO Doc(3)
STORE "nghìn" TO Doc(4)
STORE "đồng" TO Doc(5)
*STORE "xu" TO Doc(6)
STORE "một" TO Dem(1)
STORE "hai" TO Dem(2)
STORE "ba" TO Dem(3)
STORE "bốn" TO Dem(4)
STORE "năm" TO Dem(5)
STORE "sáu" TO Dem(6)
STORE "bảy" TO Dem(7)
STORE "tám" TO Dem(8)
STORE "chín" TO Dem(9)
FOR N=1 TO 5 && the bang xu thanh 5 thanh 6
Nhom=SUBSTR(SoTien,N*3-2,3)
IF Nhom <> SPACE(3) Then
DO Case
CASE Nhom ="000"
IF N=5 then
Chu="đồng"+SPACE(1)
ELSE
Chu=SPACE(0)
ENDIF
CASE Nhom=",00" && phaồy khoõng khoõng
Chu="chẳn"
OTHERWISE
S1=LEFT(Nhom,1)
S2=SUBSTR(Nhom,2,1)
S3=RIGHT(Nhom,1)
Chu=SPACE(0)
Hang(3)=Doc(N)
FOR M=1 TO 3
Dich = SPACE(0)
S = VAL(SUBSTR(Nhom,M,1))
IF S>0 Then
Dich=Dem(S)+SPACE(1)+Hang(M)+SPACE(1)
ENDIF
DO case
CASE M=2 And S=1
Dich="mười"+SPACE(1)
CASE M=3 And S=0 AND Nhom<>SPACE(2)+"0"
Dich=Hang(M)+SPACE(1)
CASE M=3 AND S=5 AND S2<>SPACE(1)And S2<>"0"
Dich="I"+SUBSTR(Dich,2) && kyự tửù en lụứ
CASE M=2 AND S=0 AND S3<>"0"
if(S1>="1"And S1<="9")Or(S1="0"And N=5)Then
Dich="lẻ"+SPACE(1)
ENDIF
ENDCASE
Chu=Chu+Dich
NEXT M
ENDCASE
Vitri=AT("mươi mốt",Chu)
IF Vitri>0 Then
Chu=LEFT(Chu,Vitri-1)+"muơi mốt"+SUBSTR(Chu,Vitri+9)
ENDIF
KetQua=KetQua+Chu
ENDIF
NEXT N
ENDIF
ENDIF
RETURN UPPER(LEFT(KetQua,1))+SUBSTR(KetQua,2)
ENDFUNC

The Old Man
14-05-2009, 13:49
Gởi các newbie trong ngành lập trình.
Muốn debug những lổi như bạn damanthoidai nêu lên thì cách dể dàng nhất đễ tronn những cái code dài long thòng khó theo dởi như trên thì :
1. copy cái PRG ra một PRG có tên khác vd như Mydebug.PRG

2. Dùng editor của bạn hay dùng mở cái Mydebug.PRG lên edit.

3. Delete hết những gì có IF dến THEN rồi ELSE và ENDIF sát nhau. Coi những cái tô đỏ trong Quote, đó là những cái tôi delete vì có IF THEN ELSE ENDIF sát nhau (liên tục) Hoặc IF ELSE ENDIF. hoặc FOR NEXT, DO CASE OTHERWISE END CASE sát nhau dể thấy.



PARAMETERS BaoNhieu
PRIVATE ALL EXCEPT BaoNhieu
IF BaoNhieu = 0 Then
KetQua = "Không Đồng"
ELSE
IF ABS(BaoNhieu) >= 999999999999999.99 Then
KetQua = "Số Quá Lớn"
ELSE
IF BaoNhieu < 0 Then
KetQua = "Trừ" + SPACE(1)
ELSE
KetQua = SPACE(0)
ENDIF
XSoTien = STR(ABS(BaoNhieu),18,2)
DIMENSION Hang(3), Doc(6), Dem(9)
STORE "trăm" TO Hang(1)
STORE "mươi" TO Hang(2)
STORE "gì Đó" TO Hang(3)
STORE "ngàn Tỷ" TO Doc(1)
STORE "tỷ" TO Doc(2)
STORE "triệu" TO Doc(3)
STORE "ngàn" TO Doc(4)
STORE "đồng" TO Doc(5)
STORE "Xu" TO Doc(6)
STORE "một" TO Dem(1)
STORE "hai" TO Dem(2)
STORE "ba" TO Dem(3)
STORE "bốn" TO Dem(4)
STORE "năm" TO Dem(5)
STORE "sáu" TO Dem(6)
STORE "bảy" TO Dem(7)
STORE "tám" TO Dem(8)
STORE "chín" TO Dem(9)
FOR N = 1 TO 6
Nhom = SUBSTR(XSoTien, N * 3 - 2,3)
IF Nhom <> SPACE(3) Then
DO CASE
CASE Nhom = "000"
IF N = 5 Then
Chu = "đồng" + SPACE(1)
ELSE
Chu = SPACE(0)
ENDIF
CASE Nhom = ",00" OR Nhom = ".00"
Chu = "chẵn"
OTHERWISE
S1 = LEFT(Nhom,1)
S2 = SUBSTR(Nhom,2,1)
S3 = RIGHT(Nhom,1)
Chu = SPACE(0)
FOR M = 1 TO 3
Dich = SPACE(0)
S = VAL(SUBSTR(Nhom,M,1))
IF S > 0 Then
Dich = Dem(S) + SPACE(1) + Hang(M) + SPACE(1)
ELSE
IF M = 1 AND N > 1 AND N < 6 AND;
VAL(SUBSTR(XSoTien,(N - 1) * 3 - 2,3)) > 0 Then
Dich = "không " + Hang(M) + SPACE(1)
ENDIF
ENDIF
DO CASE
CASE M = 2 AND S = 1
Dich = "mười" + SPACE(1)
CASE M = 3 AND S = 0 AND Nhom <> SPACE(2) + "0"
Dich = Hang(M) + SPACE(1)
CASE M = 3 AND S = 5 AND S2 <> SPACE(1) AND S2 <> "0"
Dich = "l" + SUBSTR(Dich,2)
CASE M = 2 AND S = 0 AND S3 <> "0"
IF N > 1 VAL(SUBSTR(XSotien,(N - 1) * 3 - 2,3)) > 0;
OR(VAL(S1) > 0) Then
Dich = "lẻ" + SPACE(1)
ENDIF
END CASE
Chu = Chu + Dich
NEXT M
END CASE
ViTri = AT("mươi một", Chu)
IF ViTri > 0 Then
Chu = LEFT(Chu, ViTri - 1) + "mươi mốt" + SUBSTR(Chu, ViTri + 9)
ENDIF
KetQua = KetQua + Chu
ENDIF
NEXT N
ENDIF
ENDIF
ENDIF
RETURN UPPER(LEFT(KetQua, 1)) + SUBSTR(KetQua, 2)



Sau đó trở lại từ đầu bài tiếp tục delete lại những cái chốt như đả nói.

coi quote thứ nhì:



PARAMETERS BaoNhieu
PRIVATE ALL EXCEPT BaoNhieu
IF BaoNhieu = 0 Then
KetQua = "Không Đồng"
ELSE
IF ABS(BaoNhieu) >= 999999999999999.99 Then
KetQua = "Số Quá Lớn"
ELSE

XSoTien = STR(ABS(BaoNhieu),18,2)
DIMENSION Hang(3), Doc(6), Dem(9)
STORE "trăm" TO Hang(1)
STORE "mươi" TO Hang(2)
STORE "gì Đó" TO Hang(3)
STORE "ngàn Tỷ" TO Doc(1)
STORE "tỷ" TO Doc(2)
STORE "triệu" TO Doc(3)
STORE "ngàn" TO Doc(4)
STORE "đồng" TO Doc(5)
STORE "Xu" TO Doc(6)
STORE "một" TO Dem(1)
STORE "hai" TO Dem(2)
STORE "ba" TO Dem(3)
STORE "bốn" TO Dem(4)
STORE "năm" TO Dem(5)
STORE "sáu" TO Dem(6)
STORE "bảy" TO Dem(7)
STORE "tám" TO Dem(8)
STORE "chín" TO Dem(9)
FOR N = 1 TO 6
Nhom = SUBSTR(XSoTien, N * 3 - 2,3)
IF Nhom <> SPACE(3) Then
DO CASE
CASE Nhom = "000"



CASE Nhom = ",00" OR Nhom = ".00"
Chu = "chẵn"
OTHERWISE
S1 = LEFT(Nhom,1)
S2 = SUBSTR(Nhom,2,1)
S3 = RIGHT(Nhom,1)
Chu = SPACE(0)
FOR M = 1 TO 3
Dich = SPACE(0)
S = VAL(SUBSTR(Nhom,M,1))
IF S > 0 Then
Dich = Dem(S) + SPACE(1) + Hang(M) + SPACE(1)
ELSE



ENDIF
DO CASE
CASE M = 2 AND S = 1
Dich = "mười" + SPACE(1)
CASE M = 3 AND S = 0 AND Nhom <> SPACE(2) + "0"
Dich = Hang(M) + SPACE(1)
CASE M = 3 AND S = 5 AND S2 <> SPACE(1) AND S2 <> "0"
Dich = "l" + SUBSTR(Dich,2)
CASE M = 2 AND S = 0 AND S3 <> "0"



END CASE
Chu = Chu + Dich
NEXT M
END CASE
ViTri = AT("mươi một", Chu)



KetQua = KetQua + Chu
ENDIF
NEXT N
ENDIF
ENDIF
ENDIF
RETURN UPPER(LEFT(KetQua, 1)) + SUBSTR(KetQua, 2)


Rồi lại delete tiếp các chốt. rối làm lại

Cuối cùng sẻ còn lại :



PARAMETERS BaoNhieu
PRIVATE ALL EXCEPT BaoNhieu
IF BaoNhieu = 0 Then
KetQua = "Không Đồng"
ELSE
IF ABS(BaoNhieu) >= 999999999999999.99 Then
KetQua = "Số Quá Lớn"
ELSE
XSoTien = STR(ABS(BaoNhieu),18,2)
DIMENSION Hang(3), Doc(6), Dem(9)
STORE "trăm" TO Hang(1)
STORE "mươi" TO Hang(2)
STORE "gì Đó" TO Hang(3)
STORE "ngàn Tỷ" TO Doc(1)
STORE "tỷ" TO Doc(2)
STORE "triệu" TO Doc(3)
STORE "ngàn" TO Doc(4)
STORE "đồng" TO Doc(5)
STORE "Xu" TO Doc(6)
STORE "một" TO Dem(1)
STORE "hai" TO Dem(2)
STORE "ba" TO Dem(3)
STORE "bốn" TO Dem(4)
STORE "năm" TO Dem(5)
STORE "sáu" TO Dem(6)
STORE "bảy" TO Dem(7)
STORE "tám" TO Dem(8)
STORE "chín" TO Dem(9)
ENDIF
ENDIF
ENDIF
RETURN UPPER(LEFT(KetQua, 1)) + SUBSTR(KetQua, 2)


Bạn sẻ thấy rỏ là lổi ở đâu.

cucgach2
15-05-2009, 09:59
Mình đang làm 1 project = Visual Foxpro, mình muốn create 1 ODBC bằng lệnh của VFP. Ý tưởng là sử dụng Crystal Report để lập báo cáo.

1. Em cần các câu lệnh để tạo được 1 ODBC/system DNS.

2. Ngoài ý tưởng dùng CR lập báo cáo, mong được các bác chia sẻ ý tưởng sử dụng ODBC vào các chức năng khác. Em chưa sử dụng ODBC bao giờ nên chưa biết gì. Mong được các bác chia sẻ.

trongtin_ltv
15-05-2009, 17:15
Thân chào các bạn
Mình đang bị vướng phần import dữ liệu từ file Excell 2003 vao Viusal foxpro 6.0. Nó không hiểu format của excell vì VF6 chỉ hổ trợ từ Excel 5 trở xuống.
Dùng các lệnh này đều báo lỗi 'Ms Excell file format is valid"
Import from (cFileExcel) type XLS SHEET "&cTenSheet"
Import from (cFileExcel) type XLS8 SHEET "&cTenSheet"

Chuyển sang VF9 thì được nhưng cần phải sửa lại các câu lệnh SQL cho phù hợp. Nhưng như vậy thì lâu quá
Các bạn có giải pháp nào giúp mình với
Cảm ơn các bạn rất nhiều

cucgach2
18-05-2009, 01:10
mình ko rành lắm nhưng mình nghĩ ra được 2 hướng:

1. Thử convert file xls của bạn xuống bảo 5 đi, rồi import
2. Import qua ODBC, bạn đã thử chưa?

Chả biết có đúng ko nữa, mình chưa đi vào xử lý cụ thể. Nếu sai mong bà con lượng thứ :D

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

mình vẫn cần hỏi code tạo 1 system DSN kết nối tới VFP mà viết ngay trên VFP
Ý tưởng của mình là cứ mỗi khi chạy chương trình là nó tự tạo system DSN để Crystal Report lấy dữ liệu ra export ra báo cáo. Nhưng mình đã thử search và viết mãi ko được. Mong được anh em giúp đỡ

trongtin_ltv
18-05-2009, 12:01
Cam on ban rất nhiều
Khi save as lai bản 5 thì chac chan quet dc.
Mình viết sòt cho khach hàng, neu bao họ mỗi lần quét file thì phải save á lại thì không hay lắm.
Để mình thử bằng ODBC xem sao

Viec ket noi voi SQL, bạn có thể dùng ODBC để tạo Datasource và dùng lệnh hàm SQLConnect hoac tao ra luc ket noi :
Bạn tham khảo thử doan lenh nay xem, (minh viet ra co the bi sai hoac thieu doi chút)
Add OLEcontrol của Crystall report phục vụ báo cáo lên form (OleRT1)
dùng các lệnh lấy DLiệu
nHandle = SQLStringConnect("Driver=SQL Server;Server=<TênServer>; UID=<sa>;PWD=<sa>;Database=<TenDatabase>")
= SQLPREPARE(nHandle,mSTRSQL ,'Cur_BCXUAT')
IF SQLEXEC(gnConnHandle) <=0
= SQLDISCONNECT(gnConnHandle)
=MESSAGEBOX('Kh“ng th¨c hi¬n ­Ÿøc l¬nh SPT',30,'')
RETURN
ENDIF
THISFORM.OleRT1.reportFilename = mBAOCAO && đường dẫn file report
THISFORM.OleRT1.Action = 1
Chuc thanh cong
TrongTin_ltv

cucgach2
18-05-2009, 23:24
Bạn hiểu sai ý mình rồi. Mình tạo database, prg, form, menu ...trên VFP, chỉ trừ có report. Hiện nay mình muốn tạo 1 system DSN (trong ODBC) để kết nối Crystal Report tới database của VFP. Mình muốn viết 1 prg = VFP để tự động tạo 1 ODBC cho CR kết nối tới database của VFP và chạy report.

Tức là sẽ phải viết code tạo DSN = VFP để kết nối tới chính VFP. Mình có tham khảo các đoạn code nhưng vẫn ko thể hoàn thành được. Mong được sự giúp đỡ của mọi ng' càng sớm càng tốt. Mình đang rất cần


P/S: Xin hỏi ngoài luồng chút, chữ ltv trong nick của bác có ý nghĩa gì thế?

trongtin_ltv
19-05-2009, 13:33
Vậy à, Mình chưa thử
Trước giờ mình tạo DBC bằng tay kết nối Datbase
Sau đó sử dụng ODBC này để báo cáo hoặc query ra bảng DL cần báo cáo sau đó theo cách trên đưa ra crystall report thông qua OLE
Để Rảnh mình thử viết code tạo ODBC xem

LTV : do gần chục năm về trước mình là Lập Trình Viên nên nick Yahoo lấy từ lúc đó đến giờ.
________________________
Thu doan code này nhe!
cCONNSTRING ="Driver={Microsoft Visual FoxPro Driver};UID=;PWD=;SourceDB=E:\TrongTin\TAISAN.DBC; SourceType=DBC;Exclusive=No;BackgroundFetch=Yes;Co llate=Machine;Null=Yes;Deleted=Yes;"
abc = SQLSTRINGCONNECT(cCONNSTRING)
?abc
minh thu thi no ket noi dc do

cucgach2
19-05-2009, 23:35
Vậy bác hơn tuổi em kha khá rồi, em giờ mới đi làm :D. Cám ơn bác rất nhiều, em đã test đoạn code của bác. Kết quả như sau:

1. Đoạn code trên có kí tự "Co llate" hình như bác viết bị dấu cách (cái này e đã sửa khi đưa vào prg)
2. Em thử = 1 file DBC bất kì và đọc help về SQLSTRINGCONNECT() thì:
+ Giá trị trả về là 1, rồi +1 sau mỗi lần run. Theo phần help thì đó là kết nối được đúng ko bác? -1 là ko kết nối đc.

Em xin mô tả lại những yêu cầu mà em cần khi em tạo system DSN = tay:
vào phần system DSN, gõ tên DSN vd: cucgach2 , chọn dbtype là DBC, các thuộc tính sau thì mặc định như đoạn code của bác.

Khi ok thì trong list System DSN có 1 dsn tên "cucgach2"
Vậy đó là căn cứ để em kết nối các bảng với CR. Em vào CR, Blank RPT, rồi chọn current connection và chọn ODBC, chọn cucgach2, chọn các bảng cần để đẩy ra report.

Như vậy em kéo các trường vào report là xong. Đó là em làm bằng tay thành công.

Nhưng sau khi em test đoạn code của bác thì em thấy trả về giá trị kiểu Numeric thì theo em đọc là có kết nối nhưng em ko hiểu đó là kết nối gì nhỉ? và nó không tạo đc 1 DSN trong list system DSN. Chỉ khi em tạo đc 1 tên trong list system DSN thì em mới kết nối đc với report.

Mong bác giúp đỡ. Em xin cung cấp 1 đoạn code tạo form để tạo 1 user DSN kết nối SQL trong ODBC. Form này có chức năng thêm 1 User DSN, sửa và xóa DSN đó. Sau khi chạy xong thì được y như em mong muốn, mỗi tội là kết nối tới SQL chứ ko phải VFP. Em tìm cách sửa theo yêu cầu của em nhưng ko đc.

PUBLIC oForm
oForm = CREATEOBJECT("clsvfpdsn")
oForm.show()

DEFINE CLASS clsvfpdsn AS form

Top = 0
Left = 0
Height = 92
Width = 309
DoCreate = .T.
Caption = "VFP CREATED DSN"
WindowType = 1
Name = "Form1"
AutoCenter = .T.

ADD OBJECT command1 AS commandbutton WITH ;
Top = 45, ;
Left = 37, ;
Height = 27, ;
Width = 100, ;
Caption = "Add DSN", ;
Name = "Command1"

ADD OBJECT command2 AS commandbutton WITH ;
Top = 45, ;
Left = 171, ;
Height = 27, ;
Width = 100, ;
Caption = "Remove DSN", ;
Name = "Command2"

ADD OBJECT check1 AS checkbox WITH ;
Top = 19, ;
Left = 37, ;
Height = 17, ;
Width = 82, ;
AutoSize = .T., ;
BackStyle = 0, ;
Caption = "Silent Mode", ;
Value = 1, ;
Name = "Check1"

PROCEDURE Load
DECLARE INTEGER SQLConfigDataSource IN odbccp32;
INTEGER hwndParent,;
INTEGER fRequest,;
STRING lpszDriver,;
STRING lpszAttributes
ENDPROC

PROCEDURE command1.Click
#DEFINE ODBC_ADD_DSN 1
*!* #DEFINE ODBC_CONFIG_DSN 2
*!* #DEFINE ODBC_REMOVE_DSN 3

Local nReturnValue, cDriver, cAttribs

cDriver = "SQL Server"
cAttribs = "SERVER=SomeServer" + Chr(0)
cAttribs = cAttribs + "DESCRIPTION=Temporary DSN created with VFP code" + Chr(0)
cAttribs = cAttribs + "DSN=VFP_CREATED_DSN" + Chr(0)
cAttribs = cAttribs +"DATABASE=pubs" + Chr(0)

IF thisform.check1.value = 0
nReturnValue = SQLConfigDataSource(thisform.hwnd, ODBC_ADD_DSN, cDriver, cAttribs)
ELSE
nReturnValue = SQLConfigDataSource(0, ODBC_ADD_DSN, cDriver, cAttribs)
ENDIF

If nReturnValue = 1
Messagebox("VFP_CREATED_DSN Created",64,"SUCCESS")
Else
Messagebox("Creation of VFP_CREATED_DSN Failed",64,"FAILURE")
Endif
ENDPROC

PROCEDURE command2.Click
#DEFINE ODBC_REMOVE_DSN 3
*!* #DEFINE ODBC_ADD_DSN 1
*!* #DEFINE ODBC_CONFIG_DSN 2

Local nReturnValue, cDriver, cAttribs

cDriver = "SQL Server"
cAttribs = "DSN=VFP_CREATED_DSN" + Chr(0)

IF thisform.check1.value = 0
nReturnValue = SQLConfigDataSource(thisform.hwnd, ODBC_REMOVE_DSN, cDriver, cAttribs)
ELSE
nReturnValue = SQLConfigDataSource(0, ODBC_REMOVE_DSN, cDriver, cAttribs)
ENDIF

If nReturnValue = 1
Messagebox("VFP_CREATED_DSN Deleted",64,"SUCCESS")
Else
Messagebox("Deletion of VFP_CREATED_DSN Failed",64,"FAILURE")
Endif
ENDPROC

ENDDEFINE


[DA Visual FoxPro]
Driver=vfpodbc.dll
Setup=vfpodbc.dll
Name=Microsoft Visual FoxPro Driver
APILevel=0
ConnectFunctions=YYN
DriverODBCVer=02.50
FileUsage=1
FileExtns=*.dbc,*.dbf
SQLLevel=0
ConfigDSN=DSN=Visual FoxPro Tables|SourceDB=|SourceType=DBF||

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

Đây là đoạn chính trong prg trên mà em cần sửa theo yêu cầu của em:

1 PROCEDURE Load
2 DECLARE INTEGER SQLConfigDataSource IN odbccp32;
3 INTEGER hwndParent,;
4 INTEGER fRequest,;
5 STRING lpszDriver,;
6 STRING lpszAttributes
7 ENDPROC

PROCEDURE command1.Click
#DEFINE ODBC_ADD_DSN 1
*!* #DEFINE ODBC_CONFIG_DSN 2
*!* #DEFINE ODBC_REMOVE_DSN 3

Local nReturnValue, cDriver, cAttribs

cDriver = "SQL Server"
cAttribs = "SERVER=SomeServer" + Chr(0)
cAttribs = cAttribs + "DESCRIPTION=Temporary DSN created with VFP code" + Chr(0)
cAttribs = cAttribs + "DSN=VFP_CREATED_DSN" + Chr(0)
cAttribs = cAttribs +"DATABASE=pubs" + Chr(0)

IF thisform.check1.value = 0
nReturnValue = SQLConfigDataSource(thisform.hwnd, ODBC_ADD_DSN, cDriver, cAttribs)
ELSE
nReturnValue = SQLConfigDataSource(0, ODBC_ADD_DSN, cDriver, cAttribs)
ENDIF


Sau đây là cách sửa của em:
Trong đó có dòng thứ 2: DECLARE INTEGER SQLConfigDataSource IN odbccp32;
Đoạn trên là khai báo Hàm SQLConfigDataSource để sử dụng(em đoán thế) trong file odbccp32.dll. EM tìm được 1 figure nè nên hiểu được đoạn code trên
http://i117.photobucket.com/albums/o77/tuanbeo_minishock/my_db_problem_next.jpg

Còn em dùng tạo DSN cho VFP thì dùng vfpodbc.dll.
DRIVER=Microsoft FoxPro VFP Driver (*.dbf)
Em không tìm được trong vfpodbc.dll có những hàm gì để tạo DSN. Em đang tắc ở đây.


Trên là cách làm của em. Mong được mọi ng' giúp đỡ

ninhviettinh
19-05-2009, 23:48
chào mọi người!

Em là một newbie của dd và cũng là newbie vsf. E mới nhập môn fox được 60 tiết trong trường học thôi. E đang làm một đồ án nhỏ về quản lý thư viện nhưng đang gặp khó khăn trong thiết kế form. Cụ thể là cô muốn bọn e đổi các nút lệnh trong form wizad thành tiếng Việt nhưng hai nút kép add/save và edit/revert không đổi được. Thấy các anh khóa trước bảo tạo class nhưng e chưa biết gì về code, e xem code trong wizad nhưng chưa làm được. Mấy hôm nữa bảo vệ đồ án rồi nên e vẫn làm theo form wizad và để lại hai nút kép đó.

E muốn nhờ các anh chị ở đây thứ nhất chỉ cho em cách thay đổi caption 2 nút đó sớm thì tốt. Thứ 2 là anh chị nào có đoạn code đó thì cho e xin... Nếu có class viết sẵn thì gửi luôn cho e (e view code sẵn của nó nhưng không xem được tất cả thì phaỉ). Ai có thì giúp e nhé. Có thư viện các code khác thì càng tốt. Hi hi.
E cảm ơn trước nha!
Clb này hay quá mà nhà e chưa có mạng, mấy hôm trước e tìm tài liệu về cái này mỏi mắt. Không biết câu hỏi của e có ai hỏi trong đây chưa tại vì em vào mạng bằng điện thoại nên mới chỉ đọc từ trang 14-22.

À nếu ai giúp e thì post lên đây hoặc gửi qua mail cho em.

E-mai: quocdu_tn@yahoo.com.vn

icanvn
20-05-2009, 09:47
chào mọi người!

Em là một newbie của dd và cũng là newbie vsf. E mới nhập môn fox được 60 tiết trong trường học thôi. E đang làm một đồ án nhỏ về quản lý thư viện nhưng đang gặp khó khăn trong thiết kế form. Cụ thể là cô muốn bọn e đổi các nút lệnh trong form wizad thành tiếng Việt nhưng hai nút kép add/save và edit/revert không đổi được. Thấy các anh khóa trước bảo tạo class nhưng e chưa biết gì về code, e xem code trong wizad nhưng chưa làm được. Mấy hôm nữa bảo vệ đồ án rồi nên e vẫn làm theo form wizad và để lại hai nút kép đó.

E muốn nhờ các anh chị ở đây thứ nhất chỉ cho em cách thay đổi caption 2 nút đó sớm thì tốt. Thứ 2 là anh chị nào có đoạn code đó thì cho e xin... Nếu có class viết sẵn thì gửi luôn cho e (e view code sẵn của nó nhưng không xem được tất cả thì phaỉ). Ai có thì giúp e nhé. Có thư viện các code khác thì càng tốt. Hi hi.
E cảm ơn trước nha!
Clb này hay quá mà nhà e chưa có mạng, mấy hôm trước e tìm tài liệu về cái này mỏi mắt. Không biết câu hỏi của e có ai hỏi trong đây chưa tại vì em vào mạng bằng điện thoại nên mới chỉ đọc từ trang 14-22.

À nếu ai giúp e thì post lên đây hoặc gửi qua mail cho em.

E-mai: quocdu_tn@yahoo.com.vn
Click phải chuột va chọn properties->đối tượng cần đổi và thay đổi ở Caption

cucgach2
20-05-2009, 14:16
Bác trongtin_ltv cho em xin số liên lạc hoặc nick Yahoo với. Nick YM em: tuanbeo_minishock.Em muốn hỏi rất nhiều thứ về VFP, em đang sắp bảo vệ đồ án. Còn có 1 tuần nữa là bảo vệ

ninhviettinh
20-05-2009, 19:59
Click phải chuột va chọn properties->đối tượng cần đổi và thay đổi ở Caption

Vâng, cảm ơn bạn nhưng hai nút Add/Save và Edit/Revert Vẫn không sửa được. Ai biết chỉ giúp e với.

icanvn
21-05-2009, 09:06
Vâng, cảm ơn bạn nhưng hai nút Add/Save và Edit/Revert Vẫn không sửa được. Ai biết chỉ giúp e với.

Đây là giải pháp tình thế:
Ngay tại nut Add ở cái Method click, bạn chèn vào đoạn code sau:

DODEFAULT()
this.Caption ="Luu"
thisform.BUTTONSET1.cmdedit.caption ="Huy bo"

&& Nếu có thời gian, bạn nên nghiên cứu và sửa code ở trong class của nó bằng cách vào
Program Files\Microsoft Visual FoxPro 9\Wizards\wizbtns.vcx mở ra và sửa.

toluong
21-05-2009, 14:45
Bác nào có code chạy sửa lỗi corrup file dbf ko?, cho e xin với, ông fox nay mất điện là đi luôn. toluong78@gmail.com. Thanks

tungvv
21-05-2009, 15:50
Thân chào các bạn
Mình đang bị vướng phần import dữ liệu từ file Excell 2003 vao Viusal foxpro 6.0. Nó không hiểu format của excell vì VF6 chỉ hổ trợ từ Excel 5 trở xuống.
Dùng các lệnh này đều báo lỗi 'Ms Excell file format is valid"
Import from (cFileExcel) type XLS SHEET "&cTenSheet"
Import from (cFileExcel) type XLS8 SHEET "&cTenSheet"

Chuyển sang VF9 thì được nhưng cần phải sửa lại các câu lệnh SQL cho phù hợp. Nhưng như vậy thì lâu quá
Các bạn có giải pháp nào giúp mình với
Cảm ơn các bạn rất nhiều
Trước đây tôi cũng từ VFP7 chuyển qua VFP9 nhưng cứ gặp lổi SQL, sau khi đọc help của VFP, tôi viết thêm 2 lệnh này và chuyển được sang VFP9 ok, quá đơn giản mà có được giao diện VFP vừa đẹp, vừa chạy nhanh vừa có thể import/Export dữ liệu excel hỗ trợ font unicode(các phiên bản VFP < 9 ko hỗ trợ việc chuyển ra excel có font là unicode). Bạn thử xem nhé :
Đưa vào trước các lệnh khởi động PM 2 dòng lệnh sau đây ( đặttrước các lệnh thiết đặt môi trường khác) :
SET ENGINEBEHAVIOR
SYS(3099, 70)

dinhanhency
21-05-2009, 16:06
Cách Debug như bác TOM khá hay nhỉ. Em trước đây khì lập trình Fox em thường Debug ngay ở file Prg luôn nên phải xem hết các lệnh mà chương trình xử lý.

icanvn
21-05-2009, 17:36
Bác nào có code chạy sửa lỗi corrup file dbf ko?, cho e xin với, ông fox nay mất điện là đi luôn. toluong78@gmail.com. Thanks

Thử xem phần mềm sửa lổi nay thử bạn.
http://downloads.nucleusdatarecovery.org/download-dbf.php

cucgach2
21-05-2009, 22:39
Không bác nào trả lời câu hỏi của em à? e cần tạo 1 system DSN kết nối tới VFP mà phải viết = code của VFP....:(

dinhanhency
21-05-2009, 22:48
Không bác nào trả lời câu hỏi của em à? e cần tạo 1 system DSN kết nối tới VFP mà phải viết = code của VFP....:(

Chú check ở trang connectionstring.com ý, Kiểu kết nối nào cũng có.

t3nt2forever
22-05-2009, 00:19
chào các bác cho e hỏi
e đang làm một bài về quản lý điện
bác nào có rỗi thì chỉ e cách làm với
thứ 1 là tạo các bảng kiểu gì ( gồm mấy bảng và nội dung của từng bảng)
thứ 2 là viết câu lệnh cho các nút
thứ 3 là cách tích giá điện
bác nào rảnh thì có thể gửi cho e qua email: vantung92@yahoo.com
e xin cảm ơn nhiều

sangthqlk25
22-05-2009, 10:23
Bác nào cao thủ cho em hỏi, trong Foxpro làm sao lấy địa chỉ MAC?

hoaidiem
22-05-2009, 14:38
Em đang học cái vf và em đang đứng ở chỗ không biết làm thế nào để lấy dữ liệu từ file Excel vào dbf và ngược lại.
Em cần có một hàm để khi click và cmd Đưa dữ liệu từ Excel vào DBF thì xuất hiện dialog và mình chọn tên file sau đó click Open thì dữ liệu từ file Excel được đưa vào DBF. Mong anh (chị) nào có thể chỉ bảo cho em. Cảm ơn nhiều.
Email: batluudanhb2@gmail.com

danngudien
22-05-2009, 23:59
bạn dùng thử code này nhé!
code này bạn mở file chaythu.xls có các trường mahs,hoten,sn,st,sna , ns, ng,truong,lop,gv,namhoc ,khoathi
Pasword là 123
sau đó bạn nhepj mới vào hoặc copy dán vào đúng các trường
file lylich có các trường: mahs,hoten,sn,st,sna , ns, ng,truong,lop,gv,namhoc ,khoathi
bạn có thể sửa lại theo ý muốn!
chúc bạ thành công
SELECT lylich
COPY STRUCTURE TO tam1 FIELDS mahs,hoten,sn,st,sna , ns, ng,truong,lop,gv,namhoc ,khoathi
SELECT 0
USE TAM1 ALIAS TAM1


nHandle=FOPEN(" chaythu.xls",12)
*?nHandle
If nHandle>0
Messageb("OK")

FCLOSE(nHandle)

**FcLOSE ("d:\foxpro\chaythu.xls")
else
***Messageb("d:\foxpro\chaythu.xls")


*FCLOSE(nHandle)
_file=thumuc+"chaythu.xls" &&ten file caan mo
_file1="'"+allt(_file)+"'"
tmpsheet = GETOBJECT(allt(_file1),'excel.sheet')
XLApp = tmpsheet.application
XLApp.Visible = .f.
XLApp.WorkBooks.open(allt(&_file1))
XLApp.ActiveWorkbook.Close
FCLOSE(nHandle)

endif



COPY TO CHAYTHU.XLS TYPE xl5




_file=thumuc+"chaythu.xls" &&ten file caan mo
_file1="'"+allt(_file)+"'"
tmpsheet = GETOBJECT(allt(_file1),'excel.sheet')
XLApp = tmpsheet.application
XLApp.Visible = .t.
XLApp.WorkBooks.open(allt(&_file1))
**XLSheet = XLApp.ActiveSheet
**XLApp.ActiveWorkbook.Close
USE IN TAM1
USE IN 0

DELETE FILE tam1.dbf
****************
**** ddinh dang
*XLApp.Columns("A:Z").Select
* XLApp.Selection.NumberFormat = "@"

********* fon chu
XLApp.Cells.Select
XLApp.Columns.Select
XLApp.Selection.Font.Name="VNI-times"
XLApp.Selection.Font.Size=10
XLApp.Selection.NumberFormat = "@"
**XLApp.Cells.EntireColumn.AutoFit
********* do rong cac cot
**1 mahs && mahs,hoten,sn,st,sna , ns, ng,truong,lop,gv,namhoc ,khoathi
xlapp.columns("A").select
XLApp.Selection.ColumnWidth = 10
** hoten
xlapp.columns("b").select
XLApp.Selection.ColumnWidth = 40
*** sinh nga, st,sn &&CDE
xlapp.columns("C:D").select
XLApp.Selection.ColumnWidth = 3
xlapp.columns("E").select
XLApp.Selection.ColumnWidth = 6
******* ns F
xlapp.columns("F").select
XLApp.Selection.ColumnWidth = 50
******** nghe G
xlapp.columns("G").select
XLApp.Selection.ColumnWidth = 20
*********truong H
xlapp.columns("H").select
XLApp.Selection.ColumnWidth = 20
********** LOP I


********* Giao vien j
xlapp.columns("j").select
XLApp.Selection.ColumnWidth = 40
************** khoa hang

XLApp.Cells.Select
XLApp.Selection.Locked = .F.

XLApp.Range("A1:L1").SELECT
XLApp.Selection.Locked = .T.

XLApp.ActiveSheet.Protect("123",.F.,.T.,.F.)


**********KET THUC PHAN DINH DANG EXCEL
IF MESSAGEBOX ("B¹n ph¶i save file chaythu.xls vµ ®ãng l¹i "+chR(13)+"Truíc khi kÝch nót YES",4+32,"CHó ý!!!!")=6 then

****** CHUYEN VAO FILE TAM

lcXLS =thumuc+"chaythu.xls"

lcConn = "Driver={Microsoft Excel Driver (*.xls)};"+;
"DriverId=790;Dbq="+m.lcXLS+;
";DefaultDir="+Justpath(m.lcXLS)+";"


lnHandle = Sqlstringconnect(m.lcConn)


SQLTables(m.lnHandle,"", "Cur_ListOfSheet")
* Chi xet nhung Sheet thuc su la Sheet !
SET FILTER TO ALLTRIM(Table_type)=[SYSTEM TABLE]

* Chi nhap 1 sheet
GO TOP
lcTableName = Trim(Cur_ListOfSheet.Table_Name)
lcOutput = Chrtran(m.lcTableName,'$','')
SQLExec(lnHandle,'select * from ['+m.lcTableName+'] ',m.lcOutput )

IF SQLDisconnect(m.lnHandle)=1
m.lnHandle=1
ENDIF
COPY TO TAM1.DBF
SELECT 0
USE TAM1.dbf ALIAS TAM1

ALTER TABLE tam1.dbf ALTER COLUMN hoten NOT NULL
ALTER TABLE tam1.dbf ALTER COLUMN gv NOT NULL

ALTER TABLE tam1.dbf ALTER COLUMN mahs NOT NULL
ALTER TABLE tam1.dbf ALTER COLUMN sn NOT NULL

ALTER TABLE tam1.dbf ALTER COLUMN st NOT NULL
ALTER TABLE tam1.dbf ALTER COLUMN sna NOT NULL

ALTER TABLE tam1.dbf ALTER COLUMN ns NOT NULL
ALTER TABLE tam1.dbf ALTER COLUMN ng NOT NULL

ALTER TABLE tam1.dbf ALTER COLUMN truong NOT NULL
ALTER TABLE tam1.dbf ALTER COLUMN lop NOT NULL

ALTER TABLE tam1.dbf ALTER COLUMN namhoc NOT NULL
ALTER TABLE tam1.dbf ALTER COLUMN khoathi NOT NULL

BROWSE
USE IN tam1
USE IN 0
SELECT lylich

APPEND FROM tam1
SELECT LUU
APPEND FROM tam1
DELETE FILE tam1

ENDIF &&& CUA THONG BAO

cucgach2
23-05-2009, 09:00
Mình đang vướng mắc ở kết nối VFP với Crystal report qua ODBC.

Mình tạo 1 system DSN với driver cho VFP ok rồi
Nếu chạy riêng lẻ report thì ko vấn đề gì.
Nhưng khi mình mở database và chạy phần mềm của mình đồng thời thì report bắt phải login datbase, đòi ID và pass trong khi lúc đầu tạo system DSN đâu có phải đặt ID, pass gì đâu. Thoát database ra thì lại bt. Chán quá.
Mình đã thử đặt cả ID và pass để login vào db rồi nó vẫn báo login failed.

Bác nào biết cách giải quyết thì chỉ giáo cho em với, em đang cần gấp

danngudien
23-05-2009, 19:04
chào các anh em trong diễn đàn cho em hỏi, trong vfp 9 muốn cho nút thoát hiện ra cau thông báo có muốn thoát hay không kèm theo các nút oh và cancel như access thì phải viết như thế nào vậy ?

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

chào các anh em trong diễn đàn cho em hỏi, trong vfp 9 muốn cho nút thoát hiện ra cau thông báo có muốn thoát hay không kèm theo các nút ok và cancel như access thì phải viết như thế nào vậy ?

*********** bạn dùng câu lệnh sau
IF MESSAGEBOX ("B¹n cã muèn l­u c¸c söa ®æi cña d÷ liÖu kh«ng?",4+32,"Thong bao")=6 then

** Viết câu lệnh gì ở đây

ENDIF

cucgach2
23-05-2009, 22:45
Cuối cùng em cũng tự giải quyết đc vấn đề của mình. :( , vấn đề nan giải của riêng FOXPRO cuối cùng chỉ với 1 thủ thuật nhỏ đã solve gọn gàng :P.

viewback
25-05-2009, 11:05
Chào các bạn.

Trong hướng dẫn của VFP, mình học được cách lấy được các thông tin về lỗi như: số lỗi, thông báo, dòng lệnh bị lỗi, thứ tự dòng lệnh lỗi, chương trình bị lỗi.

Theo đoạn chương trình hướng dẫn bên dưới, khi chương trình bị lỗi sẽ thông báo cho mình biết các thông tin về lỗi, sau đó tiếp tục thực hiện các câu lệnh tiếp sau câu lệnh bị lỗi.

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

ĐOẠN CHƯƠNG TRÌNH 1: Đoạn chương trình này mình lồng trong các thủ tục sự kiện trên form

ON ERROR DO errHandler WITH ;
ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( )
USE nodatabase
ON ERROR && Restores system error handler.

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

ĐOẠN CHƯƠNG TRÌNH 2: Đoạn chương trình này được viết trong chương trình.

PROCEDURE errHandler
PARAMETER merror, mess, mess1, mprog, mlineno
CLEAR
? 'Error number: ' + LTRIM(STR(merror))
? 'Error message: ' + mess
? 'Line of code with error: ' + mess1
? 'Line number of error: ' + LTRIM(STR(mlineno))
? 'Program with error: ' + mprog
ENDPROC

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

Khi thực hiện đoạn chương trình 1 (sự kiện trên form), nếu có lỗi sẽ gọi đoạn chương trình 2 để thông tin về lỗi cho người sử dụng. Và sau khi thực hiện xong đoạn chương trình 2, chương trình tiếp tục thực hiện những câu lệnh bên dưới câu lệnh gây lỗi trong đoạnh chương trình 1.

Vậy làm thế nào thoát khỏi đoạn chương trình 1 khi chương trình gặp lỗi (tức là không thực hiện các câu lệnh tiếp sau câu lệnh bị lỗi)?

Bạn nào biết chỉ giúp mình với. Xin chân thành cảm ơn.

Lê Thái Bình
viewback@gmail.com

nktkbnn
25-05-2009, 22:07
Cuối cùng em cũng tự giải quyết đc vấn đề của mình. :( , vấn đề nan giải của riêng FOXPRO cuối cùng chỉ với 1 thủ thuật nhỏ đã solve gọn gàng :P.

Cái này em cũng rất quan tâm nên bác có thể chia sẻ cho mọi người được không? Em xin cám ơn trước nhé!

tayngangvfp
26-05-2009, 11:47
Chào các bạn.

Trong hướng dẫn của VFP, mình học được cách lấy được các thông tin về lỗi như: số lỗi, thông báo, dòng lệnh bị lỗi, thứ tự dòng lệnh lỗi, chương trình bị lỗi.

Lê Thái Bình
viewback@gmail.com


ban dung doan code sau xem sao:
************************



ON ERROR DO errHandler WITH ;
ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( )
USE nodatabase
MESSAGEBOX("Sau doan gay loi")

ON ERROR && Restores system error handler.



PROCEDURE errHandler
PARAMETER merror, mess, mess1, mprog, mlineno

tThongBao= 'Error number: ' + LTRIM(STR(merror))+CHR(13)+;
'Error message: ' + mess+CHR(13)+;
'Line of code with error: ' + mess1+CHR(13)+;
'Line number of error: ' + LTRIM(STR(mlineno))+CHR(13)+;
'Program with error: ' + mprog+CHR(13)+CHR(13)+;
'------------------------------------------'+CHR(13)+;
'Ban co muon tiep tuc thuc hien chuong trinh khong ?'+CHR(13)+;
'(YES: Tiep tuc thuc hien; NO: Thuc hien lai lenh vua gay loi; CANCEL: Ket thuc c/t)'

tTraLoi=MESSAGEBOX(tThongBao,3,"Error")

DO CASE
CASE tTraLoi=6
*YES
ON ERROR DO errHandler WITH ;
ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( )
RETURN
CASE tTraLoi=2
*CANCEL
ON ERROR
ON SHUTDOWN
CLEAR ERROR

* Cac thu tuc don dep chuong trinh ....
IF _vfp.StartMode=0

CANCEL
ELSE
QUIT
ENDIF
CASE tTraLoi=7
*NO
ON ERROR DO errHandler WITH ;
ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( )
RETRY
ENDCASE
ENDPROC

viewback
26-05-2009, 16:41
Chào bạn tayngangvfp

May quá, lần này lại được bạn giúp đỡ nữa. Nói thực, mình đang chập chững tự học, bạn viết code nhiều quá mình thấy "ngợp", nhưng mình rất vui vì bạn đã nhiệt tình giúp đỡ.

Tối nay mình sẽ thử ngay, mặt dù chưa hiểu hết nhưng mình sẽ cố gắng tìm hiểu nó.

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

Lê Thái Bình

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

Gửi bạn tayngangvfp

Rất tuyện vời, cảm ơn bạn rất nhiều, chương trình có nhiều cơ chế cho người sử dụng lựa chọn. Tuy nhiên có nhiều điểm mình không hiểu. Thông qua trình trợ giúp hepl của VFP, mình hiểu chương trình như mô tả bên dưới, bạn cố gắng kiểm tra giúp mình:

================================================== ==

1: PROCEDURE errHandler

2: PARAMETER merror, mess, mess1, mprog, mlineno

3: tThongBao= 'Error number: ' + LTRIM(STR(merror))+CHR(13)+;
'Error message: ' + mess+CHR(13)+;
'Line of code with error: ' + mess1+CHR(13)+;
'Line number of error: ' + LTRIM(STR(mlineno))+CHR(13)+;
'Program with error: ' + mprog+CHR(13)+CHR(13)+;
'------------------------------------------'+CHR(13)+;
'Ban co muon tiep tuc thuc hien chuong trinh khong ?'+CHR(13)+;
'(YES: Tiep tuc thuc hien; NO: Thuc hien lai lenh vua gay loi; CANCEL: Ket thuc c/t)'

4: tTraLoi=MESSAGEBOX(tThongBao,3,"Error")

5: DO CASE

6: CASE tTraLoi=6 &&YES

7: ON ERROR DO errHandler WITH ; &&Gán lại cơ chế bắt lỗi
ERROR( ), MESSAGE( ), MESSAGE(1),;
PROGRAM( ), LINENO( )

8. RETURN &&Gọi lại chương trình và
thực hiện dòng lệnh tiếp theo sau

9: CASE tTraLoi=2 &&CANCEL

10: ON ERROR &&Trả lại cơ chế bắt lỗi của VFP

11: ON SHUTDOWN &&Thoát chương trình ?????

12: CLEAR ERROR &&Trả lại giá trị mặc định cho
các hàm lấy thông tin về lỗi
* Cac thu tuc don dep chuong trinh ....

13: IF _vfp.StartMode=0 &&Nếu ứng dụng đang ở chế độ
thiết kế

14: CANCEL &&Kết thúc/hủy chương trình ???

15: ELSE

16: QUIT Thoát VFP

17: ENDIF

18: CASE tTraLoi=7 &&NO

19: ON ERROR DO errHandler WITH ; &&Gán lại cơ chế bắt lỗi
ERROR( ), MESSAGE( ), MESSAGE(1),;
PROGRAM( ), LINENO( )

20: RETRY &&Thực hiện lại câu lệnh gây lỗi

21: ENDCASE

22: ENDPROC
===============================================

Có mấy điểm không hiểu nhờ bạn giải thích giúp:

1. Dòng lệnh 11 và 14 “ON SHUTDOWN” VÀ “CANCEL”: Mình không hiểu, mình có thử không sử dụng dòng 11, chương trình vẫn chạy được ? Ngược lại nếu không sử dụng dòng 13,14,15,16,17 thì chương trình bị lỗi ?

2. Dòng lệnh 7 và 19: Khi mình không sử dụng chương trình vẫn chạy được ? Hình như là cơ chế bắt lỗi trong chương trình gọi vẫn còn hiệu lực ?

3. Dòng lệnh 13: Khi xây dựng ứng dụng hoàn chỉnh, mình phải chỉnh lại thuộc tính này sang 4 phải không bạn ?

4. Mình không hiểu cơ chế làm việc giữa 2 chương trình: Chương trình A gọi chương trình B, các lệnh xử lý RETURN, RETRY, ON SHUTDOWN, CANCEL lại nằm trong chương trình B. Như vậy, các lệnh này tác động lên chương trình nào A hay B ?

Mình chỉ mới tự học được 1 tháng nay nên có nhiều điều không hiểu, mong bạn chỉ giúp.

Trân trọng cảm ơn.
Lê Thái Bình

nktkbnn
27-05-2009, 22:20
Cuối cùng em cũng tự giải quyết đc vấn đề của mình. :( , vấn đề nan giải của riêng FOXPRO cuối cùng chỉ với 1 thủ thuật nhỏ đã solve gọn gàng :P.
Bác Cucgach2 ơi! Sao bác không thấy trả lời! Cái ý tưởng và kết quả của bác em thấy rất hay, vì không phải tạo ODBC bằng tay nữa! Bác làm ơn tiết lộ cái thành quả của bác được không? Em xin cám ơn trước!

tayngangvfp
28-05-2009, 14:50
@viewback

Đây là 1 đoạn code mình trích ra và chỉnh sửa 1 chút từ c/t của mình, nên có những lệnh thừa (so với đoạn code này) !

1.Dòng lệnh 11 và 14 “ON SHUTDOWN” VÀ “CANCEL”: ...... có thể bỏ lệnh ON SHUTDOWN đi cũng được (còn trong c/t của mình có lệnh ON SHUTDOW ....... nên mình phải bỏ nnó trước khi thoát)
2.Đúng vậy, trong c/t của mình thì đọan đầu mình có gán lại ON ERROR nên bên trong phải xử lý như vậy! Còn đaọn code này thì bỏ đi cũng không sao.
3. Không cần, vì khi dịch ra file EXE thì đoạn ELSE sẽ được thực thi (Lệnh QUIT) còn chạy trong môi trường IDE của FOx thì thực hiện lệnh CANCEL.
4.Bạn đọc thêm trong HELP các lệnh này. Có gì trao doi tren YM! voi m

lamcoi_1987
28-05-2009, 16:40
ai có thể chỉ giúp mình cách tạo file .exe để chạy trên máy ko cài VF9 ko?hiện mình đang có 1 project VF9 hoàn thiện rồi.nhưng muốn chạy trên máy khác mà phải cài VF9 thì bất tiện quá.mong mọi người chỉ giúp mình với mặc dù có thể trên topic này đã có hướng dẫn nhưng nhiều trang viết quá!mình ko bt bắt đầu từ đâu

viewback
29-05-2009, 14:08
Cảm ơn bạn tayngangvfp đã tận tình hướng dẫn.

Thật ra phần lớn kiến thức mình học trong Hepl + đọc sách tiếng Việt. Trong phần Hepl mình thấy rất hay rất đầy đủ chỉ có điều là các thuật ngữ và khái niệm chuyên môn quá nên tự học hơn khó khăn.

Rất cảm ơn thiện ý của bạn, mình sẽ cố gắng. Nếu có khó khăn nhờ bạn giúp đỡ.

Lê Thái Bình

dencan
29-05-2009, 20:55
Chào tất cả các bạn.Cho mình hỏi: Trong vf 9,Có bạn nào biết cách tạo một thông điệp hiện lên khi đưa chuột vào một đối tượng nào đó.Ví dụ : Khi đưa chột vào một command ( ví dụ là sự kiện mousemove của command ) thì hiện lên một thông báo hoặc chú thích ở bên cạnh chuột không ( Không phải là messagebox nhé ).Bạn nào biết thì chỉ giúp mình với nhé.

nktkbnn
30-05-2009, 09:58
Chào tất cả các bạn.Cho mình hỏi: Trong vf 9,Có bạn nào biết cách tạo một thông điệp hiện lên khi đưa chuột vào một đối tượng nào đó.Ví dụ : Khi đưa chột vào một command ( ví dụ là sự kiện mousemove của command ) thì hiện lên một thông báo hoặc chú thích ở bên cạnh chuột không ( Không phải là messagebox nhé ).Bạn nào biết thì chỉ giúp mình với nhé.
Cái này đơn giản mà! Bác chọn đối tượng cần chú thích và chuột phải nó chọn Properties sâu đó tìm đến Comment và ghi nội dung cần chú thích! OK

danngudien
30-05-2009, 20:50
ai có thể chỉ giúp mình cách tạo file .exe để chạy trên máy ko cài VF9 ko?hiện mình đang có 1 project VF9 hoàn thiện rồi.nhưng muốn chạy trên máy khác mà phải cài VF9 thì bất tiện quá.mong mọi người chỉ giúp mình với mặc dù có thể trên topic này đã có hướng dẫn nhưng nhiều trang viết quá!mình ko bt bắt đầu từ đâu

bạn dùng thử nhe!
Tạo file chay.prg như sau
with _screen

.caption='Ch­¬ng tr×nh qu¶n lý häc sinh häc h­íng nghiÖp'
*.icon='icon\icon.ico'
* .alwaysonbottom=.t.
* .width=800
* .height=600
.autocenter=.t.
.controlbox=.t.
.borderstyle=2
.closable=.f.
.maxbutton=.t.
.minbutton=.t.
.movable=.t.
.windowstate=2
ENDWITH

DO chuongtrinhnghe.prg
*** chương trình cần chạy
READ EVENTS

******
sau đó bạn chon new\project dặt tên chay.exe
chọn code chon program chon add và mở thư mục file chay.prg vừa tạo
kích nút build
Copy các file hỗ trợ vào thư mục chứa file chay.exe
vfp9r.dll
vf9rcsy.dll
vf9resn.dll
vf9.exe
vf9rrus.dll
Nếu chưa đủ khi chạy chương trình sẽ đòi hỏi bạn cứ copy và dáng vào
chúc bạn thành công

nktkbnn
30-05-2009, 21:05
Bác có cách nào tạo được file Setup cho Project được không? Vì buld thành .exe khi chạy máy khác vẫn phải copy mấy file vfpxr.dll
vfxrcsy.dll
vfxresn.dll
vfx.exe
vfxrrus.dll
Thì mất công lắm! Mình muốn hỏi trong VFP6! Theo như tài liệu nói dùng Setup wizard nhưng trước đó phải phân phối cây thư mục...nhưng không hiểu! Bác nào có làm cái này rồi thì post cho mình với! Xin rất rất cám ơn!

h1970
30-05-2009, 21:31
Bác có cách nào tạo được file Setup cho Project được không? Vì buld thành .exe khi chạy máy khác vẫn phải copy mấy file vfpxr.dll
vfxrcsy.dll
vfxresn.dll
vfx.exe
vfxrrus.dll
Thì mất công lắm! Mình muốn hỏi trong VFP6! Theo như tài liệu nói dùng Setup wizard nhưng trước đó phải phân phối cây thư mục...nhưng không hiểu! Bác nào có làm cái này rồi thì post cho mình với! Xin rất rất cám ơn!

Bạn dùng Installshield của Acresso nhé http://www.acresso.com. Dùng cái này để tạo các bộ setup rất thuận tiện

danngudien
30-05-2009, 23:38
Bác có cách nào tạo được file Setup cho Project được không? Vì buld thành .exe khi chạy máy khác vẫn phải copy mấy file vfpxr.dll
vfxrcsy.dll
vfxresn.dll
vfx.exe
vfxrrus.dll
Thì mất công lắm! Mình muốn hỏi trong VFP6! Theo như tài liệu nói dùng Setup wizard nhưng trước đó phải phân phối cây thư mục...nhưng không hiểu! Bác nào có làm cái này rồi thì post cho mình với! Xin rất rất cám ơn!

Tôi thường dùng theo cách này, bạn thử xem sao
Bạn vào thư mục installshield có trong đĩa cài đăt vfp chọn isxfoxpro.exe để cài đăt
Sau khi cài đặt xong bạn chạy file "C:\Program Files\InstallShield\Express 5.0 Visual FoxPro\"
Trên thanh công cụ bạn chon new\expess project \ OK
Chọn file\saveas..
Tạo thư mục setup\thu
Chọn go\spceity applicationdata\redistibutablies
Bạn chọn các chương trình cần settup vào các ô vuông tương ứng ví dụ microsoft.........library
CHỌN APPLIEATION
CHỌN ADD FOLDERS
* CHÈN THƯ MỤC CHỨA CÁC FILE CỦA BẠN VÀO
chọn build
Chương trình sẽ thực hiện tạo file setup.exe
********
sau khi hoàn tất file setup.exe sẽ lưu ở setup\express\singleimage\diskimages\disk1\setup.e xe

khi đi máy khác cần chạy file setup\express\singleimage\diskimages\disk1\setup.e xe này là xong.


Để thể hiện thông báo khi đưa chuột đén bạn chọn đối tượng cần chú thích và kích chuột phải nó chọn Properties sau đó tìm đến tooltip text và ghi nội dung cần chú thích! OK

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

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

Muốn ghi lại hình ảnh này trên file ảnh thì ẤN nút nào trên bàn phím đây?
bẠN NÀO BIẾT CHỈ GIÚP VỚI! cám ơn nhiều

dencan
31-05-2009, 23:26
Cái này đơn giản mà! Bác chọn đối tượng cần chú thích và chuột phải nó chọn Properties sâu đó tìm đến Comment và ghi nội dung cần chú thích! OK

BẠn có thể nói rõ hơn đc ko.Mình làm thử rồi mà ko đc.

danngudien
31-05-2009, 23:46
BẠn có thể nói rõ hơn đc ko.Mình làm thử rồi mà ko đc.

làm cách này nhé!
Để thể hiện thông báo khi đưa chuột đến bạn chọn đối tượng cần chú thích và kích chuột phải nó chọn Properties sau đó tìm đến tooltip text và ghi nội dung cần chú thích! OK

nktkbnn
01-06-2009, 19:49
Đúng rồi! tooltip text chứ không phải Comment! Xin lỗi!

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

Bác nào có cách nào khi chạy file buld thành .exe thì nó sẽ ẩn dưới taskbar giống như Unikey!

dencan
02-06-2009, 09:12
làm cách này nhé!
Để thể hiện thông báo khi đưa chuột đến bạn chọn đối tượng cần chú thích và kích chuột phải nó chọn Properties sau đó tìm đến tooltip text và ghi nội dung cần chú thích! OK

Mình đã làm rồi mà vẫn chưa đc bạn ơi.Có cần phải lập trình sự kiện j nữa ko?

tungson
02-06-2009, 10:39
hom nay moi bat dau nghien cuu foxpro ; ai biet chi dum em voi nha

danngudien
02-06-2009, 10:56
Mình đã làm rồi mà vẫn chưa đc bạn ơi.Có cần phải lập trình sự kiện j nữa ko?
Ở sự kiện load form
THISFORM.ShowTips= .t.
hoặc chon form chon ShowTips= .t.
Chúc bạn thành công!
Bạn có biết ấn phím nào trên bàn phím để save hình ảnh này lại không? Trước đây tôi có làm nhưng giờ thì quên mất rồi, chỉ giúp với nhé!

lamr
02-06-2009, 11:24
em đang làm bài tập lớn môn này
các anh chỉ dùm em cách làm cho khi chạy file .exe thì sẽ có ảnh nền (tên chuong trình + nguoi thuc hien)ảnh lấp kín phần bên trong thank các anh trc

damanthoidai
02-06-2009, 20:01
cho em hỏi cách viết chương trình visual foxpro 9 để theo dõi hóa đơn mua bán VAT danh cho doanh nghiệp vừa và nhỏ theo qui định 48

dencan
02-06-2009, 22:28
Ở sự kiện load form
THISFORM.ShowTips= .t.
hoặc chon form chon ShowTips= .t.
Chúc bạn thành công!
Bạn có biết ấn phím nào trên bàn phím để save hình ảnh này lại không? Trước đây tôi có làm nhưng giờ thì quên mất rồi, chỉ giúp với nhé!

Cảm ơn bạn nhé.MÌnh làm đc rồi.MÀ bạn hỏi là chụp ảnh màn hình nói chung hay là trong fox.Nếu là màn hình bth thì dùng phím Print Screen.rồi vào trong pain và bấm ctrl+V

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


Đúng rồi! tooltip text chứ không phải Comment! Xin lỗi!

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

Bác nào có cách nào khi chạy file buld thành .exe thì nó sẽ ẩn dưới taskbar giống như Unikey!

Mình kiếm đc cái code viết C#.Còn fox thì ko rành.BẠn thử tham khảo xem nhé

1/ Mở 1 C# Application Form lên.
2/ Thêm control NotifyIcon từ Toolbox.
3/ Đặt thuộc tính Text cho NotifyIcon control, dòng text này sẽ hiển thị khi ng dùng rê chuột lên icon ở System tray. Ví dụ: "congdongcviet.com"
4/ Add icon nào mà bạn muốn xuất hiện dưới System tray vào thuộc tính Icon.
5/ Add đoạn code sau vào sự kiện Resize của Form:

CSharp Code:
private void Form1_Resize(object sender, EventArgs e)
{
// Nếu Form đang Minimize thì ẩn luôn Form
if (FormWindowState.Minimized == WindowState)
Hide();
}
6/ Thêm sự kiện DoubleClick cho NotifyIcon:

CSharp Code:
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
// Hiển thị lại Form nếu doubleclick vào icon dưới System tray
Show();
WindowState = FormWindowState.Normal;
}


Bây giờ chúng ta sẽ thêm để khi right click vào cái icon dưới Systray thì sẽ bung ra 1 menu giống như các chương trình khác nhé.
7/ Thêm control ContextMenu từ ToolBox.
8/ Thêm vào ContextMenu những menu bạn muốn hiển thị
9/ Doubleclick vô menu và viết lệnh cho nó. Ví dụ:

CSharp Code:
private void mnExit_Click(object sender, EventArgs e)
{
// Thoát ứng dụng
Application.Exit();
}
10/ Đặt thuộc tính ContextMenu cho control NotifyIcon là tên của control ContextMenu mà bạn mới thêm vào ở bước 7.

danngudien
02-06-2009, 23:25
Cảm ơn bạn nhé.cái mình cần là đây dùng phím Print Screen.rồi vào trong pain và bấm ctrl+V

dencan
03-06-2009, 21:50
MÌnh làm fox hay bị lỗi "file is use" hoặc "does not exits" khi chạy nhiều form, truy vấn nhiều bảng do ko kiểm soát đc việc truy vấn.Bạn nào có kinh nghiệm thì giúp mình với.

roboping
04-06-2009, 20:40
Chào các Bác, Mong các Bác giúp dùm
-Trong Visual Fox làm sao de ComboBox tu dong hien danh sách khi con tro chi den.
-Mình gõ 1 ký tu dau "VD : chu M" thì ComboBox tu dong hien danh sách và con tro chi den nhóm MA_VT có ký tu dau là chu "M" sau dó mình ENTER thì MA_VT dó duoc lay vào ComboBox
Mình dang can gap lam mong các Huynh giúp dùm
Ban hoi anh nay xem
http://dichvu24h.vn/khodownload.php?id=19

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

Lay cai nay ve xem
http://dichvu24h.vn/khodownload.php?id=19

danngudien
05-06-2009, 20:40
MÌnh làm fox hay bị lỗi "file is use" hoặc "does not exits" khi chạy nhiều form, truy vấn nhiều bảng do ko kiểm soát đc việc truy vấn.Bạn nào có kinh nghiệm thì giúp mình với.

Theo tôi trong trường hợp này là dữ liệu đang mở, hoặc mở file khác trùng vùng dữ liệu.
Tôi xử lý THEO cách này:
SELECT 0
USE data\file ALIAS file
các lệnh TRUY VẤN xử lý


use in file
use in 0 &&& đóng dữ liệu lại

** tRONG TRƯỜNG HỢP dữ liệu được liên kết bởi lệnh set relation to ...
thì dữ liệu phải mở các vùng làm việc khác nhau, đặt tên không được trùng nhau

sAU ĐÓ NẾU CẦN TA LẠI MỞ LẠI
***đây CÓ GÌ TRAO ĐỔI THÊM NHÉ!

*************Được gửi bởi Beby_tv
Chào các Bác, Mong các Bác giúp dùm
-Trong Visual Fox làm sao de ComboBox tu dong hien danh sách khi con tro chi den.
-Mình gõ 1 ký tu dau "VD : chu M" thì ComboBox tu dong hien danh sách và con tro chi den nhóm MA_VT có ký tu dau là chu "M" sau dó mình ENTER thì MA_VT dó duoc lay vào ComboBox
Mình dang can gap lam mong các Huynh giúp dùm
*******
Có phải bạn muốn cái này không?
Chon combo kích chuột phải chọn builde chọn 2 style chon drop-down lists
chọn yes enable in crenental searrching && chỉ rõ ký tự ngừoi dùng đánh vào so khớp với ký tự đầu tiên trong danh sách

dencan
05-06-2009, 22:33
Trước đây mình cũng đã làm như bạn, nhưng mình "use in ..." thì fox báo "not found alias ..." Mình bực quá chơi luôn " close tables all" thì các truy vấn sau lại ko mở đc các bảng.BÓ tay

danngudien
05-06-2009, 23:50
Trước đây mình cũng đã làm như bạn, nhưng mình "use in ..." thì fox báo "not found alias ..." Mình bực quá chơi luôn " close tables all" thì các truy vấn sau lại ko mở đc các bảng.BÓ tay
** " close tables all" là đóng tất cả rồi còn đâu!
Tâm sự trao đổi cùng bạn một tý nhé!
Trước đây vấn đề này là một nag giải và bực tức vì do mình bị nhầm lẫn trong các trường hợp sau:
- Khi chạy form mới gặp phải lệnh close ở sự kiện load hoạc in
- găp lệnh use file.dbf alias file đã thiết lập trước. gặp cái này máy sẽ thông báo "file is use"
bạn tìm các cái đó và loại bỏ đi. cách tốt nhất là ở sự in của form bạn mở một loạt file.dbf cần dùng
ví dụ
SELECT 1
USE data\MATHPT1 ALIAS MATHPT1 EXCLUSIVE
SELECT 2
USE data\MATHPT2 ALIAS MATHPT2 EXCLUSIVE
.....................

trong quá trình thực hiện các dữ liệu này không gặp
- lệnh close
- hoặc gặp lại lệnh USE data\MATHPT1 ALIAS MATHPT1 EXCLUSIVE
- hoặc lệnh mở dữ liệu như use file.dbf ...
- hoặc mở vùng dữ liệu làm việc mới có tên trùng với vùng dữ liệu củ
Nếu muốn mở dữ liệu mới bạn phải dùng lệnh
sele 0
use tam alia tam

xử lý xong nhớ đóng lại bănngf lệnh
use in tam
để đở rắt rối sau này lở quyên
Khi cần làm việc với bảng dữ liệu nào bạn chỉ cần dùng lệnh
sele bảng đó
ví dụ làm việc với bảng MATHPT2
sele MATHPT2
browse
Bạn thử rà soát lại toàn bộ dữ liệu của bạn như trên xem sao?. Ơ đây mới nói đến việc mở dữ liệu *.dbf thôi nhé
Chúc bạn thành công nhé!

damanthoidai
08-06-2009, 08:54
sao không ai chỉ em viết code chương trình theo dõi số hóa đơn VAT của doanh nghiệp nghiệp vừa và nhỏ bằng viúal foxpro 9 hết vậy, mong các huynh tỷ nhiệt tình giúp cho, vì đây là đề tài bài tập lớn thầy ra cho em và bạn cùng nhóm làm trong vòng 2 tuần rất cần

dung_kg
08-06-2009, 15:19
Có cách nào import toàn bộ văn bản từ file word vào report trong VFP không các bạn? hoặc xuất dữ liệu từ form nhập liệu trong VFP ra văn bản word được không?

tayngangvfp
09-06-2009, 10:33
Có cách nào import toàn bộ văn bản từ file word vào report trong VFP không các bạn? hoặc xuất dữ liệu từ form nhập liệu trong VFP ra văn bản word được không?


Bạn có thể dùng Automate để thực hiện
Bạn tham khảo ở đây
http://support.microsoft.com/?kbid=250501

PhamDung437
09-06-2009, 12:46
Anh em vui lòng hướng dẫn dùm mình cách thức chuyển đổi từ database của foxpro sang SQL hay Access. Do không chuyên nghiệp nên nhờ mọi người hướng dẫn chi tiết một tí.

Thanks all

vang9999
09-06-2009, 14:56
** " close tables all" là đóng tất cả rồi còn đâu!
Tâm sự trao đổi cùng bạn một tý nhé!
Trước đây vấn đề này là một nag giải và bực tức vì do mình bị nhầm lẫn trong các trường hợp sau:
- Khi chạy form mới gặp phải lệnh close ở sự kiện load hoạc in
- găp lệnh use file.dbf alias file đã thiết lập trước. gặp cái này máy sẽ thông báo "file is use"
bạn tìm các cái đó và loại bỏ đi. cách tốt nhất là ở sự in của form bạn mở một loạt file.dbf cần dùng
ví dụ
SELECT 1
USE data\MATHPT1 ALIAS MATHPT1 EXCLUSIVE
SELECT 2
USE data\MATHPT2 ALIAS MATHPT2 EXCLUSIVE
.....................

trong quá trình thực hiện các dữ liệu này không gặp
- lệnh close
- hoặc gặp lại lệnh USE data\MATHPT1 ALIAS MATHPT1 EXCLUSIVE
- hoặc lệnh mở dữ liệu như use file.dbf ...
- hoặc mở vùng dữ liệu làm việc mới có tên trùng với vùng dữ liệu củ
Nếu muốn mở dữ liệu mới bạn phải dùng lệnh
sele 0
use tam alia tam

xử lý xong nhớ đóng lại bănngf lệnh
use in tam
để đở rắt rối sau này lở quyên
Khi cần làm việc với bảng dữ liệu nào bạn chỉ cần dùng lệnh
sele bảng đó
ví dụ làm việc với bảng MATHPT2
sele MATHPT2
browse
Bạn thử rà soát lại toàn bộ dữ liệu của bạn như trên xem sao?. Ơ đây mới nói đến việc mở dữ liệu *.dbf thôi nhé
Chúc bạn thành công nhé!
---------------
Theo tôi trong trường hợp này ban nên dùng lệnh IF để kiểm tra file DBF của mình cần đã được mở hay chưa. Cụ thể:

IF USED("ABC") && Với ABC là tên file DBF
SELE ABC
ELSE
SELE 0
USE ABC
ENDIF

icanvn
11-06-2009, 15:41
các pac giúp em với, em gà lắm.
Em muốn làm 2cai combobox lồng vào nhau.
combo1 chứa A và B
khi chọn A thì combo2 chỉ hiện ra những gì thuộc cuẩ thôi, B cung tuơng tự.
Cảm ơn trước nha!

Bạn nói rõ hơn được không? chưa hiểu ý bạn cho lắm.

icanvn
12-06-2009, 14:02
có 1 table như sau:
nhom loại chitiet
A....01....viduA1
A....02....viduA2
B....03....viduB1
B....04....viduB2

thiết kế Form
thiết kế Combobox1 để chọn nhóm (A và B)
thiết kế Combobox2 để chọn loại (01 và 02 hoặc 03 và 04)
khi chọn A ở combobox1 thì combobox2 chỉ hiện ra 01 và 02
khi chọn B ở combobox1 thì combobox2 chỉ hiện ra 03 và 04
và tôi muốn xuất ra chitiet tuơng ứng.

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

các pác có tài liệu Foxpro nâng cao không? tôi tìm hoài mà không thấy, các pác giúp nha! cảm ơn trước!

Ngay tai combobox1 ban viết lệnh ở Methods Interractivechange
SET FILTER TO nhom = this.value
thisform.represh

dung_kg
12-06-2009, 15:09
TayngangVFP oi!
Anh đã demo giúp em chưa vậy?
không biết làm cách nào để xuất dữ liêu từ textbox trong foxpro ra văn bản có sẵn nữa.
có anh chị nào cao tay xin chỉ giúp với!

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

Đoạn demo của anh rất hay. có thể xuất từ table trong foxpro vào word kết hợp với mail merge. thanks!

nktkbnn
12-06-2009, 21:12
Các bác cho em hỏi! Bây giờ em muốn tạo một Check trên Form mà khi check vào thì lần sau khởi động máy tính sẽ chạy ứng dụng mà có Form này!

icanvn
13-06-2009, 10:47
Các bác cho em hỏi! Bây giờ em muốn tạo một Check trên Form mà khi check vào thì lần sau khởi động máy tính sẽ chạy ứng dụng mà có Form này!

Bạn tao 1 bảng có 1 trường là chaytudong kieu logical
nối controlsource với checkbox.
Khi bắt đầu chạy chương trình thì nó sẽ kiểm tra

If chaytudong = .T.
Do form ....
endif
the la xong

nktkbnn
14-06-2009, 12:41
Ý mình là khi khởi động máy tính thì chương trình đã được build thành exe để ở một thư mục nào đó sẽ chạy tự động như Vietkey chẳng hạn!

tayngangvfp
16-06-2009, 11:31
Ý mình là khi khởi động máy tính thì chương trình đã được build thành exe để ở một thư mục nào đó sẽ chạy tự động như Vietkey chẳng hạn!

1/Bạn viết code để tạo 1 Key trong registry
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Run\ <ten file .EXE se chay bao gom cả duong dẫn>
(chú ý khi tao tác với registry phải cẩn thận nhé!)

2/ Hoặc tạo 1 shortcut và viet code đặt nó vào folder startup



có 1 table như sau:
nhom loại chitiet
A....01....viduA1
A....02....viduA2
B....03....viduB1
B....04....viduB2

thiết kế Form
thiết kế Combobox1 để chọn nhóm (A và B)
thiết kế Combobox2 để chọn loại (01 và 02 hoặc 03 và 04)
khi chọn A ở combobox1 thì combobox2 chỉ hiện ra 01 và 02
khi chọn B ở combobox1 thì combobox2 chỉ hiện ra 03 và 04
và tôi muốn xuất ra chitiet tuơng ứng.
[color=red]


Do bạn thiêt kế table như vậy nên có thể làm như sau:
1. Tạo 1 Curso tạm để liệt kê nhóm
Sele disting Nhom from ..... into curso Nhom
2. Set rowsource cho Combobox1 là Nhom.
3. Tạo 1 biến public hoặc 1 biến form: chẳng hạn MaNhom và gán controlsource của combobox1 là MaNhom
4. Mở table trên và đat alias là Loai chẳng hạn
5. Set rowsource cho Combobox2 là Loai. và set cột thể hiện cho nó là field loai.
6. Trong phần valid của combobox1 hoặc Interractivechange bạn viết lệnh

Selec Loai
SET FILTER TO nhom = MaNhom

nktkbnn
16-06-2009, 21:36
Các bác cho em hỏi làm sao để Form luôn nằm trên các cửa sổ khác nhỉ?
To taynganvfp: Cám ơn bác nhiều lắm! Em sẽ thử ghi vào registry!

alone_night
16-06-2009, 23:10
Các pác cho hỏi: Giả sử có 1 table A trên SQL (rỗng) và 1 table B trên Foxpro có chứa dữ liệu, chúng có cùng cấu trúc. Có cách nào để hất toàn bộ dữ liệu từ B lên A ko? nếu không xác định được các trường. Giống append from... hay INSERT INTO dbf_name FROM ARRAY ArrayName

tayngangvfp
17-06-2009, 06:52
Các pác cho hỏi: Giả sử có 1 table A trên SQL (rỗng) và 1 table B trên Foxpro có chứa dữ liệu, chúng có cùng cấu trúc. Có cách nào để hất toàn bộ dữ liệu từ B lên A ko? nếu không xác định được các trường. Giống append from... hay INSERT INTO dbf_name FROM ARRAY ArrayName

Có 1 ý tưởng, bạn thử xem
1. Viết code tạo 1 remote view từ table A. Remote view này có chức năng update.
2.Mở remote view do ra : USE .....
3.Dùng lệnh Appen form ...
4.Đóng remote view.

fanvsf
17-06-2009, 09:57
Các bác cho em hỏi làm sao để Form luôn nằm trên các cửa sổ khác nhỉ?

Bạn vào Properties của form chọn mục AllwaysOn Top là .T. và mục Show Window là As Top lever Form

alone_night
17-06-2009, 11:48
@tayngangvfp: Cám ơn trước!
Từ trước tới nay mình chưa dùng view sql có update bao giờ, bạn có thể hướng dẫn luôn không?
P/S: "Có cùng cấu trúc" dùng từ này không chinh xác mà là kiểu dữ liệu tương đương giống như khi select *

tayngangvfp
17-06-2009, 14:42
@tayngangvfp: Cám ơn trước!
Từ trước tới nay mình chưa dùng view sql có update bao giờ, bạn có thể hướng dẫn luôn không?
P/S: "Có cùng cấu trúc" dùng từ này không chinh xác mà là kiểu dữ liệu tương đương giống như khi select *


Co 2 truong hop.
1/ Tạo remote view thủ công: nếu đã biết table dữ liệu trên SQL, thìcó thể tạo remote view thủ công bằng các hướng dẫn wizard của VFP. Cách này dễ
2/ Tạo rmote view bằng cáqch viet code: nếu chưa biết sẽ sử dụng table nào trên SQL thì dùng cách này. Tuy nhiên phải biết PK và code hơi dài dòng 1 chút.

Bạn có thể nói rõ hơn yêu cầu của bạn không?

alone_night
17-06-2009, 18:14
Hi!
Mình định viết một hàm tổng quát
Lôi cả table của data trên SQL về làm việc (tất nhiên có giới hạn) sau đó update ngược lại, nếu dùng view phải chỉ rõ fields để update. Không biết thế nào?
P/S: Bạn dùng cách nào để quote ở diễn đàn này đấy?

nktkbnn
17-06-2009, 20:39
Bạn vào Properties của form chọn mục AllwaysOn Top là .T. và mục Show Window là As Top lever Form
Rất đơn giản mà em không biết! Cám ơn bác fanvsf rất nhiều!
Tiện đây cho em hỏi luôn là cái Interval của Timer có thay đổi được khi chạy chương trình không bác? Nghĩa là em đang viết cái tiện ích kiểm tra dữ liệu tự động(dùng cái Timer), lúc thiết kế em cho Interval tương đương với 19 giây nhưng bây giờ em muốn người sử dụng chương trình có thể thay đổi Interval bằng cách thisform.timer.interval=62000(tương đương 1 phút) chẳng hạn nhưng nó không thực hiện! Mong các bác có cách nào chỉ cho em với! Em xin cám ơn trước!

ltuananh
18-06-2009, 06:50
Trong một table có field tk có dữ liệu như sau:
311\312\313\314
bây giờ mình muốn đổi lại là
211\212\214 thì làm sao hả mấy anh em?

ngaituan
18-06-2009, 06:59
Database của fox mình nghĩ các bạn nên chuyển sang SQL đi, khi đó việc dùng chung Database trên mạng dễ dàng hơn nhiều, việc up data từ fox lên sql cũng đơn giản nữa.

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


Trong một table có field tk có dữ liệu như sau:
311\312\313\314
bây giờ mình muốn đổi lại là
211\212\214 thì làm sao hả mấy anh em?

- Bạn làm như sau
select (311) as 211,(312) as 212, (313) as 213 from [tên database cần xử lý] into dbf [tên database mới]

tayngangvfp
18-06-2009, 11:26
Hi!
Mình định viết một hàm tổng quát
Lôi cả table của data trên SQL về làm việc (tất nhiên có giới hạn) sau đó update ngược lại, nếu dùng view phải chỉ rõ fields để update. Không biết thế nào?
P/S: Bạn dùng cách nào để quote ở diễn đàn này đấy?


Mình cũng chưa hiểu ý bạn lắm. M có viết 1 đoạn demo sử dụng remote view để update. Nếu bạn quan tâm mình sẽ gửi bạn tham khảo.


****
Bạn bấm nút "trích dẫn" để QUOTE

alone_night
18-06-2009, 20:13
Mình search trên google đọc đến đoạn SendUpdate thấy nó (MSDN) chỉ rõ fields nên thôi. Bạn đừng cố gắng giúp mình nữa, viết 15-20 hàm nhỏ code ngắn hơn.
Cám ơn bạn!

P/S: Mình chẳng thấy nút "trích dẫn" đâu cả, chắc trong thiết lập cá nhân

tayngangvfp
19-06-2009, 07:41
Mình search trên google đọc đến đoạn SendUpdate thấy nó (MSDN) chỉ rõ fields nên thôi. Bạn đừng cố gắng giúp mình nữa, viết 15-20 hàm nhỏ code ngắn hơn.
Cám ơn bạn!

P/S: Mình chẳng thấy nút "trích dẫn" đâu cả, chắc trong thiết lập cá nhân

Nếu dùng cách update bằng Remote view thi không cần chỉ rõ Field mà chỉ cần biết khoá chính là được.


@nktkbnn
Bạn thay đổi interval như vậy là đúng rồi mà.

dungduyit
20-06-2009, 16:46
Mình đang viết chương trình về quản lý tuyển sinh vào lớp 10 chuyên. Nhưng họ yêu cầu phải viết bằng Visual Fox. Mà cái này thời học ĐH không tìm hiểu. Vậy bạn nào có tài liệu về Visual Fox cho mình xin với. Có code một số lệnh về Visual Fox thì tốt. Cảm ơn trước

changkhoag
22-06-2009, 23:29
Chào các bạn, mình cũng rất mê VFP vì tính linh hoạt của nó. Bạn nào có thể giúp mình viết 1 code để bẫy lỗi khi nhập dữ liệu như sau:
Giả sử đã có 1 file DBF DMHANGHOA chứa các mã và tên hàng, ta tiến hành nhập mã hàng cho 1 form khác, nếu không có mặt hàng trong DMHANGHOA thì sẽ hiện lên 1 popup cho người dùng chọn và khi Enter thì mã hàng, tên hàng sẽ được đưa vào các textbox tương ứng trong form này. Thanks các bạn trước

thaychuaag
23-06-2009, 08:27
Bạn nào có các hàm sắp sếp tiếng Việt cho các mã ABC, VNI vui lòng post cho mình với. Thanks các bạn trước.

tamnt07
23-06-2009, 19:21
Các bác cho em hỏi một chút, em có cái phần mềm quản lý bán hàng dùng Foxpro. Với cùng một số tiền hàng mà ở phiếu xuất thì hiện số đầy đủ rõ ràng, trong khi đó phiếu nhập thì lại biến thành hoa thị. Nhưng chỉ bị với những số có giá trị từ tiền tỷ trở lên thôi, còn dưới đó thì phiếu nhập và phiếu xuất đều hiển thị ổn cả.
Không biết sửa lỗi này thế nào ạ?

danngudien
23-06-2009, 19:29
Bạn nào có các hàm sắp sếp tiếng Việt cho các mã ABC, VNI vui lòng post cho mình với. Thanks các bạn trước.

dùng thử cái này nhé font "VNI-times"

Set talk off
public vn_fontvni

ch1='0123456789AAÙAØAÛAÕAÏAÊAÉAÈAÚAÜAËA ÂAÁAÀAÅAÃAÄBCDÑEEÙEØEÛEÕEÏEÂEÂEÁEÀ EÅEÃEÄF'
ch1=ch1+'GHIÍÌÆÓÒJKLMNOOÙOØOÛOÕOÏOÂOÁO ÀOÅOÃOÄÔÔÙÔØÔÛÔÕÔÏPPQQ'
ch1=ch1+'RSTUUÙUØUÛUÕUÏÖÖÙÖØÖÛÖÕÖÏ VXYYÙYØYÛYÕÎZW'
vn_fontvni=space(254)
for i=1 to len(ch1)
n=asc(substr(ch1,i,1))
vn_fontvni =STUFF(vn_fontvni,n,1,chr(32+i))
endfor

thaychuaag
23-06-2009, 22:28
dùng thử cái này nhé font "VNI-times"

Set talk off
public vn_fontvni

ch1='0123456789AAÙAØAÛAÕAÏAÊAÉAÈAÚAÜAËA ÂAÁAÀAÅAÃAÄBCDÑEEÙEØEÛEÕEÏEÂEÂEÁEÀ EÅEÃEÄF'
ch1=ch1+'GHIÍÌÆÓÒJKLMNOOÙOØOÛOÕOÏOÂOÁO ÀOÅOÃOÄÔÔÙÔØÔÛÔÕÔÏPPQQ'
ch1=ch1+'RSTUUÙUØUÛUÕUÏÖÖÙÖØÖÛÖÕÖÏ VXYYÙYØYÛYÕÎZW'
vn_fontvni=space(254)
for i=1 to len(ch1)
n=asc(substr(ch1,i,1))
vn_fontvni =STUFF(vn_fontvni,n,1,chr(32+i))
endfor
Cảm ơn bạn rất nhiều. Bạn vui lòng HD mình thêm sử dụng như thế nào với, mình gà lắm.

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

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

tayngangvfp
24-06-2009, 08:24
Các bác cho em hỏi một chút, em có cái phần mềm quản lý bán hàng dùng Foxpro. Với cùng một số tiền hàng mà ở phiếu xuất thì hiện số đầy đủ rõ ràng, trong khi đó phiếu nhập thì lại biến thành hoa thị. Nhưng chỉ bị với những số có giá trị từ tiền tỷ trở lên thôi, còn dưới đó thì phiếu nhập và phiếu xuất đều hiển thị ổn cả.
Không biết sửa lỗi này thế nào ạ?

LỖi này là do đặt độ rộng của textbox hiển thị không đủ. Có lẽ là do đặt inputmask hoac format theo dạng 999,999,999 nên khi số >= tỷ là bị như thế. Để sửa thì chỉ cần chỉnh lại theo dạng 999,999,999,999,999... là hết

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

@laotan
Đã gửi. Chúc vui

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

hiennv2
29-06-2009, 11:42
Xin hỏi một chút, các bác xem hộ em lúc trước em ko biết:
http://www.ddth.com/showthread.php?t=284537

tayngangvfp
30-06-2009, 15:06
Xin hỏi một chút, các bác xem hộ em lúc trước em ko biết:
Mình đang dùng câu lệnh:

DELETE FILE(file.dbf)

để xóa file.

Nhưng nếu file này đang mở thì văng lỗi, mình không biết làm thế nào để chương trình không báo lỗi nữa cho dù có xóa được hay không.

Bạn nào biết chỉ giúp.

http://www.ddth.com/showthread.php?t=284537

Muốn không báo lỗi nữa thì đặt câu lệnh như sau

On erro ltColoi=.T.
DELETE FILE(file.dbf)
on erro

Shinichi1271983
30-06-2009, 22:26
tôi đang học visual foxpro bằng cách viết chương trình theo mẫu. Tuy nhiên khi viết code cho nut lệnh "Lọc" thì không thực hiện được và báo lỗi "Object ike.prg is not found". Tôi post đoạn code lên, các bạn ai biết chỉ giúp tôi. Tôi xin cảm ơn.

dieukien=""
IF !EMPTY(thisform.locthang.Value)
dieukien= "and LIKE(tl_luong.thang.value,ALLTRIM(thisform.locthan g.value))"
ENDIF
IF !EMPTY(thisform.locmaph.Value)
dieukien=dieukien+"and LIKE(tl_luong.maph.value,ALLTRIM(thisform.locmaph. value))"
ENDIF
IF !EMPTY(thisform.locmanv.Value)
dieukien=dieukien+"and LIKE(tl_luong.manv.value,ALLTRIM(thisform.locmanv. value))"
ENDIF
IF !EMPTY(alltrim(thisform.locmahd.Value))
dieukien=dieukien+"and LIKE(tl_luong.mahd.value,ALLTRIM(thisform.locmahd. value))"
ENDIF
IF !EMPTY(dieukien)
dieukien=SUBSTR(dieukien,6) thisform.cbfilter.Enabled= .F.
thisform.cball.Enabled= .F.
ELSE
thisform.cbfilter.Enabled= .T.
thisform.cball.Enabled= .T.
ENDIF
SELECT tl_luong
thisform.ttongso.Value=RECCOUNT()
SET FILTER TO &dieukien
COUNT TO kqloc
thisform.tdem.Value=kqloc
GO top
thisform.cbdau.Enabled= .F.
thisform.cbtruoc.Enabled= .F.
IF kqloc=0
thisform.cbke.Enabled= .F.
thisform.cbcuoi.Enabled= .F.
ELSE
SKIP 1
IF EOF()
GO bott
thisform.cbke.Enabled= .F.
thisform.cbcuoi.Enabled= .F.
ELSE
thisform.cbke.Enabled= .T.
thisform.cbcuoi.Enabled= .T.
SKIP -1
ENDIF
ENDIF
thisform.Refresh

hienkieudiem
01-07-2009, 08:14
Ban damanthoidai cho mail mình cho bạn chương trình dịch số ra chử cho

tuan_tvkg
01-07-2009, 22:22
Mình sửa lại như sau bạn thử xem nhé
dieukien=" (.T.) "
IF !EMPTY(thisform.locthang.Value)
dieukien= dieukien + ".and. (LIKE(tl_luong.thang.value,ALLTRIM(thisform.loctha n g.value)))"
ENDIF
....

nguyenhuu75
03-07-2009, 14:37
Chào mọi người!
Tôi có 1 chương trình lập dự toán trên nền foxpro (có bản quyền) tuy nhiên có một số hệ số và đơn giá không phù hợp với quy định của địa phương. tôi muốn vào chương trình để sửa chữa lại có được không?. Nếu được thì sửa chữa như thế nào? làm thế nào để mở những công thức lập trình trong chương trình. Mong các bạn chỉ giáo. ThankS

yennh_pt
05-07-2009, 10:18
hi hi chào cả nhà mình là thành viên mới toanh, em mới làm quen với VF, em đang làm một chương trình Báo cáo ở cơ quan. Đã tạo xong form nhưng đến phần menu em gán chức năng cho từng menu thì đang k biết làm sao
VD có menu đăng nhập, thoát.Em không biết viết sự kiện cho menu này ra sao

smalljug
07-07-2009, 14:35
@yennh: Bạn phải tạo 1 project. Vào mục Other\Menu của project vừa tạo. Sau đó bạn tha hồ làm những gì mình thích.

Monkyto
07-07-2009, 20:53
Chào bạn TayngangVpf !

Mình đã xem từ trang đầu đến trang cuối của chủ đề này và rất muốn được bạn hướng dẫn mình dùng tool microsoft from 2.0 để thể hiện được fon chữ Unicode trong foxpro. mong sớm được sự hướng dẫn của bạn.
à mà làm sao để có được những công cụ trên, nếu bạn có có thể chia sẽ cho mình được không. cám ơn bạn trước.

congcong10
07-07-2009, 22:39
các anh chị giúp em cái
em đang tạo form có câu hiển thị dữ liệu từ report với điều kiện
nhập từ ngày đến ngày thì dùn lệnh gì (em dùng <= ngày và >= ngày nhưng ko được)

tayngangvfp
08-07-2009, 07:38
Chào bạn TayngangVpf !

Mình đã xem từ trang đầu đến trang cuối của chủ đề này và rất muốn được bạn hướng dẫn mình dùng tool microsoft from 2.0 để thể hiện được fon chữ Unicode trong foxpro. mong sớm được sự hướng dẫn của bạn.
à mà làm sao để có được những công cụ trên, nếu bạn có có thể chia sẽ cho mình được không. cám ơn bạn trước.

Bạn để lại email mình sẽ gửi bạn vi dụ.


các anh chị giúp em cái
em đang tạo form có câu hiển thị dữ liệu từ report với điều kiện
nhập từ ngày đến ngày thì dùn lệnh gì (em dùng <= ngày và >= ngày nhưng ko được)

(Ngay>= Tungay and Ngay<=Denngay)

Monkyto
08-07-2009, 08:30
Trước hết cám ơn bạn thật nhiều !
đây là email của mình : monkyto65@yahoo.com.vn

Mong sớm được bạn giúp mình đang rất cần.
cám ơn bạn lần nữa !!!

congcong10
08-07-2009, 11:44
Bạn để lại email mình sẽ gửi bạn vi dụ.



(Ngay>= Tungay and Ngay<=Denngay)

em đã làm như vậy rui` nhưng khi báo cáo hiện ra thì nó hiện ra tất cả các thông tin chứ ko đúng như điều kiện
đây là code anh xem lại hộ em


SELECT 1
LOCATE FOR ALLTRIM(sohoadon) = ALLTRIM(thisform.txthoadon.value)
IF FOUND()=.T.
REPORT FORM baocaoQLHD.frx PREVIEW ENVIRONMENT FOR (sohoadon) = ALLTRIM(thisform.txthoadon.value)
ELSE
MESSAGEBOX("khong ton tai hoa don nay")

LOCATE FOR ngay >= thisform.txttungay.Value AND ngay <= thisform.txtdenngay.Value
IF FOUND()=.T.
REPORT FORM baocaoQLHD.frx PREVIEW ENVIRONMENT FOR ngay >= thisform.txttungay.Value AND ngay <= thisform.txtdenngay.Value
ELSE
MESSAGEBOX("khong ton tai ngay nay trong du lieu")
ENDIF
ENDIF
*khoi tao lai gia tri ban dau
thisform.txthoadon.Value =""
thisform.txttungay.Value ={//}
thisform.txtdenngay.Value ={//}

tayngangvfp
08-07-2009, 14:05
................
LOCATE FOR ngay >= thisform.txttungay.Value AND ngay <= thisform.txtdenngay.Value
............


Code như vậy đã đúng logic rồi. Còn vì sao không ra report như ý bạn thì m cũng ko biết. Bạn thử thay thisform.txttungay.Value và thisform.txtdenngay.Value bằng biến public xem sao

congcong10
08-07-2009, 18:11
Code như vậy đã đúng logic rồi. Còn vì sao không ra report như ý bạn thì m cũng ko biết. Bạn thử thay thisform.txttungay.Value và thisform.txtdenngay.Value bằng biến public xem sao

là thay như thế nào hả anh . Anh nói rõ hộ em chút
cám ơn anh nhìu

Monkyto
09-07-2009, 10:22
Bạn Tayngangvfp chỉ mình cái này với.
trong ví dụ unicode_new bạn gửi lần sau cho mình có file ca_test.prg
mình có chỉnh qua thử kết nối bằng ODBC như Sample bạn gợi ý sẳn thì được rồi nhưng giờ muốn cho thêm điều kiện vào để xem một số mẫu tin mà không cần xem hết thì mình phải code như thế nào bạn giúp mình.

Local loCursor, lcConStr
*!* Sample usage with ODBC -----{SQL Native Client}
lcConStr = 'Driver=SQL Server;Trusted_connection=Yes;Server=.'
loCursor = Newobject('CaGeneric','cageneric.prg','','ODBC',m. lcConStr)

With loCursor
.Alias = 'myTable'
.SelectCmd = 'SELECT * FROM NorthWind..Customers'
Endwith
If loCursor.QueryFill()
Select (loCursor.Alias)
loCursor.MakeUpdatable('NorthWind..Customers','cus tomerId')
Browse LAST
Tableupdate(2,.T.,loCursor.Alias)
Endif

chẳng hạn muốn lấy tất cả những mẫu tin có Country là "USA" và ContactTitle là "Owner"

fanvsf
09-07-2009, 11:00
Bạn có thể sử dụng lệnh SET FILTER TO
Mình sửa lại code một chút nhé. Chúc bạn thành công

em đã làm như vậy rui` nhưng khi báo cáo hiện ra thì nó hiện ra tất cả các thông tin chứ ko đúng như điều kiện
đây là code anh xem lại hộ em

SELECT 1
LOCATE FOR ALLTRIM(sohoadon) = ALLTRIM(thisform.txthoadon.value)
IF FOUND()=.T.
SET FILTER TO Alltrim(sohoadon) = ALLTRIM(thisform.txthoadon.value) Lọc dữ liệu phù hợp với điều kiện
REPORT FORM baocaoQLHD.frx PREVIEW ENVIRONMENT FOR Alltrim(sohoadon) = ALLTRIM(thisform.txthoadon.value)
SET FILTER TO Huỷ lệnh lọc
ELSE
MESSAGEBOX("khong ton tai hoa don nay")
ENDIF

LOCATE FOR ngay >= thisform.txttungay.Value AND ngay <= thisform.txtdenngay.Value
Đoạn lệnh dưới bạn cũng làm như trên
IF FOUND()=.T.
REPORT FORM baocaoQLHD.frx PREVIEW ENVIRONMENT FOR ngay >= thisform.txttungay.Value AND ngay <= thisform.txtdenngay.Value
ELSE
MESSAGEBOX("khong ton tai ngay nay trong du lieu")
ENDIF
ENDIF
*khoi tao lai gia tri ban dau
thisform.txthoadon.Value =""
thisform.txttungay.Value ={//}
thisform.txtdenngay.Value ={//}

Note: Nếu chưa được bạn kiểm tra lại textbox : txttungay và txtdenngay xem data type của nó đã là dạng date hay chưa

The Old Man
09-07-2009, 14:18
Dùng lệnh LOCATE rất chậm. Chọn index và dùng SEEK tìm nhanh gấp chục lần, nhất là khi database có nhiều records.
Tóm tắt như sau:
Trước đó index như sau:
Index on ... to ... (index key 1)
Index on ... to ... (index key 4)
Index on sohoadon to ... (index key 3)
****
****
Khi dùng báo cáo thì:

Select 1
Set order to 3 (ví dụ index order của key sohoadon là 3)
Seek ALLTRIM(thisform.txthoadon.value)
Rồi
REPORT FORM baocaoQLHD.frx PREVIEW ENVIRONMENT FOR ...(..conditions) WHILE sohoadon = ALLTRIM(thisform.txthoadon.value)

như thế xẻ nhanh hơn bôi phần vì REPORT chỉ chạy trong phạm vi sohoadon = ALLTRIM(thisform.txthoadon.value) mặc dù database có cả trăm ngàn cái sohoadon khác.

Dùng LOCATE FOR hay REPORT FOR đơn độc thì phải đi hết tất cả các records. Thữ nghỉ nếu sohoadon chỉ có 100 records trong một database 100 ngàn records thì phải đợi chạy hết 100 ngàn records mới xong REPORT.
Còn dùng SEEK và WHILE thì report chỉ chạy đúng trong 100 cái record mà thôi.

congcong10
09-07-2009, 20:36
Bạn có thể sử dụng lệnh SET FILTER TO
Mình sửa lại code một chút nhé. Chúc bạn thành công


Note: Nếu chưa được bạn kiểm tra lại textbox : txttungay và txtdenngay xem data type của nó đã là dạng date hay chưa

thank anh nhìu em đã làm dc rùi ạ

fanvsf
10-07-2009, 09:08
các pác oi, sao ko ai giúp minh`hết vậy, NGAYNHAN thì gán là ngày hiện tại, còn cái NGAYTRA thì bằng NGAYNHAN cộng với songaytra thì nó báo lỗi các pác oi. Ai giúp với.
Bạn không nói rõ CT báo lỗi như thế nào?
Có các trường hợp xảy ra sau đây:
- Bạn chưa mở file có chứa field songaytra
- Field songaytra không phải là dạng numeric
Tuy nhiên mình có thể viết đoạn code sau bạn xem thử nhé
sele loaihs
msongaytra = songaytra (Số ngày trả tương ứng với maloai)
Thisform.ngaynhan.value = Date()
Thisform.ngaytra.value = Thisform.ngaynhan.value + msongaytra
thisform.refresh
Chúc bạn thành công

ltuananh
10-07-2009, 11:16
Mình có file *.spx, mình dùng chương trình ReFox thì xem được code, nhưng muốn sửa thì không được. Có bạn nào có cách nào để sửa code trong file *.spx không chỉ dùm mình với. Mình đang rất cần, xin cảm ơn!

tayngangvfp
11-07-2009, 07:55
Bạn Tayngangvfp chỉ mình cái này với.
trong ví dụ unicode_new bạn gửi lần sau cho mình có file ca_test.prg
mình có chỉnh qua thử kết nối bằng ODBC như Sample bạn gợi ý sẳn thì được rồi nhưng giờ muốn cho thêm điều kiện vào để xem một số mẫu tin mà không cần xem hết thì mình phải code như thế nào bạn giúp mình.

Local loCursor, lcConStr
*!* Sample usage with ODBC -----{SQL Native Client}
lcConStr = 'Driver=SQL Server;Trusted_connection=Yes;Server=.'
loCursor = Newobject('CaGeneric','cageneric.prg','','ODBC',m. lcConStr)

With loCursor
.Alias = 'myTable'
.SelectCmd = 'SELECT * FROM NorthWind..Customers'
Endwith
If loCursor.QueryFill()
Select (loCursor.Alias)
loCursor.MakeUpdatable('NorthWind..Customers','cus tomerId')
Browse LAST
Tableupdate(2,.T.,loCursor.Alias)
Endif

chẳng hạn muốn lấy tất cả những mẫu tin có Country là "USA" và ContactTitle là "Owner"



Bạn thêm: WHERE country='USA' ... vào câu lệnh SELECT

Shinichi1271983
12-07-2009, 22:32
Em có sự cố này muốn cầu cứu các pác!
Em tạo 1 form, khi nạp cac table vào data environment thi bị lỗi "syntax error". Em chẳng biết khắc phục làm sao. Trình độ em "gà wé". Các pác giúp em với. Em cảm ơn các pác nhiều.

emgaivfp
13-07-2009, 10:42
Chào mọi người.
Mình đang viết chương trình VFP9 kết nối SQL2000 sử dụng SQL passthrough có câu lệnh goi lấy số liệu:
"SELECT ten FROM nhan_vien where ten like'minh'"
thì gọi số liệu ra được, còn nếu đưa tham số vào thì không gọi số liệu ra được.
wten="minh"
"SELECT ten FROM nhan_vien where ten like'?wten'"
nhờ mọi người giúp.
Cám ơn trước nha.

hoangpnt349
13-07-2009, 14:04
Chào mọi người.
Mình đang viết chương trình VFP9 kết nối SQL2000 sử dụng SQL passthrough có câu lệnh goi lấy số liệu:
"SELECT ten FROM nhan_vien where ten like'minh'"
thì gọi số liệu ra được, còn nếu đưa tham số vào thì không gọi số liệu ra được.
wten="minh"
"SELECT ten FROM nhan_vien where ten like'?wten'"
nhờ mọi người giúp.
Cám ơn trước nha.

Bạn thử dùng toán tử macro:
"SELECT ten FROM nhan_vien where ten like '&wten.'"

nktkbnn
13-07-2009, 20:52
Xin hỏi các bác! Trong Listbox mặc nhiên nó có thanh trượt lằm dọc để kéo lên kéo xuống! Nhưng bây giờ em muốn nó có cả kéo ngang từ bên này sang bên kia thì thiết lập thuộc tính gì? Em xin cám ơn các bác trước!

alone_night
13-07-2009, 22:49
Các pác cho hỏi số kết nối đồng thời tới SQL Server 2005 Express là bao nhiêu? Cám ơn!

emgaivfp
15-07-2009, 09:06
Cám ơn Hoangpnt349 và mọi người.
Theo hướng dẫn của Hoangpnt349 gọi số liệu từ SQL2000:
"SELECT ten FROM nhan_vien where ten like '&wten.'"
Minh đã làm được rồi.

SinhvienTLU
19-07-2009, 09:25
visual fox hay mà. em tên là Thuận, sinh viên Đại học Thăng Long, em cũng mới học xong môn TIn quản lí Foxpro xong, nói chung là khá dễ hiểu, thao tác cũng khá đơn giản nhưng Fox hay treo quá, thỉnh thoảng đang làm lại treo. Hix, Ai có cách giải quyết nào giúp em với

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

Nhà mình ơi. Ai có một đề thi Foxpro nào ko? cho em 1 bản để em làm thử với. Em sắp thi hết kì môn này. ko lo lắm nhưng em muốn được điểm cao 1 chút. Trường em hay ra đề thi gồm Tạo bảng dữ liệu, tạo report, tạo form ( form cập nhật, form tìm kiếm, form báo cáo), lập menu, tạo project. Nhà mình ai có đề nào gồm mấy phhàn này thì cho em với nha. Em cảm ơn nhiều!!!!!!

emgaivfp
20-07-2009, 17:18
Chào mọi người.
Cho mình hỏi trong VFP9, trong phần "Data session" mình tạo ra một Data session có tên "wten".
Có cách nào tìm xem "wten" còn tồn tại bằng lệnh trong VFP9 đang làm việc không.
Có cách nào xóa "wten" bằng lệnh trong VFP9 đang làm việc không.
Có cách nào xóa hết các tên trong "Data session" hiện hành.

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

Liên hệ : ttphong68@yahoo.com

Các anh em nao biết mách giúp tôi với, tôi hổi có hàm nào lấy được tên các thư mục trong một thư mục nào đó. Rất mong được sự giúp đỡ của các sư huynh.

tayngangvfp
04-08-2009, 10:34
Các anh em nao biết mách giúp tôi với, tôi hổi có hàm nào lấy được tên các thư mục trong một thư mục nào đó. Rất mong được sự giúp đỡ của các sư huynh.

Bạn dùng ADIR(.......) để có thông tin

dphoang
04-08-2009, 11:53
Tôi muốn sử dụng control Microsoft Chart để vẽ biểu đồ trong FoxPro.
Làm thế nào để Fill dữ liệu vào trong DataSheet của biểu đồ nhỉ.
Bác nào biết chỉ giúp em với. Em đỡ pải nghiên cứu.
Thanks!

ngoisaochieu04
04-08-2009, 15:33
Xin chào các bác. mình có hai vấn đề này mong các bác giúp đỡ với:
1. Mình viết một chương trình bằng VF9, mình đã biên dịch ra file .exe rồi, mình muốn tạo bộ setup để cài đặt trên các máy khác mà không cần cài softVF9.0 nữa thì cần những file gì? các bạn có thể gửi qua mail cho minh những file đó được không? vì mình đọc trên diễn đàn thấy các bác cũng đưa ra một số file nhưng mình tìm trong máy thi không có đủ.
2. bây giờ mình muốn sản phẩm của mình chạy trên mạng nội bộ thì cần phải làm những gì(các bác chỉ kỹ và rõ giùm chút nha)
Mail của mình: ngoisaochieu04@gmail.com
Thank các bác nhiêu

The Old Man
05-08-2009, 09:34
Xin chào các bác. mình có hai vấn đề này mong các bác giúp đỡ với:
1. Mình viết một chương trình bằng VF9, mình đã biên dịch ra file .exe rồi, mình muốn tạo bộ setup để cài đặt trên các máy khác mà không cần cài softVF9.0 nữa thì cần những file gì? các bạn có thể gửi qua mail cho minh những file đó được không? vì mình đọc trên diễn đàn thấy các bác cũng đưa ra một số file nhưng mình tìm trong máy thi không có đủ.
2. bây giờ mình muốn sản phẩm của mình chạy trên mạng nội bộ thì cần phải làm những gì(các bác chỉ kỹ và rõ giùm chút nha)
Mail của mình: ngoisaochieu04@gmail.com
Thank các bác nhiêu

Câu số 2 là cả một vấn đề tìm tòi học hỏi và là kinh nghiệm lâu dài. Không thể một vài post mà có thể thu thập dược kinh nghiệm.

Chỉ có thể tóm lược lại là khi dùng trong mạng hay network (cho nhiều người cùng dùng một lúc) thì phải biết:
1. Share database.
2. Khi update tin tức (edit) thì phải biết khi nào lock record.
3. Và phải biết khi nào record bị locked.
4. Phải biết các lệnh không thể dùng khi share data như lệnh Pack, reindex, modify structure v.v.
5. Và phải biết Path đi tìm DATA nằm trong máy local (user) hay nằm trong Network drive.

khoacmi
06-08-2009, 22:13
Tại sao Ai cũng đòi xai Unicode vậy ta? Vấn đề là quản lý DL thì co liên quan gì đến Font chữ. Tui thấy 1 số ngân hàng vẫn còn xài trên Fox Dos kia mà.!

Chip7
14-08-2009, 15:23
với bài của Bá Hỷ mình có thể làm như sau:
select ten from nguoisudung where alltrim(thisform.txtten.value)==alltrim(nguoisdung .ten);
and allt(thisform.txtmatkhau.value)==allt(nguoisudung. matkhau);
and allt(thisform.txtloai.value)==allt(nguoisudung.loa i)
n=reccount()
if n<>0 then
do form menu.scx (hoặc hiện thông báo: messagebox('Dang nhap xong',0,'chu y'))
else
messagebox('Ten dang nhap hoac tai khoan khong dung',0,'Chu y')
endif

tuan_tvkg
17-08-2009, 17:36
Làm thế nào để lấy được dữ liệu từ File Access chuyển sang dữ liệu Foxpro? có bạn nào biết chỉ mình với.

danngudien
20-08-2009, 09:03
Bươc vào năm học mới chúc mọi người vui vẻ

tayngangvfp
20-08-2009, 17:53
Làm thế nào để lấy được dữ liệu từ File Access chuyển sang dữ liệu Foxpro? có bạn nào biết chỉ mình với.

Bạn tham khảo
http://www.ddth.com/showthread.php?p=1294355#post1294355

dung_kg
21-08-2009, 09:05
Các bạn ơi!
Mình có 1 form rất cần code tìm kiếm như sau:
Trong textbox hoăc combobox khi gõ 1 ký tự vào thì sẽ hiện những record có ký tự đó đầu tiên trong table đã chọn.
VD:
có table khachhang(tenkh, diachi)
trong textbox khi nhập chữ N ra thì nó sẽ hiện ra danh sách những những tên có chữ N trong trường tenkh. Tiếp tục nhập thêm H tức là NH thì nó sẽ hiện ra danh sách trong tenkh có NH.
Vì danh sách khách hàng rất nhiều nên rất cần code này.
Mong được chỉ dẫn!
Thanks!

tayngangvfp
21-08-2009, 11:00
Các bạn ơi!
Mình có 1 form rất cần code tìm kiếm như sau:
Trong textbox hoăc combobox khi gõ 1 ký tự vào thì sẽ hiện những record có ký tự đó đầu tiên trong table đã chọn.
VD:
có table khachhang(tenkh, diachi)
trong textbox khi nhập chữ N ra thì nó sẽ hiện ra danh sách những những tên có chữ N trong trường tenkh. Tiếp tục nhập thêm H tức là NH thì nó sẽ hiện ra danh sách trong tenkh có NH.
Vì danh sách khách hàng rất nhiều nên rất cần code này.
Mong được chỉ dẫn!
Thanks!

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

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

trungkien1976tb
29-08-2009, 11:21
Mình có chuong trinh viet bang VFP9 cài đặt trên server, các máy clinet phải Map driver từ server mới chạy được, như vậy Client sẽ vào được cơ sở dữ liệu máy chủ để xóa dữ liệu,Các bạn có câu lệnh nào giúp mình để các Client vẫn chạy được trên máy chủ mà không xem được dữ liệu hoặc không cần Map ổ đĩa từ máy chủ không?Giúp mình với nhé, Cảm ơn bạn nhiều

phudaohuyet
29-08-2009, 14:35
Các bạn ơi!
Mình có 1 form rất cần code tìm kiếm như sau:
Trong textbox hoăc combobox khi gõ 1 ký tự vào thì sẽ hiện những record có ký tự đó đầu tiên trong table đã chọn.
VD:
có table khachhang(tenkh, diachi)
trong textbox khi nhập chữ N ra thì nó sẽ hiện ra danh sách những những tên có chữ N trong trường tenkh. Tiếp tục nhập thêm H tức là NH thì nó sẽ hiện ra danh sách trong tenkh có NH.
Vì danh sách khách hàng rất nhiều nên rất cần code này.
Mong được chỉ dẫn!
Thanks!

Vấn đề là bạn muốn sau khi nhập ký tự vào textbox thì kết quả hiển thị ra ở đâu. Ví dụ sau nhập, click OK thì hiển thị ra browse (cái này mình nghĩ kô đúng ý bạn), bạn muốn là sau khi nhập ký tự N chẳng hạn, thì kết quả sẽ hiện ngay trong 1 GRID trên Form. Nếu thế bạn làm 1 cái grid trên form, chọn recordsourcetype và recordsource phù hợp. Đặt các lệnh trong thủ tục interactve change của text box là okie.

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

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

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

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

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

fanvsf
04-09-2009, 14:20
Các bạn ơi!
Mình có 1 form rất cần code tìm kiếm như sau:
Trong textbox hoăc combobox khi gõ 1 ký tự vào thì sẽ hiện những record có ký tự đó đầu tiên trong table đã chọn.
VD:
có table khachhang(tenkh, diachi)
trong textbox khi nhập chữ N ra thì nó sẽ hiện ra danh sách những những tên có chữ N trong trường tenkh. Tiếp tục nhập thêm H tức là NH thì nó sẽ hiện ra danh sách trong tenkh có NH.
Vì danh sách khách hàng rất nhiều nên rất cần code này.
Mong được chỉ dẫn!
Thanks!
Bạn hãy sử dụng mục keypress của textbox, dùng lệnh Sele SQL để tìm kiếm là thích hợp nhất.
Mình ví dụ : Trong form timkiem bạn phải có 1 textbox để nhập thông tin tìm kiếm, 1 listbox để hiển thị thông tin tìm kiếm
Sau đây là đoạn code bạn tham khảo nhé:
************
Local mtenkhach
mtenkhach = thisform.text1.value
if nkeycode = 32
sele khachhang.tenkh from khachhang having; alltrim(mtenkhach)=alltrim(tenkh);
into curso lockhach
thisform.list1.ColumnCount = 1
thisform.list1.ColumnLines = .F.
thisform.list1.RowSourceType = 6
thisform.list1.RowSource = "lockhach"
thisform.refresh
else
endif
***************
Hy vọng đoạn code trên có thế giải quyết vướng mắc của bạn. Chúc bạn thành công

nanglieu
06-09-2009, 17:48
To TayngangVfp !

Trên Form, tôi muốn tạo 1 Command Button, khi Click vào thì hiện lên 1 cửa sổ như cửa sổ Open của MS Word. TayngangVfp ơi ! Giúp tôi với ! Cám ơn nhiều !!!

tayngangvfp
07-09-2009, 10:12
To TayngangVfp !

Trên Form, tôi muốn tạo 1 Command Button, khi Click vào thì hiện lên 1 cửa sổ như cửa sổ Open của MS Word. TayngangVfp ơi ! Giúp tôi với ! Cám ơn nhiều !!!

Bạn dùng lệnh
GETFILE()

icanvn
15-09-2009, 11:45
Anh em nào có Code Backup CSDL cho mình xem với.

Cảm ơn trước nha!

mytitty
16-09-2009, 03:19
Giúp mình với. Làm thế nào để biết 1 form đang chạy hay không, để đóng nó lại và thi hành form khác.
Cám ơn các bạn nha

tayngangvfp
16-09-2009, 07:26
Giúp mình với. Làm thế nào để biết 1 form đang chạy hay không, để đóng nó lại và thi hành form khác.
Cám ơn các bạn nha

Các thông thường để xem 1 form có đang chạy hay không là dùng tên của form hoặc dùng caption của form.

Bạn dùng thử đoạn code sau xem

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

IF WEXIST("Ten_Form_Muon_Kiem_Tra")
*Dang chay =>dong lai
RELEASE WINDOWS Ten_Form_Muon_Kiem_Tra
ENDIF

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

Hoặc dùng caption


****************************************
tSoFormDangMo=_screen.FormCount
IF tSoFormDangMo>0
* Dong form dang mo
FOR i=1 TO tSoFormDangMo
tForm=_screen.Forms(tSoFormDangMo- i + 1).Name
tFormCaption=_screen.Forms(tSoFormDangMo- i + 1).Caption
IF tFormCaption=[Caption_Cua_Form_Muon_Kiem_Tra]
WAIT WINDOW NOWAIT "Dong cua so: "+tFormCaption
RELEASE WINDOWS &tForm
ENDFOR
ENDIF

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

mytitty
16-09-2009, 10:21
Cam on ban tayngangvfp rat nhieu.

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

Giúp mình với.
Khi mình sử dụng Font (MS Sans Serif) trong VFP9 thì một số ký tự đầu (Nguyên âm, có dấu) bị chuyển thành mã rất khó coi. Bạn nào có cách khắc phục cho mình 1 đoạn code với. Cám ơn nhiều