powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Множественный выбор в запросе
19 сообщений из 44, страница 2 из 2
Множественный выбор в запросе
    #39951506
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster
wsnet,

1) Тебе нужно точное совпадение? Именно "Вася и Петя и Ваня"?
2) Я бы тупо слеил IN кляузу обычным циклом и прилепил к запросу.

Код: pascal
1.
2.
  for ..... do MyParam:=MyParam+''''+StringList.Strings[i]+''''+',';
  MyParam:=TrimLastChar(MyParam,',');


побаяню
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function TrimLastChar(Text: string; C: Char): string;
begin
  if (Length(Text)>0) and (Text[Length(Text)]=C) then begin
    Result:=Copy(Text,1,Length(Text)-1);
  end else begin
    Result:=Text;
  end;
end;

begin
  var StringList:=TStringList.Create;
  StringList.Add(''');'#13#10'delete from tab;'#13#10'select * from tab where in (''');

  var MyParam:='';
  for var i:=0 to StringList.Count-1 do MyParam:=MyParam+''''+StringList.Strings[i]+''''+',';
  MyParam:=TrimLastChar(MyParam,',');

  WriteLn('select * from tab where in ('+MyParam+')');

  readln;
end.



Код: plaintext
1.
2.
select * from tab where in ('');
delete from tab;
select * from tab where in ('')
...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951516
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
DarkMaster
wsnet,

1) Тебе нужно точное совпадение? Именно "Вася и Петя и Ваня"?
2) Я бы тупо слеил IN кляузу обычным циклом и прилепил к запросу.

Код: pascal
1.
2.
  for ..... do MyParam:=MyParam+''''+StringList.Strings[i]+''''+',';
  MyParam:=TrimLastChar(MyParam,',');


побаяню
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function TrimLastChar(Text: string; C: Char): string;
begin
  if (Length(Text)>0) and (Text[Length(Text)]=C) then begin
    Result:=Copy(Text,1,Length(Text)-1);
  end else begin
    Result:=Text;
  end;
end;

begin
  var StringList:=TStringList.Create;
  StringList.Add(''');'#13#10'delete from tab;'#13#10'select * from tab where in (''');

  var MyParam:='';
  for var i:=0 to StringList.Count-1 do MyParam:=MyParam+''''+StringList.Strings[i]+''''+',';
  MyParam:=TrimLastChar(MyParam,',');

  WriteLn('select * from tab where in ('+MyParam+')');

  readln;
end.



Код: plaintext
1.
2.
select * from tab where in ('');
delete from tab;
select * from tab where in ('')


Хорошо, но данный код у меня не работает если в среде пропишем:
Код: pascal
1.
select * from tab where id in (:MyParam)



А в коде формируем MyParam:
Код: pascal
1.
2.
3.
var MyParam:='';
  for var i:=0 to StringList.Count-1 do MyParam:=MyParam+''''+StringList.Strings[i]+''''+',';
  MyParam:=TrimLastChar(MyParam,',');



Интересно почему так?
...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951533
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet
Интересно почему так?
Ну включи ты дебагер, поставь точку останова и посмотри что у тебя на выходе из цикла получается. И что именно "не работает"? Какой "код"? Код запроса ошибку даёт или цикл?
...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951534
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetИнтересно почему так?

Потому что ты не понимаешь как это работает и пытаешься делать странные вещи типа
"получить данные, которые уже здесь есть".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951562
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet,

Вот здесь у тебя ID что?

Код: plsql
1.
select * from tab where id in (:MyParam)
...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951594
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster
wsnet,

Вот здесь у тебя ID что?

Код: plsql
1.
select * from tab where id in (:MyParam)



Неверно выразился не id, а name, то есть запрос вида

Код: pascal
1.
select * from tab where name in (:MyParam)



MyParam собираю так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function TPageContractDepartmentEMKContract.ParamsAsStr(const AParams: TStringList): string;
var
  i: Integer;
begin
  Result := '';
  for i := 0 to AParams.Count - 1 do
  begin
    if Result <> '' then
      Result := Result + ', ';
    Result := Result + QuotedStr(AParams[i]);
  end;
end;



В итоге строка получается 'Вася','Петя', но запрос не выбирает эти записи, 0 redords.
...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951596
GrigoriyFomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wsnet,

