![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передать в Format дату [D7, XP]
Laguna © (2011-10-18 15:25:00)При форматировании строки на ряду с числами и строками присутствует параметр как дата. Как его передать через Format? Из перечисленного в справке ничего не нашел
d = Десятичное (целое число)
e = Научный
f = Установленный
g = Генерал
m = Деньги
n = Число (плавающее)
p = Указатель
s = Строка
u = Десятичное число без знака
x = Шестнадцатеричный
А нужно вот так ... Format('%d - %s - %дата'), [10, 'Строка', Now]
OW (2011-10-18 16:54:00) [61]
> не надо общую процедуру делать. Незачем.
да можно,
для упрощения, например
OpenQ(oqTmp, 'select * from ТАБЛА1 where ID_COL = :ID_COL ', [AVal]);
FMyVar1 := oqTmp.FieldbyName('COL_NAME').Value;
OpenQ(oqTmp, 'select * from ТАБЛА22 where ID_COL = :ID_COL and ID_COL2 = :ID_COL2 ', [AVal2, AVal3]);
FMyVar2 := oqTmp.FieldbyName('COL_SUBSCRIBE').Value;
вместо
oqTmp.sql.test := 'select * from ТАБЛА1 where ID_COL = :ID_COL ';
oqTmp.pameters.parambyname(). value := AVal;
oqTmp.Open;
FMyVar1 := oqTmp.FieldbyName('COL_NAME').Value;
oqTmp.sql.test := 'select * from ТАБЛА22 where ID_COL = :ID_COL and ID_COL2 = :ID_COL2 ';
oqTmp.pameters.parambyname(). value := AVal2;
oqTmp.pameters.parambyname(). value := AVal3;
oqTmp.Open;
FMyVar2 := oqTmp.FieldbyName('COL_SUBSCRIBE').Value;
представляется вот это все
oqTmp.pameters.parambyname(). value := AVal2;
oqTmp.pameters.parambyname(). value := AVal3;
да и Open|Exec потом - шелуха, детали, отвлекающие от сути
запрос и сразу параметры - имхо, лучше.
Ega23 (2011-10-18 16:34:00) [62]
> Только как это будет выглядеть с применением их в общей
> процедуре?
А не надо общую процедуру делать. Незачем.
Laguna (2011-10-18 16:32:00) [63]Я понял насчет параметров, как единичный случай сейчас попробую. Только как это будет выглядеть с применением их в общей процедуре? Параметры я указываю после строки запроса. А ведь их(параметров) каждый раз может быть различное количество. В данной ситуации Format ведь тоже использует параметры и все в одной строке.
OW (2011-10-18 16:31:00) [64]кажется, уловил мысль
вот, не претендуя на изящество и опуская проверки
procedure OpenQ(const Q:TORA(или ADO)Query; const SQL:string; const P:array of variant);
var
i:integer;
s:string;
begin
try
try
Screen.Cursor := crHourGlass;
if SQL <> '' then
Q.SQL.Text := SQL;
s := '';
for i := 0 to Q.ParamCount-1 do
begin
case Q.Params[i].DataType of
ftDateTime: Q.Params[i].AsDateTime := P[i];
else Q.Params[i].Value := P[i];
end;
s := s + Q.Params[i].Name + '=' + Q.Params[i].AsString + #13#10;
end;
Q.Open;
except
on E:Exception do
begin
Screen.Cursor := crDefault;
E.Message := E.Message + #13#10 + 'досада в uUtils. procedure OpenQ. при попытке сделать ' + #13#10 + Q.SQL.Text + #13#10 + ' а параметры таковы:' + s;
Raise;
end;
end;
Screen.Cursor := crDefault;
end;
OpenQ(oqTmp, 'select * from AGENTS where ID_AGENT = :ID_AGENT ', [IdAgent]);
FAgentId := oqTmp.FieldbyName('ID_AGENT').Value;
OW (2011-10-18 16:21:00) [65]uses the parameters
verwendet die Parameter
utilise les paramètres
パラメータを使用して います
Ega23 (2011-10-18 16:20:00) [66]Ты не используешь параметры.
Используй их и будет тебе щщасте.
Laguna (2011-10-18 16:06:00) [67]Общая процедура для исполнения SQL-запроса
procedure SqlFromTab(St : String);
begin
with TADOQuery.Create(nil) do
try
ADOConnection := DM1.AdoConnection1;
ParamCheck := True;
SQL.Clear;
SQL.Add(St);
ExecSQL;
finally
Free;
end;
end;
Далее формируем нужную строку для запроса
SQlFromTab(Format('Insert InTo OperTab (Kod, , DataDoc, NameDoc, SumDoc) ' +
'Values (%d, ???, %s, %.0f)',[RegInf.Kod, DataDocDateEdit.Date, NameDocEdit.Text, DBGridEh1.Columns[4].Footer.SumValue]));
Кстати вырисовалась дополнительно еще одна загвоздка. DBGridEh1.Columns[4].Footer.SumValueИмеет тип Variant и при применении параметра %.0fТоже выдает ошибку несовместимости типа параметра, хотя в таблице поле имеет тип Double.
Ega23 (2011-10-18 16:04:00) [68]
> нужно будет в таблицу с полем TDate через sql-запрос,
Параметры используй.
OW (2011-10-18 16:01:00) [69]
> передать дату нужно будет в таблицу с полем TDate через
> sql-запрос
use parameters
Amoeba_ (2011-10-18 15:48:00) [70]
> передать дату нужно будет в таблицу с полем TDate через
> sql-запрос
Запрос в студию!
Laguna (2011-10-18 15:41:00) [71]Дело в том, что передать дату нужно будет в таблицу с полем TDate через sql-запрос, поэтому перевод даты в строку не пойдет.
Ega23 (2011-10-18 15:31:00) [72]
Format('%d - %s - %s'), [10, 'Строка', DateTimeToStr(Now)]
Ну или вместо DateTimeToStr можно FormatDateTime
Amoeba_ (2011-10-18 15:30:00) [73]Format('%d - %s - %s'), [10, 'Строка', DateToStr(Now)]