Xin giúp đỡ về ADO trong delphi báo lỗi: Parameter object is improperly defined. Inconsistent or incomplete information was provided

Liên hệ QC

transongngocquan

Thành viên hoạt động
Tham gia
10/5/07
Bài viết
180
Được thích
99
Mã:
procedure TForm1.Button3Click(Sender: TObject);
var
  cnn: TADOConnection;
  qry: TADOQuery;
  sFullName, sSQL:string;
begin
cnn := TADOConnection.Create(nil);
sFullName:='D:\Q1.xls';
cnn.ConnectionString := 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=' + sFullName +
                                       ';Extended Properties="Excel 12.0 Xml;HDR=NO";';
cnn.Connected := True;
qry := TADOQuery.Create(nil);
qry.Connection := cnn;
sSQL:='SELECT * FROM [TongHop$]';
sSQL:='SELECT * FROM [TongHop$A2:C100]';
qry.SQL.Text := sSQL;
qry.Open;
qry.Free;
cnn.Free;

end;


trong Delphi đối với câu truy vấn: SELECT * FROM [TongHop$] chạy tốt
nhưng đối với SELECT * FROM [TongHop$A2:C100] là báo lỗi Parameter object is improperly defined. Inconsistent or incomplete information was provided
nhưng trong VBA với SELECT * FROM [TongHop$A2:C100] thì chạy bình thường
xin mọi người giúp đỡ cách khắc phục
 
Phải đặt tên cho vùng Range từ A2:C100 mới chạy SELECT * FROM TEN
(TEN là vùng Range từ A2:C100)
Vậy trong Delphi không thể làm trực tiếp được
 
Upvote 0
Upvote 0
Mấy cái đó nó gần như là chuẩn chung rồi ... nên viết thành 1 hàm sử dụng chung cho nhiều trường hợp khác nhau khỏi mất công cứ thế viết lại hoài ..
VD: Hàm truyền 2 cái tham số : Path, SQL ... thế là xong cứ thế mà keo nó chạy cho nhiều trường hợp khác nhau
 
Upvote 0
Mã:
procedure TForm1.Button3Click(Sender: TObject);
var
  cnn: TADOConnection;
  qry: TADOQuery;
  sFullName, sSQL:string;
begin
cnn := TADOConnection.Create(nil);
sFullName:='D:\Q1.xls';
cnn.ConnectionString := 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=' + sFullName +
                                       ';Extended Properties="Excel 12.0 Xml;HDR=NO";';
cnn.Connected := True;
qry := TADOQuery.Create(nil);
qry.Connection := cnn;
qry.ParamCheck := False;
sSQL:='SELECT * FROM [TongHop$A2:C100]';
qry.SQL.Text := sSQL;

qry.Open;
qry.Free;
cnn.Free;

end;
Cám ơn
 
Lần chỉnh sửa cuối:
Upvote 0
Chào mừng bạn đã đến với Delphi và Excel. Có thời gian bạn có thể xem video hướng dẫn cách lập trình Delphi reference tới DLL Add-in A-Tools để tạo hàm trả về mảng động, co giãn trên worksheet như các hàm A-Tools chạy.
 
Upvote 0
Mấy cái đó nó gần như là chuẩn chung rồi ... nên viết thành 1 hàm sử dụng chung cho nhiều trường hợp khác nhau khỏi mất công cứ thế viết lại hoài ..
VD: Hàm truyền 2 cái tham số : Path, SQL ... thế là xong cứ thế mà keo nó chạy cho nhiều trường hợp khác nhau
Delphi là hướng đối tượng mà, phải hôn?
Để dành sử dụng chung thì viết class chứ sao lại hàm.
 
Upvote 0
Delphi là hướng đối tượng mà, phải hôn?
Để dành sử dụng chung thì viết class chứ sao lại hàm.
Tại thấy trong Delphi Khi viết DLL API thì thấy nó Add New Unit ... xong thích viết gì vào đó thì viết chứ cũng không thấy mấy chữ class như VBA Or VB6 nên cũng ko biết keo nó là chi nữa cho đúng với câu từ và thuật ngữ lập trình trên Delphi ...
nên cứ keo đại 1 câu viết vô đó 1 cái hàm xài chung vậy ... suy cho cùng ko chính xác mà cũng ko sai he :D:D
 
Upvote 0
Lập trình theo HĐT chỉ là thói quen thôi.
VBA không phải là môi trường HĐT. Mấy cái class trong VBA chỉ gượng gạo. Class modules chỉ là hình thức để VBA nới rộng tầm vực.
Delphi là môi trường thực sự HĐT. Tập làm quen với lối viết này sẽ có lợi rất nhiều về sau.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom