ここでSirRufoのコメントに同意します。 「どうすればいいですか?」に対する正解。 「それをしないでください。それは間違った方法です。」
このようにクエリに直接値を貼り付けると、ハッカーはクエリに、次のように解釈されるものを配置する方法を見つけることができます。 SQLコマンド。 これはSQLインジェクションとして知られています 、そしてそれは過去数十年で数十億ドル相当の損害の原因となっています。 (誇張ではありません。)
これを行う正しい方法は、パラメータを使用して、SQLコードをデータから明確に分離することです。 そのように:
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
パラメータの値を設定する方法の正確な構文は、データセットタイプごとに異なる場合がありますが、基本的な考え方がわかります。