PDA

View Full Version : Gom nhóm trên visual foxpro



toikhongvao
13-01-10, 10:24 AM
Mình không rành poxpro, excel thì tạm. Nhưng bây giờ file .DBF có đến 418.000 dòng trong khi excel chỉ được 65553 dòng nên nếu chuyển qua excel thì không thể làm được.
Giải pháp của mình là gom nhóm trên foxpro trước rồi chuyển qua excel. Nhưng mà cách gom nhóm trên excel thì em không biết.
Cụ thể là gồm các cột: Mã nhân viên, ngày, ghi có, ghi nợ, mã giao dịch.
Bây giờ phải gom nhóm mã nhân viên, ngày, mã giao dịch
Cộng: ghi có, ghi nợ
Cuối cùng là xuất ra excel
Xin giúp giùm.
P/S: fox thì không cần lập trình chỉ cần sử dụng cửa sổ command để tạo truy vấn cũng được. Em bây giờ lẫn lộn là dùng fox là lập trình hay để tạo truy vấn. Đối với công việc hiện tại thì chắc dùng truy vấn nhưng mà trên cửa sổ command thì dùng ngôn ngữ gì ? VB hay SQL,...
Có tài liệu nào để dùng trên command của fox không ?
THX

onglao_danhca
14-01-10, 08:33 AM
Trong cửa sổ command, bạn dùng lệnh :
Use ...
Copy <tenfile.xls> type xls for <....>
Điều kiện sau FOR chính là điều kiện bạn muốn gom nhóm.
Có gì cần trao đổi thêm xin gửi email về minhducvs@yahoo.com

toikhongvao
14-01-10, 09:36 AM
Trong cửa sổ command, bạn dùng lệnh :
Use ...
Copy <tenfile.xls> type xls for <....>
Điều kiện sau FOR chính là điều kiện bạn muốn gom nhóm.
Có gì cần trao đổi thêm xin gửi email về minhducvs@yahoo.com

cho mình xin cú pháp điều kiện gom nhóm ? Mình không rành loại này

onglao_danhca
14-01-10, 01:36 PM
cho mình xin cú pháp điều kiện gom nhóm ? Mình không rành loại này

Cách gom nhóm bạn phải chủ động đặt ra theo data của bạn chứ. Nếu có thể được bạn đưa một đoạn data đặc trưng lên. Hoặc nêu yêu cầu rồi gửi file vào mail, tôi sẽ giúp.

toikhongvao
14-01-10, 02:03 PM
file dung lượng khổng lồ, up lên chắc mất cả ngày. Mình khái quát bố cục nó thế này
MNV ngay ghico ghino LoaiGD
AC1 ...... ....... ....... A
AC1 ...... ....... ....... B
AC1 ..... ...... ....... C
.................................................. .................................................. .......
AC2 ..... ....... ....... B
.................................................. .................................................. .......

Cứ thế đến vài trăm ngàn dòng. Giờ phải gom nhóm theo
MNV là AC1, AC2, AC3,.....(chỉ gom nhóm cho người dùng AC còn các người khác thì không cần)
ngay thi theo ngày tháng năm
LoaiGD thi theo A,B,C
Ghino và Ghico thì sum

Xin Giúp giùm
Cho mình hỏi là mấy cái truy vần trong command là xài ngôn ngữ gì vậy. Có giáo trình về cứ pháp lệnh trong đó không ?
Cám ơn vì sự giúp đở

ptm0412
14-01-10, 03:23 PM
Gõ vào cửa sổ Command Window lần lượt từng dòng lệnh (bỏ số thứ tự ở đầu dòng). Hoặc chép cả 6 dòng lệnh vào 1 file .prg rồi Do:

