Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1092743087
Jiuraasdasd
2004-08-17 15:44
2004.09.05
Как сделать проверку орфографии?


3-1091949542
Shade
2004-08-08 11:19
2004.09.05
Сортировка записей


9-1084638980
G_U_N
2004-05-15 20:36
2004.09.05
PowerDraw


11-1080427828
Deimos
2004-03-28 01:50
2004.09.05
KOL + TASM = ???


1-1092827422
STARfish
2004-08-18 15:10
2004.09.05
Как получить message WM_vscroll не от формы, а от ScrollBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский