• Thứ Năm, 31/03/2011 15:37 (GMT+7)

    Trả lời thư bạn đọc

    TS. Nguyễn Văn Hiệp
    Mục giải đáp thắc mắc của bạn đọc do TS. Nguyễn Văn Hiệp phụ trách.

    Câu hỏi
    Xin hướng dẫn lệnh SQL tính hàng tồn kho trong CSDL Access từ 2 bảng Nhap và Xuat như sau:

    - Bảng Nhap:
    MaSP Soluong
    01 100
    02 50
    03 50

    - Bảng Xuat:
    MaSP Soluong
    01 70
    03 50
    04 10

    Trả lời
    Nếu dùng Access để quản lý các bảng dữ liệu, bạn có thể thực hiện các lệnh SQL sau đây để tính số lượng hàng tồn từ 2 bảng Nhap, Xuat theo yêu cầu của bạn:

    1. Tạo bảng chứa hàng tồn kho
    Create Table TonKho(MaSP Text, SLTon int)

    2. Tạo các record tồn kho từ bảng Nhap
    Insert into TonKho
    select Nhap.MaSP, IIf(IsNull(Nhap.Soluong), 0, Nhap.Soluong)
    -IIf(IsNull(Xuat.Soluong), 0, Xuat.Soluong) as SLTon
    from Xuat right join Nhap on Xuat.MaSP = Nhap.MaSP

    3. Tạo bảng tạm chứa các record tồn kho từ bảng Xuat
    Create Table Tam(MaSP Text, SLTon int)

    4. Tạo các record tồn kho từ bảng Xuat
    Insert into Tam
    select Xuat.MaSP, IIf(IsNull(Nhap.Soluong), 0, Nhap.Soluong)
    -IIf(IsNull(Xuat.Soluong), 0, Xuat.Soluong) as SLTon
    from Nhap right join Xuat on Xuat.MaSP = Nhap.MaSP

    5. Tìm và thêm các record tồn kho từ bảng Xuat mà bảng TonKho chưa có
    Insert into TonKho
    select MaSP, SLTon from Tam where SLTon < 0

    Qui trình thực hiện các lệnh SQL trên trong Access như sau:

    1. Chạy Access, mở file database chứa các bảng Nhap, Xuat.

    2. Chọn mục Queries trong listbox Objects, ấn kép chuột vào mục "Create query in Design View", đóng cửa sổ "Show Table" lại.

    3. Trên thanh Toolbar của Access xuất hiện 1 listbox tên là SQL, chọn mục "SQL View" để hiển thị cửa sổ soạn lệnh SQL và thực thi lệnh SQL.

    4. Mỗi lần nhập 1 lệnh SQL liệt kê ở trên (từ 1 tới 5) rồi thực thi lệnh đó.

    5. Sau 5 lần soạn/thực hiện 5 lệnh SQL trên, đóng cửa sổ Query lại, chọn mục Tables trong listbox Object để hiển thị các bảng.

    6. Duyệt tìm và mở bảng TonKho để kiểm tra kết quả.

    Nếu bạn chứa các bảng dữ liệu trong database của SQL Server thì bạn có thể nhập và chạy đoạn script chứa các lệnh SQL sau đây để tạo bảng TonKho:

    --Tạo bảng chứa hàng tồn kho
    Create Table TonKho(MaSP nText, SLTon int)

    --Tạo các record tồn kho từ bảng Nhap
    Insert into TonKho
    select Nhap.MaSP, isnull(Nhap.Soluong,0)-isnull(Xuat.Soluong,0) as SLTon
    from Xuat right join Nhap on Xuat.MaSP = Nhap.MaSP

    --Tạo bảng tạm chứa các record tồn kho từ bảng Xuat
    Create Table Tam(MaSP nText, SLTon int)

    --Tạo các record tồn kho từ bảng Xuat
    Insert into Tam
    select Xuat.MaSP, isnull(Nhap.Soluong,0)-isnull(Xuat.Soluong,0) as SLTon
    from Nhap right join Xuat on Xuat.MaSP = Nhap.MaSP

    --Tìm và thêm các record tồn kho từ bảng Xuat mà bảng TonKho chưa có
    Insert into TonKho
    select MaSP, SLTon from Tam where SLTon < 0

    Câu hỏi
    Tôi dùng phần mềm Resoursehacker và Executable File Icons Changer v5 để đổi icon cho một số file EXE nhưng không được. Xin hỏi có cách nào chuyển đổi icon cho file EXE hữu hiệu không?

    Trả lời
    Về nguyên tắc, bạn có thể dùng tiện ích có sẵn hay tự viết ứng dụng riêng hầu thay đổi hình dạng icon của file khả thi EXE trên Windows. Thật vậy, nếu bạn nắm vững định dạng file khả thi EXE trên Windows, bạn sẽ xác định được vùng chứa ảnh bitmap của icon ứng dụng (theo định dạng BMP) trong file, ghi đè nội dung bitmap mới theo yêu cầu rồi tính/hiệu chỉnh lại vùng checksum cho file là xong. Chúng tôi chưa có điều kiện kiểm tra khả năng của 2 tiện ích mà bạn dùng nên chưa đánh giá được chúng có làm tốt chức năng hay không.

    Câu hỏi
    Xin hỏi có tài liệu nào hướng dẫn cách phục hồi dữ liệu từ A-Z không?

    Trả lời
    Chúng tôi không thấy tài liệu nào thỏa mãn yêu cầu của bạn cả. Do nguyên nhân, tính chất, mức độ hư hỏng/mất dữ liệu rất đa dạng nên về nguyên tắc không có phương pháp nào có thể phục hồi hoàn hảo được. Tùy thuộc vào nguyên nhân, tính chất, mức độ hư hỏng dữ liệu cụ thể mà ta sẽ dùng phương pháp, kỹ thuật và tiện ích phục hồi nào thích hợp. Ngay cả dùng tiện ích phù hợp thì việc có phục hồi 100% dữ liệu hay không là chuyện khác. Sau đây là một số thí dụ về hư hỏng dữ liệu:

    - Đĩa chứa tin bị hỏng vật lý một số sector, các sector hỏng không thể cung cấp được dữ liệu mà ta đã lưu trữ trên chúng, các file dùng sector hỏng bị mất nội dung. Thường 1 file bị mất 1 sector trở lên thì hầu như không thể phục hồi lại trạng thái ban đầu.

    - Các sector dữ liệu của các file vẫn còn tốt, nhưng vùng chứa tin quản lý các file bị hỏng (do format lại, do virus hay chương trình nào đó thay đổi nội dung các thông tin quản lý). Trường hợp này, ta vẫn còn cơ may phục hồi dữ liệu, và một số trường hợp ta có thể phục hồi 100%.

    - Mất/quên password truy xuất file, trường hợp này ta có thể nhờ tiện ích phù hợp tìm lại password để truy xuất file bình thường.

    Tóm lại, trong quản lý thông tin trên máy tính (cũng như trong mọi hoạt động đời thường khác), ta nên thực hiện phương châm "phòng bệnh hơn chữa bệnh": hãy thường xuyên backup, sao lưu các file dữ liệu quan trọng lên môi trường chứa phụ (USB, DVD...) để khi file đang làm việc bị hỏng, ta dùng lại bản backup.

    Câu hỏi
    Lập trình báo cáo trong Visual basic 6.0, tôi đã có thể xuất được datareport những gì đã tìm, nhưng khi group by Magv, têngv, email, điện thoại thì không thể xuất datareport được, bị báo lỗi “Datafield command1.tendt not found” (tendt là field đã không group by). Xin hướng dẫn.

    Cụ thể đoạn code của tôi như sau:
    Private Sub Cmdin_Click()
    Dim gt, sql As String
    gt = giaovien.TxtTritim
    If giaovien.opMaGV = True Then
    'xây dựng lệnh Select theo mã giáo viên
    sql = select giaovien.magv, giaovien.tengv, giaovien.dienthoai, giaovien.email, detai.tendt, detai.ngaybd, detai.ngaykt, detai.diem from giaovien, huongdanchuyenmon, detai
    where giaovien.magv=huongdanchuyenmon.magv and huongdanchuyenmon.madt=detai.madt and giaovien.Magv=group by magv, tengv, email, dienthoai & gt &
    ElseIf giaovien.opTenGV = True Then
    'xây dựng lệnh Select theo tên giáo viên
    sql = select giaovien.magv, giaovien.tengv, giaovien.dienthoai, giaovien.email, detai.tendt, detai.ngaybd, detai.ngaykt, detai.diem from giaovien, huongdanchuyenmon, detai
    where giaovien.magv=huongdanchuyenmon.magv and huongdanchuyenmon.madt=detai.madt and giaovien.tengv like % & gt & %
    End If
    DataEnvironment1.Connection1.Properties.Refresh DataEnvironment1.Commands(command1_Grouping).CommandText = sql
    If DataEnvironment1.rsCommand1.State = 0 Then DataEnvironment1.rsCommand1_Grouping.Requery
    End If
    danhsachgv.Show
    End Sub

    Trả lời
    Bạn không miêu tả rõ ràng cấu trúc record của từng bảng dữ liệu, mỗi field trong record có tên gì và thuộc kiểu dữ liệu nào nên chúng tôi chỉ trả lời tổng quát. Về cú pháp, sau khi xem đoạn lệnh VB mà bạn viết, chúng tôi thấy lệnh gán xây dựng câu truy vấn Select theo mã giáo viên bị lỗi cú pháp, cụ thể lỗi nằm ở điều kiện where cuối cùng (giaovien.Magv=group by ...). Lưu ý rằng trong câu truy vấn Select, "group by" là mệnh đề độc lập với mệnh đề where, như vậy điều kiện giaovien.Magv= còn thiếu toán hạng bên phải toán tử "=". Tham số của mệnh đề "group by" thường là tên field được dùng làm tiêu chuẩn gom nhóm. Các field có kiểu là text, ntext, và image không thể dùng làm field gom nhóm.

    Câu hỏi
    Vô tình ổ D: chứa toàn bộ dữ liệu quan trọng của cơ quan bị format. Tôi đã dùng chương trình Getdataback trong đĩa Hiren 10 để lấy lại. Tất cả các file ảnh và chương trình đều đọc được, duy có các file Word và Excel là không thể đọc được, khi mở luôn hiển thị pop-up "File Conversion" sau đó mở ra những ký tự loằng ngoằng. Xin hỏi cách sửa các file này.

    Trả lời
    Về nguyên tắc, sau khi đã format lại ổ đĩa, các thông tin quản lý các file dữ liệu trên đĩa đã bị mất ít hay nhiều. Chúng ta có thể dùng 1 tiện ích phục hồi dữ liệu (thí dụ như Getdataback trong đĩa Hiren) để tìm lại các file trên đĩa. Tuy nhiên kết quả khó lòng đạt được 100% như trạng thái trước khi format, người dùng cần phải kiểm tra thủ công lại từng file, xem file nào còn dùng được thì tiếp tục dùng, file nào bị hư thì tìm cách khắc phục. Do đó, cách tốt nhất sau khi phục hồi đĩa, bạn chỉ nên kiểm tra lại các file dữ liệu tối cần thiết và tìm cách khắc phục các file này, còn các file HĐH và các ứng dụng thì nên cài lại từ đầu cho nhanh chóng và đảm bảo tin cậy.

    Câu hỏi
    Sử dụng HP Format và Grub4DOS, tôi đã format được usb và đã boot được. Nhưng khi chọn menu Hiren hoặc MiniXP thì bị báo lỗi: Booting Start Hiren's BootCD
    find --set --root /HBCD/boot.gz
    Error 15: File not found...

    Trả lời
    Với câu báo lỗi như bạn miêu tả, chúng tôi có thể kết luận là đĩa USB của bạn không có chứa file \HBCD\boot.gz. Đây là file ảnh chứa các file phục vụ boot máy từ version Hiren 9.7 tới version mới nhất là 12. Vậy bạn hãy kiểm tra lại nội dung đĩa USB boot của bạn xem có thư mục HBCD và trong thư mục này có chứa file boot.gz không. Nếu chưa có thì bạn hãy tạo lại thư mục HBCD cho USB bằng cách "extract" nó từ file ảnh Hiren.iso.

    Lưu ý rằng để tạo USB boot theo CD Hiren's, bạn cần các tiện ích sau đây: 1. HP USB Disk Storage Format, 2. Grub4DOS, 3. UltraISO.

    Qui trình điển hình để tạo 1 USB boot theo đĩa CD Hiren là:

    1. Gắn USB vào chấu cắm USB của máy, chạy trình "HP USB Disk Storage Format", chọn mục USB ở listbox Device, chọn mục FAT hay FAT32 ở listbox "File System", nhập tên nhận dạng ổ USB vào textbox "Volume Label", bỏ chọn các checkbox trong nhóm "Format options", click button Start để format đĩa USB có khả năng boot được.

    2. chạy tiện ích grubinst_gui.exe, chọn ổ USB trong listbox Disk, chọn mục "Whole disk (MBR)" trong listbox "Part List", click button Install để cài đặt module "grub" có chức năng quản lý boot đĩa USB.

    3. Copy 2 file grldr và menu.lst từ thư mục ứng dụng Grub4DOS vào thư mục gốc của ổ USB.

    4. Nếu bạn có đĩa CD boot Hiren, hãy để CD này vào ổ CD, copy thư mục HBCD từ CD vào ổ USB. Nếu bạn chỉ có file ảnh CD, chạy tiện ích UltraISO, chọn menu File.Open để mở file ảnh của CD Hiren (version mới nhất là 12 nằm trên file Hiren's.BootCD.12.0.iso), nội dung của file ảnh sẽ hiển thị trong cửa sổ bên phải, chọn thư mục HBCD, chọn button Extract để "extract" thư mục này vào ổ USB.

    Sau khi hoàn thành 4 bước trên, bạn có thể boot lại máy, vào ROM BIOS Setup để thiết lập thiết bị boot là USB-HDD rồi tiếp tục boot máy, nếu không có gì bất thường, máy sẽ boot được từ ổ USB.

    Câu hỏi
    Tôi dùng Nero Burning Rom để tạo đĩa khởi động từ đĩa mềm được tạo trong Windows 98se. Đĩa này khởi động được từ các ổ CD, nhưng không khởi động được từ ổ DVD (SATA). Nếu dùng Hiren's boot 10.0 thì khởi động từ DVD bình thường.

    Trả lời
    Nếu CD mà bạn tạo ra boot tốt trên các ổ CD, nhưng lại không boot được trên ổ DVD thì nguyên nhân chủ yếu có thể là:

    - Ổ DVD không đọc được đĩa CD của bạn, bạn hãy thử mua đĩa CD tốt và dùng chính ổ DVD để tạo đĩa boot rồi boot lại trên chính ổ DVD này xem sao.

    - Driver cho ổ DVD được dùng trong phần khởi động máy không tương thích nên không quản lý được ổ DVD. Bạn nên kiểm tra kỹ lại xem sao.

    Lưu ý rằng việc tạo đĩa boot máy từ đầu như bạn đang làm thường gặp nhiều trục trặc và mất thời gian (nhất là đối với những người không chuyên về qui trình và cơ chế boot đĩa), do đó để tạo CD (hay USB) boot máy dễ dàng và tin cậy, bạn nên thực hiện 1 trong các phương pháp sau:

    1. Dùng CD boot Hiren đang có bán đại trà, CD Hiren đã được xây dựng để phục vụ hầu như mọi yêu cầu boot máy để xử lý sự cố của máy, dĩ nhiên nó cũng đáp ứng yêu cầu cơ bản nhất là boot máy để làm việc trên hệ điều hành DOS.

    2. Nếu muốn tự tạo CD boot Hiren, bạn có thể download file ảnh CD này trên Internet, dùng tiện ích UltraISO mở file ảnh này và ghi ra đĩa CD, thế là bạn có đĩa CD boot Hiren.

    3. Hiện file ảnh CD Hiren version 12 mới chỉ chiếm 368MB (các version cũ còn nhỏ hơn nữa), nếu cần ghi thêm các file của riêng mình, bạn có thể dùng tiện ích UltraISO mở file ảnh gốc Hiren, dùng chức năng Add File/Folder để thêm các file/thư mục của riêng bạn vào file ảnh cho đến khi đầy đĩa CD thì ra lệnh "Burn CD" để ghi file ảnh ra CD. Tóm lại, phương pháp 3 này cho bạn tạo CD boot Hiren có khả năng y như bản gốc, nhưng CD có chứa thêm nhiều dữ liệu của riêng bạn.

    4. Nếu bạn nắm vững qui trình boot máy, công dụng của các file điều khiển khởi động máy như config.sys, autoexec.bat..., bạn có thể dùng tiện ích UltraISO mở file ảnh gốc Hiren, rút trích các file boot gốc, xem xét và hiệu chỉnh lại theo ý muốn của mình rồi "add" lại file ảnh. Tùy thuộc nhu cầu boot máy đã được hiệu chỉnh lại, bạn có thể thêm/bớt các file phục vụ boot máy trong thư mục HBCD của file ảnh. Cuối cùng dùng chức năng Add File/Folder để thêm các file/thư mục của riêng bạn vào file ảnh cho đến khi đầy đĩa CD thì ra lệnh "Burn CD" để ghi file ảnh ra CD. Phương pháp 4 này là cách uyển chuyển và chi phí thấp nhất để tạo CD boot theo yêu cầu riêng của bạn.

    Câu hỏi
    Xin hỏi thông tin về bộ khung và sơ đồ dựng DSLAM để thực hiện đề tài "Xây dựng ADSL cho thành phố HCM".

    Trả lời
    Tên đề tài còn rất vĩ mô nên mơ hồ, chưa miêu tả chi tiết rõ ràng các công việc nào cần giải quyết, và giải quyết ở mức độ nào. Thường để giải quyết tốt 1 vấn đề nào đó, bạn cần phải thực hiện nhiều bước:

    1. Xác định rõ ràng chi tiết các yêu cầu của đề tài (bằng cách gặp thầy hướng dẫn để hỏi và tham vấn). Thường thầy hướng dẫn có trách nhiệm miêu tả rõ ràng, chi tiết về các chức năng mà đề tài phải thực hiện, mức độ thực hiện...

    2. Dựa vào kiến thức học tập liên quan đến việc hiện thực đề tài như cấu trúc kết nối mạng máy tính, kỹ thuật ghép/tách kênh tín hiệu, tính chất/khả năng của từng thiết bị kết nối (DSLAM...), bạn sẽ chủ động phân tích/thiết kế/hiện thực hệ thống theo các yêu cầu mà đề tài đặt ra.

    Hiện nay, mỗi công ty cung cấp dịch vụ ADSL đều đã thiết kế/xây dựng/vận hành 1 sơ đồ lắp đặt, nối kết các DSLAM theo các yêu cầu riêng của công ty mình, tuy nhiên các sơ đồ lắp đặt này là thông tin nội bộ, mật của công ty, do đó họ không bao giờ công bố rộng rãi. Hơn nữa sơ đồ lắp đặt các DSLAM chỉ là thông tin tham khảo chứ không đóng vai trò quan trọng trong việc thực hiện đề tài của bạn.

    ID: A1103_120