Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
ВнизТекст запроса корёжит не по детски :( Найти похожие ветки
← →
Cobalt © (2004-08-11 00:43) [0]Есть такой вот запрос:
const Table_Select_Enabled = "SELECT :fnum, :fname, Enabled FROM :ftab WHERE Enabled=True";
------
qrServ.SQL.Clear;
qrServ.SQL.Text:=Table_Select_Enabled;
qrServ.ParamByName("ftab").AsString:=FTableName; {"Operators"}
qrServ.ParamByName("fnum").AsString:=FNumbField; {"ID"}
qrServ.ParamByName("fname").AsString:=FNameField; {"Name"}
qrServ.Prepared:=True;
s:=qrServ.Text;
В результате получаю вот такой вот текст:
SELECT ?, ?, Enabled FROM ? WHERE Enabled=True
Вопрос - может, я делаю что-то не так?
P.S. Prepared использовал для того, что бы узнать - какой же текст передаётся.
← →
GanibalLector © (2004-08-11 01:21) [1]А разве можно указывать FROM :ftab ???
Сдается мне,что тут собака зарыта.
← →
jack128 © (2004-08-11 01:27) [2]а что тебе не нравиться? Что то не работает?
← →
GanibalLector © (2004-08-11 01:31) [3]2 jack128 ©
А разве можно FROM :ftab???Пробовал в Ib ... дык,говорит НИЗЯ.
← →
jack128 © (2004-08-11 01:36) [4]в Ib нельзя. А в акссесе, кто его знает, может и можно.. Но дело не в этом. После припарирования запрос может быть любым - я так понимаю строка SELECT ?, ?, Enabled FROM ? WHERE Enabled=True будет передоваться сервером, а значения параметров - отдельной структурой.
Мне вообще не понятно, что Кобальт хочет получить?
"SELECT "Id", "Name", Enabled FROM "Operators" WHERE Enabled=True" ? Так что ли? Ну так некогда ты этого не получишь..
← →
sniknik © (2004-08-11 01:38) [5]> Есть такой вот запрос:
запрос мечта поэта! ни одной неизвестной величины с с базы не достается! все только известные и переданные с клиента. класс. ;о))
да, и имя таблици параметром нельзя передавать.
← →
GanibalLector © (2004-08-11 01:39) [6]да, и имя таблици параметром нельзя передавать.
Все-таки я оказался прав.+
← →
jack128 © (2004-08-11 01:41) [7]
> да, и имя таблици параметром нельзя передавать.
> Все-таки я оказался прав
хе. Какая разница!! Ни ты, ни я не заметили, что
> ни одной неизвестной величины с с базы не достается! - это верный признак, что пора спать.
← →
sniknik © (2004-08-11 01:42) [8]> В результате получаю вот такой вот текст:
> SELECT ?, ?, Enabled FROM ? WHERE Enabled=True
это правильный запрос получился (не считая вопроса после FROM), просто другая форма записи. вопрос это неопреденный параметр. можно и так писать только после надо руками их создавать. ты видать вытащил запрос на этапер преобразования.
← →
sniknik © (2004-08-11 01:48) [9]> только после надо руками их создавать.
напримерADOCommand1.ParamCheck:= false; //чтобы дельфя нам не "помогала"
ADOCommand1.CommandText:= "INSERT INTO Table1 ([Date]) VALUES (?)"; //вопрос вместо параметра (!)
ADOCommand1.Parameters.CreateParameter("Dat", ftDateTime, pdInput, 0, Now());
ADOCommand1.Execute;
← →
Cobalt © (2004-08-11 10:59) [10]Хм, по вашим репликам понял, что с параметрами не всё так просто :)
Полез в Dlphi Guide для Delphi6, и нашёл:
To use parameters, you must create a TParams object. For each parameter value, use
the TParams.CreateParam method to add a TParam object. Then use properties of
TParam to describe the parameter and set its value.procedure TForm1.INSERT_WithParamsButtonClick(Sender: TObject);
var
SQLstmt: String;
stmtParams: TParams;
begin
stmtParams := TParams.Create;
try
Database1.Connected := True;
stmtParams.CreateParam(ftString, "StateParam", ptInput);
stmtParams.ParamByName("StateParam").AsString := "CA";
SQLstmt := "INSERT INTO "Custom.db" "+
"(CustNo, Company, State) " +
"VALUES (7777, "Robin Dabank Consulting", :StateParam)";
Database1.Execute(SQLstmt, stmtParams, False, nil);
finally
stmtParams.Free;
end;
end;
If the SQL statement includes a parameter but you do not supply a TParam object to
provide its value, the SQL statement may cause an error when executed (this
depends on the particular database back-end used). If a TParam object is provided
but there is no corresponding parameter in the SQL statement, an exception is raised
when the application attempts to use the TParam.
Но вот, к сожаления, там не упомянуто, что имена таблиц и полей не могут быть парметрами :(
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c