На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Обязательно указание:
1) типа базы данных (Paradox/Oracle/Interbase и т.п.)
2) способа доступа к базе данных (ODBC/ADO/DAO/BDE и т.п.)
Например: Paradox/BDE, MS Access/ADO

Наиболее часто задаваемые вопросы:
Базы даных для начинающих. Первые шаги. Понятие о BDE.
Переход на клиент-сервер и начала ADO
Приёмы работы с BLOB (OLE/Memo) полями
Запросы и параметры или как избавиться от многих проблем. Проблемы с датами в запросах.
Нужели мне нужно устанавливать BDE? (или почему не работает программа на другом компьютере)
Модераторы: Bas, Rouse_
  
> Перемещение строки из базы1 в базу2
    Сразу грю - в дельфи я полный чайник! В нашем <skip> универе дают базы данных, совершенно не дав при этом дельфи и при этом ещё и курсовую делать заставляют.
    Сам вопрос: на form2 table1 открыта база данных: необходим код, который по нажатию кнопки перемещает выделеную строку в другую базу на form7 table1 при этом программа должна проверить есть ли подобная строка во второй базе данных, проверка должна осуществлятться по двум полям `name` & `vendor`. Используеться БД формата dBASE IV+Delphi6.
      [курсовую делать заставляют.]
      За такое в войну растреливали.


      procedure TForm1.Label11Click(Sender: TObject);
      var
      i:integer;
      begin
      Form7.table1.Edit;
      for i:=0 to Form1.DataSet.FieldCount do
      begin
      Form7.table1.FieldByName(Form1.tableXXXXX.Fields[i].FieldName).AsString:=Form1.tableXXXXX.Fields[i].AsString;
      end;
      Form7.table1.Post;
      end;



      Осуществляет поиск записи в наборе данных
      Класс TDataSet

      Определение
      type
       TLocateOption = (loCaseInsensitive, loPartialKey);
       TLocateOptions = set of TLocateOption;

      function Locate(const KeyFields: string;
                     const KeyValues: Variant;
                     Options: TLocateOptions): Boolean;

      Описание
      Метод Locate является, наряду с Lookup, SetKey и FindKey, методом поиска записи в наборе данных.

      В качестве первого параметра KeyFields передается строка, содержащая список ключевых полей, по которым осуществляется поиск. В качестве второго параметра передается KeyValues - массив ключевых значений. Ищется запись, в которой значения полей KeyFields совпадают с заданными в KeyValues. Третий параметр Options является множеством опций, элементами которого могут быть loCaseInsensitive - нечувствительность поиска к регистру, в котором введены символы, и loPartialKey - допустимость частичного совпадения. Метод возвращает false, если искомая запись не найдена.

      Метод Locate отличается от методов SetKey и FindKey прежде всего отсутствием необходимости индексировать определенным образом набор данных. В силу этого Locate более прост и универсален. Кроме того метод Locate, в отличие от SetKey и FindKey, применим к компонентам Microsoft ActiveX Data Objects (ADO) - например, ADOTable и ADOQuery, а также к компонентам InterBase Express (IBX) - например, IBTable и IBQuery.

      Метод Locate не требует индексации набора данных. Но если набор данных индексирован по полям KeyFields, то поиск производится быстрее.


      При поиске по нескольким полям можно воспользоваться функцией VarArrayOf, которая формирует тип Variant из задаваемого ей массива параметров любого типа. Например (см. примеры):


      Table1.Locate('Dep;Fam', VarArrayOf([EDep.Text, EFam.Text]), [loCaseInsensitive,loPartialKey]);


      Добавлено в
      ой ощибся .
      так правельнее
      for i:=0 to (Form1.DataSet.FieldCount-1) do

      Если не выйдет то
      for i:=1 to Form1.DataSet.FieldCount do
        вот и поиск

        if not Table1.Locate('name;vendor',table1.FieldByName('name').asstring+';'+table1.FieldByName('vendor').asstring,[loCaseInsensitive,loPartialKey])
        then
        ShowMessage('Не найдено Мля (дайте *****л*й разработчику)')
        else
        ShowMessage(' найдено но серавно дайте *** разработчику ');

          Цитата (pigas @ 3.12.03, 22:39)
          Form7.table1.Edit;

          Правильней будет
          Form7.table1.Insert;
          или
          Form7.table1.Append;
            Всем спасибо, вроде разобрался.
              Цитата (Bas @ 4.12.03, 06:43)
              Цитата (pigas @ 3.12.03, 22:39)
              Form7.table1.Edit;

              Правильней будет
              Form7.table1.Insert;
              или
              Form7.table1.Append;

              да твоя правда ....
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0268 ]   [ 16 queries used ]   [ Generated: 14.05.24, 22:13 GMT ]