На главную Наши проекты:
Журнал   ·   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_
Страницы: (3) [1] 2 3  все  ( Перейти к последнему сообщению )  
> Добавление и изменение данных в , таблицах
    АКСЕСС/АДО
    база+проект прилагаются

    Есть 3 таблицы. Их структура:
    Таблица Организации
    Id_organizacii (счетчик)
    Nazvanie_organizacii (текстовый)

    Таблица Состав организации
    Id_organizacii (числовой)
    Id_sostava (счетчик)
    Name (текстовый)
    Surname (текстовый)

    Таблица Данные о составе
    id_data (счетчик)
    Id_sostava (числовой)
    Telefon

    Таблицы Организации и Состав организации связаны по полю Id_organizacii как
    1 ко многим, а таблица Состав организации связаны с таблицей Данные о составе по
    полю Id_sostava

    На форме у меня есть такая структура отображающая связь таблиц
    В DBLookupComboBox1 у меня отображается Названия организаций
    (берет данные из таблицы Организации).
    Выбрав из списка DBLookupComboBox1 название организации (к примеру ФСБ) чуть ниже у меня
    отображается в DBGrid1 состав данной организации. В ADOTable2 свойстве MasterSource у меня
    прописанDataSource1 а в свойстве MasterFields у меня прописан Id_organizacii.
    Связь по такому же принципу у меня и между данными из DBGrid1 и DBGrid2(в нем отображаются записи из
    таблицы Данные о составе) - т.е. в ADOTable3 в свойстве MasterSource у меня
    прописанDataSource2 а в свойстве MasterFields у меня прописан Id_sostava.

    Есть на этой же форме кнопки Добавить запись в Таблицу Организации,
    Добавить запись в Таблицу Состав организации и Добавить запись в Таблицу Данные о составе
    При нажатии на эти кнопки появляются соответствующие формы в которых есть
    Edit1(вопрос: а может использовать DBEdit1) для вписания в него новой записи в соответствющие таблицы.
    А также кнопки изменить записи

    Как заносить данные вписанные в Edit1 в соответствующий DBLookupComboBox1 или DBGrid'ы
    И как мне при нажатии кнопки Изменить открывать соответствующую формы в которой в
    Edit1 будет редактировать выделенная в DBLookupComboBox1 или DBGrid'ах запись и сохраняться изменения
    Прикреплённый файлПрикреплённый файл123.rar (29.12 Кбайт, скачиваний: 113)
      В DBLookupComboBox1 и DBGrid'ы ничего заносить не надо! они ведь ОТОБРАЖАЮТ данные, хранящиеся в таблице БД => тебе нужно заносить данные в соответствующую таблицу Access.
      ExpandedWrap disabled
        Table1.Append; //или Table1.Edit если изменение
        Table1.FieldByName('Name').Value:=Edit1.Text;
        Table1.Post;

      До открытия соответствуюшей формы присваиваешь значение в Edit1:
      ExpandedWrap disabled
        Form1.Edit1.Text:=Table1.Fields.Fields[1].AsString;
        Form1.Show;
        ExpandedWrap disabled
          ADOTable.Edit;
          ADOTable.FieldByName('Name').AsValue := Edit1.Text;
          ADOTable.FieldByName('Surname').AsValue := Edit2.Text;
          ADOTable.Post;

        либо можешь в самом гриде редактировать данные или использовать DBNavigator
          щас буду пробовать :yes:
            Спасибо - все получилось.
            Возник вопрос: в форме добавления Организации после нажатия кнопки ОК (добавляет запись в Организации)
            На кнопке я дописываю нижележащий код, чтобы добавленная организация появилась сразу в DBlookupcombobox1
            и была видна
            ExpandedWrap disabled
              form1.DBlookupcombobox1.KeyValue:=form1.ADOTable1Id_organizacii.Value;

            Но если я это пишу на Редактирование Организации, то нажав на кнопку отредактировать запись изменяется
            а в DBlookupcombobox1 остается старый вариант и приходится сначала выбрать из DBlookupcombobox1
            какую-нить другую организацию чтобы потом можно было в DBlookupcombobox1 выбрать
            отредактированную запись.
            И как при запуске программы чтобы в DBlookupcombobox1 уже была выбрана 1-ая запись из списка
            (т.е. чтобы DBlookupcombobox1 первоначально не был пуст)
            Сообщение отредактировано: кент -
              Чтобы выбиралась первая запись:
              ExpandedWrap disabled
                DBlookupСombobox1.ItemIndex:=0;
              Чтобы выбрать отредактированную запись можно попробовать программно выбрать другую запись, а затем опять эту же: (не знаю насколько это правильно!.. :whistle: )
              ExpandedWrap disabled
                tmp:=DBlookupСombobox1.ItemIndex; //этот
                DBlookupСombobox1.ItemIndex:=0;   // код
                DBlookupСombobox1.ItemIndex:=tmp; //я не проверял

              А вообще я использую обычные компоненты с вкладки Standart, а то эти DB компоненты сложно контролировать (не знаю насколько это правильно!.. :whistle: )
                а разве у DBlookupСombobox есть свойство ItemIndex???
                пишет ошибку
                Цитата

                [Error] Unit.pas(165): Undeclared identifier: 'ItemIndex'
                  Упс... :lol: Это у DBСombobox есть... :yes: Должно и DBlookupСombobox что-то похожее быть... :wacko:

                  Добавлено
                  Точно не могу сказать, но свойство ListFieldIndex не подходит в замену ItemIndex? :blink:
                    Чтобы выбиралась первая запись я сделал так:
                    ExpandedWrap disabled
                      DBLookupComboBox1.KeyValue:=1;


                    теперь осталось только
                    Цитата кент @
                    Но если я это пишу на Редактирование Организации, то нажав на кнопку отредактировать запись изменяется
                    а в DBlookupcombobox1 остается старый вариант и приходится сначала выбрать из DBlookupcombobox1
                    какую-нить другую организацию чтобы потом можно было в DBlookupcombobox1 выбрать
                    отредактированную запись.

                    щас попробую по этой технологии
                    Цитата Creat!ve @
                    tmp:=DBlookupСombobox1.ItemIndex; //этот
                    DBlookupСombobox1.ItemIndex:=0; // код
                    DBlookupСombobox1.ItemIndex:=tmp; //я не проверял
                      Если что подожди кого-нибудь из более опытных! Сегодня выходной, они, наверное, все спят еще :D ...
                        ExpandedWrap disabled
                          temp:=mainform.DBLookupComboBox1.KeyValue;
                          form1.DBLookupComboBox1.KeyValue:=0;
                          form1.DBLookupComboBox1.KeyValue:=temp;

                        сработало :yes:
                          Есть в БД таблица с типом поля Memo(ведь в нем можно хранить картинки???). И я хочу добавить в него какую-нибудь картинку
                          Для начала я открываю диалоговое окно для добавления картинки
                          ExpandedWrap disabled
                            ...
                            If OpenDialog1.Execute then
                            ...

                          а как дальше его добавлять в поле Kartinka???
                            Memo хранит Lengthy text or combinations of text and numbers (длинный текст или комбинации текста и чисел)...
                            А вот OLE Object может хранить объект (such as a Microsoft Excel spreadsheet, a Microsoft Word document, graphics, sounds, or other binary data), наверное, может хранить и картинки, а как их туда сохранять... мне тоже стало интересно! :D
                              Creat!ve
                              кент
                              графические и мультимедийные данные (и не только) храняться в BLOB-field (блоб-полях)...
                              записать в них данные и прочитать их оттуда можно так
                              ExpandedWrap disabled
                                Table.Edit;
                                Table.SaveToBlobField('Graphics.bmp');
                                Table.Post;

                              ExpandedWrap disabled
                                Table.LoadFromBlobField('Graphics.bmp');
                                dron-s,
                                пишу вот так
                                ExpandedWrap disabled
                                  form1.AdoTable3.Append;
                                  form1.AdoTable3.FieldByName('Picture').SaveToBlobField('Graphics.bmp');
                                  form1.AdoTable3.Post;

                                ругается на SaveToBlobField - типа нет такого свойства
                                у поля Picture тип OLE Object
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) [1] 2 3  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0508 ]   [ 16 queries used ]   [ Generated: 19.03.24, 11:40 GMT ]