Đồng ý với nhận xét của SirRufo tại đây. Câu trả lời chính xác cho "làm thế nào để làm điều này?" là "đừng làm vậy; đó là cách làm sai."
Nếu bạn gắn các giá trị trực tiếp vào truy vấn như vậy, tin tặc có thể tìm cách để đặt những thứ vào truy vấn của bạn mà được hiểu là Các lệnh SQL. Đây được gọi là SQL injection , và nó là nguyên nhân gây ra thiệt hại trị giá hàng tỷ đô la trong vài thập kỷ qua. (Không ngoa.)
Cách thích hợp để làm điều đó là tách mã SQL khỏi dữ liệu của bạn một cách rõ ràng, bằng cách sử dụng tham số, như vậy:
ADOQuery1.SQL.Clear;
//: before an identifier specifies a parameter
ADOQuery1.SQL.Add('SELECT tbl.emailAddress, tbljob.Time FROM '+
'dbwindowwash.tblclient, dbwindowwash.tbljob, dbwindowash.tbljobclientworker '+
'WHERE tbljobclientworker.jobID = tbljob.jobID AND '+
'tbljobclientworker.clientID = tblclient.clientID AND tbljob.Date = :date';
//parse the query and find parameter declarations
ADOQuery1.Prepare;
//set a value for the parameter
ADOQuery1.ParamByName['date'].AsDateTime := TodaysDate;
ADOQuery1.Open
Cú pháp chính xác về cách đặt giá trị của một tham số có thể khác với loại tập dữ liệu này sang loại tập dữ liệu khác, nhưng điều đó sẽ cung cấp cho bạn ý tưởng cơ bản.