чтоб не городить огород, не лучше ль передать как макрос?
Код: sql
1.
select * from tab where name in (&MyMacro)


а в коде передать
Код: pascal
1.
dataset.macrobyname('mymacro').value:=MacroStr;
...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951599
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFomin
wsnet,

чтоб не городить огород, не лучше ль передать как макрос?
Код: sql
1.
select * from tab where name in (&MyMacro)


а в коде передать
Код: pascal
1.
dataset.macrobyname('mymacro').value:=MacroStr;



Не хочу макросы.
...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951607
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wsnet
Не хочу макросы.


Если у тебя FireBird/Interbase, то можно 6686267
...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951616
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet
В итоге строка получается 'Вася','Петя', но запрос не выбирает эти записи, 0 redords.
1) Если запрос не выбирает записи, его надо запустить на другом клиенте. Последовательность в основном такая (особенно для сложных/громоздких запросов): сначала запрос пишется и отлаживается в конструкторе БД, где это делать легко и приятно, и только потом переносится в датасет или код. Поэтому сначала отладь запрос в другом месте, добейся корректного результата с конкретным набором условий и параметров, а уже потом пихай запрос в код.
2) Если запрос на другом клиенте отрабатывает, а из дельфы нет, то тогда смотрим что именно (целиком) уходит на сервер и сравниваем с тем, что отрабатывает корректно.
3) Но если ты упрямо не пользуешься отладчиком (он нужен в п. 2), когда тебе настоятельно советуют это сделать, ты будешь возиться с подобной фигнёй неделями, растрачивая своё и чужое время.
4) До сих пор нет полного кода: от формирования параметра и до отправки запроса.
...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951623
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluck99До сих пор нет полного кода

До сих пор нет даже описания задачи. Только кривые попытки сделать что-то непонятное.
Какой-то список имён в TStringList, непонятно откуда-то взявшийся. Какой-то запрос,
непонятно зачем посылающийся на сервер (плюс намёки, что это не настоящий запрос, а чисто
для примера).

PS: А если копнуть, то может внезапно оказаться, что ни список, ни запрос не нужны, а достаточно пробежаться по записям, отмеченным галочкой в каком-нибудь EhGrid....
...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951632
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

какой ты нудный... :)
...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951654
wsnet,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
  public

    function GetFormat(const lines: TStringList): string;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetFormat(TStringList(Memo1.lines)));
end;

function TForm1.GetFormat(const lines: TStringList): string;
var
  list, line: string;
  LCount, lenStr, LenEnd, offset, LenLine: Integer;
begin
  offset := 1;

  with lines do
  begin
    LCount := Count;
    lenStr := Text.Length - ((LCount - 1) * LineBreak.Length);
    LenEnd := (lenStr + (4 * LCount)) - 2;
  end;

  SetLength(list, LenEnd);
  for line in lines do
  begin
    LenLine := line.Length;
    list[offset] := '''';
    inc(offset);
    move(line[1], list[offset], LenLine * sizeof(line[1]));
    inc(offset, LenLine);
    list[offset] := '''';

    if offset < LenEnd then
    begin
      inc(offset);
      list[offset] := ',';
      inc(offset);
      list[offset] := ' ';
      inc(offset);
    end;
  end;

  Result := list;
end;

end.

...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951668
Если сравнить мою функцию с функцией которую используете


GetFormat - 8.169088
ParamsAsStr - 12.678366

Выгода составляет 4.249813 сек. При этом мы получаем
Код: sql
1.
'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675'



Аналогично функции ParamsAsStr
Код: sql
1.
'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675', 'r', 'rthrt', 't5u667i', 'yukyuky5675'




Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
  public
    ListS: TStringList;

    function GetFormat(const lines: TStringList): string;
    function ParamsAsStr(const AParams: TStringList): string;

    procedure Test_to_num;
    procedure Test_to_num2;

    function PrintTime(T: Int64): AnsiString;
  end;

var
  Form1: TForm1;

var
  T, T1, T3: Int64;
  i, A: integer;

function sprintf(S: PAnsiChar; const Format: PAnsiChar): integer; cdecl; varargs; external 'msvcrt.dll';

implementation

{$R *.dfm}

