Показать сообщение отдельно
  #4  
Старый 01.07.2009, 17:42
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

В догонку ...
И, вероятно, данные добавлять лучше с использованием TQuery, а не TTable.

Что-то вроде :
Код:
function Insert_Record_in_Table(an,tn : string; ListData : TStrings; YesParamCheck : boolean = false) : boolean;
//Вставить строку в таблицу Б.Д.  (без MEMO-полей)
//an - Alias BDE-5
//tn - Имя таблицы базы данных
//ListData - значения полей в формате: ИмяПоля=ЗначениеПоля
//           (если тип поля - строка или дата, то значения должны быть окаймлены одинарными или двойными кавычками)
//YesParamCheck - значение соотв. свойства ParamCheck компонента TQuery
//Возвращаемое значение - true, если успешно
Var
  Yes : byte;
  i : integer;
  Sx,sFN,sVal : string;
  Q : TQuery;
begin
  Result:=FALSE;
  an:=trim(an);
  tn:=trim(tn);
  if ListData<>NIL then begin
     if ListData.Count>0 then begin
        if (length(tn)>0) then begin
           sFN:='';
           sVal:='';
           for i:=0 to (ListData.Count-1) do
            begin
              Sx:=trim(ListData.NAMES[i]);
              if length(Sx)>0 then begin
                 sFN:=sFN+Sx;
                 Sx:=trim(ListData.VALUES[Sx]);
                 sVal:=sVal+Sx;
                 if i<(ListData.Count-1) then begin
                    sFN  := sFN+',';
                    sVal := sVal+',';
                 end;
              end;
           end;
           Yes := 0;
           Q:=TQuery.Create(NIL);
           TRY
             Q.DatabaseName:=an;
             Q.ParamCheck:=YesParamCheck; //!!!
             Q.SQL.ADD('INSERT INTO '+tn);
             Q.SQL.Add('(');
             Q.SQL.Add(sFN);
             Q.SQL.Add(')');
             Q.SQL.Add('VALUES');
             Q.SQL.Add('(');
             Q.SQL.Add(sVal);
             Q.SQL.Add(')');
             Q.ExecSQL;
             Yes := 1;
             Result:=TRUE;
           FINALLY
             if Q<>NIL then begin
                if Yes<=0 then begin
                   ShowMessage('Error! '+#10+Q.SQL.TEXT);
                end;
                Query_Clear(Q);
             end;
           END;
        end;
     end;
  end;
end;

Ответить с цитированием