Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2011, 15:29   #1
java_91
Пользователь
 
Регистрация: 11.11.2008
Сообщений: 32
По умолчанию SQL-выборка в Delphi

Здравствуйте. У меня проблема. Возникает ошибка При рекурсии функции. "Ошибка синтаксиса SQL возле слова IN". Но в чем ошибка? подскажите пожалуйста.
Код:
Procedure ExcelExport(NumField,FieldCol,LastID : integer; StoredProc : ArrayStrStr);
var p_i : integer;
    p_cell : Variant;
    p_Stored : TADOStoredProc;
  Begin
  p_Stored := TADOStoredProc.Create(nil);
  with p_Stored do
  begin
    ConnectionString :='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=kis_mzsa;Data Source=OOUP_5;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=OOUP_5';
    ProcedureName:=StoredProc[1,NumField];
    Parameters.Clear;
    Parameters.CreateParameter('@nMode', ftSmallint, pdInput, 16, 0);
    Parameters.CreateParameter('@nId', ftInteger, pdInput, 32, 0);
    Parameters.CreateParameter('@cSearch', ftString, pdInput, 254, '');
    Parameters.CreateParameter('@cFields', ftString, pdInput, 1000, '');
    Parameters.CreateParameter('@cFrom', ftString, pdInput, 1000, '');
    Parameters.CreateParameter('@cWhere', ftString, pdInput, 1000, '');
    Parameters.CreateParameter('@cInto', ftString, pdInput, 20, '');
    Parameters.ParamValues['@nMode'] := 0;
    If LastID <> 0 Then
    Parameters[6].Value := StoredProc[2,NumField] + ' in (' + IntToStr(LastID) + ')';
  //  Parameters[6].Value := Parameters[6].Value + '';
    Prepared := true;
    Open;
    First;
    ShowMessage(StoredProc[1,NumField]+' Where '+Storedproc[2,NumField]+' in ('+ IntToStr(LastID)+')'+' numField = '+Inttostr(NumField));
    ShowMessage(p_stored.FieldByName('ID').AsString);
  End;
  {If p_Stored.Active = True Then
  ShowMessage('Active true') else
  ShowMessage('Active false');}
  for p_i := 1 to p_Stored.RecordCount do
    Begin
    NumCell := NumCell+1;
    p_Cell := Excel.ActiveWorkBook.WorkSheets[1].Cells[NumCell,FieldCol-NumField+2];
    Excel.ActiveWorkBook.WorkSheets[1].Range[p_cell,p_cell]:=p_Stored.FieldByName('NAME').Asstring;
    LastID:=p_stored.FieldByName('ID').AsInteger;
    ShowMessage('LastID = '+ inttoStr(LastID));
    If NumField > 1 then
    ExcelExport(NumField - 1,FieldCol,LastId,StoredProc);
    p_Stored.Next;
    End;
  p_Stored.Destroy;
  End;
При первом вызове функции:
Код:
StoredProc[1,1]:='SELECT_DICT_INSTRUMENT;1';
StoredProc[1,2]:='SELECT_DICT_INSTRUMENTGROUP;1';
StoredProc[1,3]:='SELECT_DICT_INSTRUMENTVIEW;1';
StoredProc[2,2]:='IV.ID';
StoredProc[2,1]:='IG.ID';
ExcelTitle(FieldCol,'Операции',FieldName,FieldWidth);
//ExcelExport(3,3,StoredProc);
ExcelExport(3,3,0,StoredProc);
При втором вызове функции:
LastID передается правильно, но ошибка уже эта замучила.
java_91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL выборка из справочника. вычислительное поле VVkSoft БД в Delphi 4 06.02.2011 16:26
SQL-выборка! DIgorevich БД в Delphi 24 22.07.2010 18:29
ADOQuery + SQL-выборка по дате!!! $T@LKER БД в Delphi 14 19.04.2010 11:34
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
Выборка информации из 2 таблиц (SQL) frai БД в Delphi 10 10.11.2007 17:38