procedure TForm1.Test_to_num;
begin
  Memo1.lines.Add('GetFormat');
  QueryPerformanceCounter(T1);
  for A := 1 to 3 do
  begin
    for i := 0 to 100000 do
      GetFormat(ListS);
  end;
  Memo1.lines.Add(PrintTime(T1));
end;

procedure TForm1.Test_to_num2;
begin
  Memo1.lines.Add('ParamsAsStr');
  QueryPerformanceCounter(T);
  for A := 1 to 3 do
  begin
    for i := 0 to 100000 do
      ParamsAsStr(ListS);
  end;
  Memo1.lines.Add(PrintTime(T));
end;

function TForm1.PrintTime(T: Int64): AnsiString;
var
  A, b: Int64;
begin
  Result := '';
  if QueryPerformanceCounter(A) and QueryPerformanceFrequency(b) then
  begin
    SetLength(Result, 25);
    SetLength(Result, sprintf(PAnsiChar(Result), '%f', single((A - T) / b)));
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Test_to_num;
  Test_to_num2;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Clear;
  ListS := TStringList.Create;
  ListS.LineBreak := '';
  for i := 0 to 50 do
  begin
    ListS.Add('r');
    ListS.Add('rthrt');
    ListS.Add('t5u667i');
    ListS.Add('yukyuky5675');
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  ListS.Free;
end;

function TForm1.GetFormat(const lines: TStringList): string;
var
  list, line: string;
  LCount, lenStr, LenEnd, offset, LenLine: integer;
begin
  offset := 1;

  with lines do
  begin
    LCount := Count;
    lenStr := Text.Length - ((LCount - 1) * LineBreak.Length);
    LenEnd := (lenStr + (4 * LCount)) - 2;
  end;

  SetLength(list, LenEnd);
  for line in lines do
  begin
    LenLine := line.Length;
    list[offset] := '''';
    inc(offset);
    move(line[1], list[offset], LenLine * sizeof(line[1]));
    inc(offset, LenLine);
    list[offset] := '''';

    if offset < LenEnd then
    begin
      inc(offset);
      list[offset] := ',';
      inc(offset);
      list[offset] := ' ';
      inc(offset);
    end;
  end;

  Result := list;
end;

function TForm1.ParamsAsStr(const AParams: TStringList): string;
var
  i: integer;
begin
  Result := '';
  for i := 0 to AParams.Count - 1 do
  begin
    if Result <> '' then
      Result := Result + ', ';
    Result := Result + QuotedStr(AParams[i]);
  end;
end;

end.

...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951703
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet
Коллеги, подскажите есть запрос типа

Код: pascal
1.
select * from tab where tab.name in (:name_list)



Параметр name_list получаю из TStringList, вопрос правильно ли это и как сделать чтобы параметр принял значение типа:

'Вася','Петя', а не как 'Вася, Петя'.

Как делаете вы?


Код: sql
1.
CREATE FUNCTION dbo.spMyFunc(@name_list VARCHAR(8000))...



Код: pascal
1.
SELECT * FROM spMyFunc(:name_list)
...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951788
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, не ясно одно.

есть запрос

Код: pascal
1.
2.
3.
4.
var Q:OraQuery;
Q.SQL.Add(select * from test where test.id in (:param));
Q.ParamByName('param').asString := '123,133';
Q.Open;



Вывод 0 записей, хотя записи с данными id есть.

Вопрос почему?
...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951789
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnet
Вопрос почему?
Потому что ТС упрямо игнорирует рекомендации и только причитает.
...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951791
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsnetВопрос почему?

Проблема в прокладке.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Множественный выбор в запросе
    #39951796
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный
Если сравнить мою функцию с функцией которую используете
GetFormat - 8.169088
ParamsAsStr - 12.678366

А если вот так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function TForm1.ParamsAsStr(const AParams: TStringList): string;
var
  i: integer;
begin
  if AParams.Count > 0 then
  begin
    with TStringBuilder.Create(QuotedStr(AParams[0])) do
    try
      for i := 1 to AParams.Count - 1 do
      begin
        Append(',"');     
        Append(AParams[i]);     
        Append('"');     
      end;
      Result := ToString(True);      
    finally
      Free;
    end;
  end else
    Result := '';
end;

?
...
Рейтинг: 0 / 0
19 сообщений из 44, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Множественный выбор в запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]