Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

Текст запроса корёжит не по детски :(   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
14-1092635313
Спиридон Скипидаров
2004-08-16 09:48
2004.09.05
http://hitech.compulenta.ru/2004/8/13/49196/


1-1092832617
irq
2004-08-18 16:36
2004.09.05
аналог TTreeNodes


14-1092315799
Digitman
2004-08-12 17:03
2004.09.05
"We all live in a yellow submarine... "(C) Beatles


4-1090516343
saimon
2004-07-22 21:12
2004.09.05
Hint как в Windows XP


6-1088176360
Сергей Г
2004-06-25 19:12
2004.09.05
E-Mail адрес