1. SET DEFAULT TO "D:\Data"
2. Use dbf1.dbf
3. SELECT MNV, ngay, LoaiGD, SUM(Ghino) As TienNo, SUM(ghico) as TienCo ;
FROM dbf1 GROUP BY MNV, ngay, LoaiGD WHERE MNV ='AC1' NOWAIT
4. Export to Dbf2.xls type XL5
5. CLOSE DATABASES
6. SET DEFAULT TO


Sau đó thay lần lượt các mã AC2, AC3, ... và đổi tên file .xls tạo thành.
Muốn dùng vòng lặp để chạy lần lượt các mã thì phải tạo thành file .prg để chạy.

onglao_danhca
14-01-10, 03:54 PM
Tôi chưa hiểu ý bạn định nhóm thế nào và cần lấy những gì. Bạn có thể copy khoảng 50 bản ghi bằng lệnh :
Use ...
Copy to <tenfile.dbf> for recno() <51 rồi gửi cho tôi.

toikhongvao
14-01-10, 04:36 PM
@ptm0412: THX. mình hiểu sơ sơ rồi. Thì ra trên command thì dùng ngôn ngữ SQL. Bạn có thể giúp mình tìm hiểu thêm phần vòng lặp được không.
Mình còn thắc mắc một chút là các tài khoản AC có dạng AC1, AC2, AC3,....giờ mình muốn lấy chỉ tài khoản dạng AC thì có thể dùng kí hiệu thay thế được không, ? hay * gì đó để lấy toàn bộ tài khoản AC.

@onglao danhca: Cho mình xin lỗi không làm được bạn, dữ liệu nằm trên máy nội bộ, không usb, không internet, không cd,.....muốn copy được cũng khó.
Dù sao củng cám ơn bạn vì mình biết được thêm lệnh copy to <> for recno() <51. Có thể mình dùng cách cắt nhỏ để làm.

ptm0412
14-01-10, 04:46 PM
Thì ra trên command thì dùng ngôn ngữ SQLTrên Command window dùng ngôn ngữ Fox, chỉ khi nào truy vấn mới có phần giống SQL ở câu Select

Bạn có thể giúp mình tìm hiểu thêm phần vòng lặp được không.Cũng giống ngôn ngữ lập trình khác thôi:

FOR
. ...
ENDFOR
DO WHILE
...
ENDDO

Mình còn thắc mắc một chút là các tài khoản AC có dạng AC1, AC2, AC3,....giờ mình muốn lấy chỉ tài khoản dạng AC thì có thể dùng kí hiệu thay thế được không, ? hay * gì đó để lấy toàn bộ tài khoản AC.Thay WHERE MNV ='AC1'
bằng WHERE MNV ='AC'
hoặc WHERE LEFT(MNV, 2) = 'AC'

toikhongvao
15-01-10, 10:23 AM
Đang vướng phải vấn đề ngày tháng.
Gõ lệnh browse for ngay=(dd/mm/yyyy) thì nó báo "Operator/Operand type mismatch"
Lỗi như vậy là do gì ? Cách xử lý
THX

ThuNghi
15-01-10, 10:37 AM
Đang vướng phải vấn đề ngày tháng.
Gõ lệnh browse for ngay=(dd/mm/yyyy) thì nó báo "Operator/Operand type mismatch"
Lỗi như vậy là do gì ? Cách xử lý
THX
Hình như phải có câu
Set Date Fren
Brow for ngay=ctod("......")
Bạn nghiên cứu thử hàm ctod.

muontennguoikhac
18-01-10, 05:16 PM
Bạn dùng dấu ngoặc nhọn để định dạng kiểu dữ liệu ngày tháng (cũng giống y như dùng dấu nháy đơn, nháy kép để bao kiểu dữ liệu chuỗi vậy đó).
browse for ngay={dd/mm/yyyy}

luumanh
27-01-10, 01:47 PM
bạn phải dùng như thé này:
BROW FOR NGAY=CTOD([DD/MM/YYYY])

Nế bạn dùng dấu ngoặc nhọn thì cú pháp phải như thế này

brow for ngay={^yyyy/mm/dd}