1 / 1 / 1
Регистрация: 07.12.2009
Сообщений: 99
|
||||||
1 | ||||||
Как через TMemo записывать данные в поля таблиц25.03.2011, 21:25. Показов 4703. Ответов 10
Метки нет (Все метки)
Пожалуйста помогите с новой формой "добавление новой книги". С компонентом Memo не разберусь как через него записыват данные в поля таблиц. Сами таблицы (на всякий случай) приведены ниже. Структура новой формы и что от неё требуется тоже приведено ниже.
Пожалуйста помогите очень надо. Сам пытался разобраться не получается, помогите. Используемые таблицы: Books (Form1.Table1 - для первой формы) BkId - идентификатор книги, тип Autoincrement, ключ таблицы Name - название книги, тип Alpha Number - количество экземпляров, тип Short Note - аннотация, тип Memo Вторичней индекс BkInd по полю Name Writers (Form1.Table3) WrId - идентификатор, тип Autoincrement, ключ таблицы Name - имя писателя, тип Alpha Biography - биография писателя, тип Memo Вторичней индекс WrInd по полю Name Authors (Form1.Table2) BkId - идентификатор книги, тип Long Integer, ключевой атрибут WrId - идентификатор писателя, тип Long Integer, ключевой атрибут Имеются компоненты: Edit1, Edit2, Memo1,Memo2, Table1, Table2, DataSourse1, DataSourse2, Button1. Название книги вводится в компонент Edit1, имена авторов в компонент Memo1(нужно вводить несколько авторов книги). Каждый автор начинается с новой строки (для перехода использовать Enter). Аннотацию надо занести в Memo2. По нажатию на кнопку Button1 обрабатывать следующее:
Пожалуйста помогите.
0
|
25.03.2011, 21:25 | |
Ответы с готовыми решениями:
10
Как можно сохранить данные в файле из TMemo в кодировке ASCII? Как поместить данные из столбцов нескольких таблиц одного файла mdb в поля одной формы? TMemo, как сделать не редактируемой часть поля. Форма: как сделать используя данные таблицы из поля со списком, данные второго поля заносятся автоматически |
69 / 69 / 43
Регистрация: 26.01.2011
Сообщений: 160
|
|
25.03.2011, 21:51 | 2 |
А что с Memo1.Text не работает?
1
|
1 / 1 / 1
Регистрация: 07.12.2009
Сообщений: 99
|
|
26.03.2011, 11:05 [ТС] | 3 |
Form1.Table1.FieldByName('Note').AsString:= Memo1.Text; // так не записывает, записывает "(Memo)" . Может потому что поле 'Note' в таблице имеет тип Memo?
0
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
|
|||||||||||
26.03.2011, 11:59 | 4 | ||||||||||
Krot_F,
Я попробую дать ВАм один совет, не будучи на 100% уверенным в его точности. Судя по всему Вы используете Парадокс и, насколько помнится, тип Memo в парадоксе аналог типу Blob. Если это так, то попробуйте загрузить значение в поле, используя объект TStream (точнее его наследников TMemoryStream или TFileStream). Делается это приблихительно так. Там, где это необходимо описывается переменная
1
|
1 / 1 / 1
Регистрация: 07.12.2009
Сообщений: 99
|
|
26.03.2011, 12:46 [ТС] | 5 |
Form1.Table1.FieldByName('Note').LoadFromStream(S); // пишет неопознаный идентификатор
0
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
|
||||||
26.03.2011, 13:07 | 6 | |||||
Krot_F,
Tabel1Note Это и будет в явном виде указатель на поле Note и тип у него скорее всего будет TMemo. После этого попробуйте
1
|
1 / 1 / 1
Регистрация: 07.12.2009
Сообщений: 99
|
|
27.03.2011, 14:43 [ТС] | 7 |
SAMZ
Извените меня за столь тупые вопросы, но можете пожалуйста написать поподробней(понимаю конечно куда ещё подробней, но всё же) как сделать поля набора явными (в плоть до того куда нажимать). Если речь идет про DataSet: Active - True, то оно уже было установлено. Извените про откровенную тупость. Не хотел пазориться, но деваться некуда. Вчера всё излазил не нашёл. Заранее большое спасибо.
0
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
|
||||||||||||||||
27.03.2011, 15:23 | 8 | |||||||||||||||
Самоуничижение - великий грех, позора тут никакого нет!
Вы таботаете с наборами данных: это объекты типа TTable или типа TQuery. У каждого набора данных реализованы естественные для такого рода объектов возможности работы с полями набора данных. Одна из таких возможностей - неявные ссылки на поля набора данных. Когда в программе встречается выражение типа
Выхода из этого ровно два (по крайней мере мне известны два) 1. Получить указатели на поля в явном виде. Делается не просто, а очень ПРОСТО! Дважды кликаете мышкой на объект набора данных на форме (у Вас это Tabel1). Появится редактор полей (не может не появиться). Далее в окошке редактора полей (оно по-видимому у Вас будет пустым) правой клавишей мыши вызываете контекстное меню и выбираете Add all fielfs (или Ctrl + F) и все поля набора станут явными. У Вас появится переменная Tabel1Note 2. Можно и немного иначе.
1
|
1 / 1 / 1
Регистрация: 07.12.2009
Сообщений: 99
|
|
27.03.2011, 17:07 [ТС] | 9 |
Спасибо большое всё понятно, но только при выборе из контекстного меню Add all fielfs выходит диалоговое окно с ошибкой:
Access violation at address 05DB8B38. Read of address 9112DA8B. Закрыв её и всё откомпилировав всё равно не пишет. Из-за этой ошибки и не идёт запись наверно
0
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
|
|
27.03.2011, 17:58 | 10 |
Странно! С таким не встречался ни разу. А объект какай, TTable. Все свойства задаются статически: путь к БД, имя таблицы? Эти свойства определены?
Попробуй на всякий случай второй способ! Но это танцы с бубном!
1
|
1 / 1 / 1
Регистрация: 07.12.2009
Сообщений: 99
|
|||||||||||
28.03.2011, 15:45 [ТС] | 11 | ||||||||||
SAMZ
Оказывается всё гораздо проще. Я по своей тупости при записи новой книги после добавления смотрел результат в компоненте DBGrid. Все поля вводились, а в поле Note постоянно вводилось "(MEMO)". Только сейчас дошло чтобы проверить вывод через отдельную мемо командой:
Но выводит результат не отдельной выделенной книги, а всего столбца "Note" Это потому-что всё созраняется в файл таблицы и выводит всё содержимое? Вводил через:
Извеняюсь, сам загнался и вас напряг.
0
|
28.03.2011, 15:45 | |
28.03.2011, 15:45 | |
Помогаю со студенческими работами здесь
11
Как считать данные из TMemo? Как записывать данные Как записывать числа через пробел, через scanner Привязка поля к листбоксу, которые черпает данные из двух таблиц Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |