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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2008, 17:16   #11
ivp88
Пользователь
 
Регистрация: 14.02.2007
Сообщений: 28
Смех

Всем спасибо кто помог разобраться с моей проблемой ........
ivp88 вне форума Ответить с цитированием
Старый 10.01.2008, 20:28   #12
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
Радость

Цитата:
Сообщение от Andrei Посмотреть сообщение
Что касается метода InsertRecord, то там все просто.

При его выполнении в таблицу вставляется новая запись, заполняется значениями из массива, переданного в качестве параметра, и выполняется метод Post.

Значения в массиве должны следовать в том же порядке, в каком определены поля в вашем наборе данных и тип значения должен соответствовать типу поля. Если значение поля не определено, то в качестве парметра передается значение null. Если значений в массиве меньше, чем полей в наборе данных, то остальным полям присваивается значение null.

При вставке записи ее положение в таблице определяется одним из следующих способов:

- Для индексированных таблиц Paradox и dBASE запись вставляется в позицию, соответствующую текущему индексу.

- Для неиндексированных таблиц Paradox запись вставляется в текущую позицию курсора.

- Для неиндексированных таблиц dBASE, FoxPro и Acess новая запись добавляется в конец таблицы.

Только что вставленная запись становится активной.

Допустим поля в Table2 определены в следующем порядке: ID_Vozvr, Date_Vozvr, InvenNom, NazvKn, ID_Chit, ID_Bibl и их структура полностью соответствует структуре Table3.
Поэтому мы можем отказаться от приведения значений из Table2 к формату Table3 (ваше Table2.FieldByName('InvenNom').AsSt ring) и обратиться непосредственно к значению поля следующим образом:

Table2['InvenNom']

В конечном случае это будет выглядеть примерно так:

Table3.InsertRecord([Table2['ID_Vidachi'],null,Table2['InvenNom'],Table2['NazvKn'],Table2.['ID_Chit'],Table2['ID_Bibl']]);

И все же я настаиваю на использовании запросов!!!!
ві так заостряете внимание на индексах, но ведь неправильное обращение с ними может привести к замедлению работі базі.
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Pitbull вне форума Ответить с цитированием
Старый 11.01.2008, 15:45   #13
Andrei
Форумчанин
 
Регистрация: 20.06.2007
Сообщений: 270
По умолчанию

Цитата:
Сообщение от Pitbull Посмотреть сообщение
И все же я настаиваю на использовании запросов!!!!
Дело вкуса IMHO, с локальными базами, особенно Pradox, BDE работает намного быстрее.


Цитата:
ві так заостряете внимание на индексах, но ведь неправильное обращение с ними может привести к замедлению работі базі.
Я всего лишь процитировал Help Delphi 7 для метода InsertRecod в собственном переводе и со своими комментариями.

Акценты на работе с индексами расставил не я, а разработчики Delphi и учитывать эти особенности при работе с локальными таблицами разработчику просто необходимо. Например, если позиция вновь вставляемой записи окажется в начале таблицы, то программе придется вставить запись в нужное место и переписать заново все записи, идущие после нее. Представляете, что может случиться, если файл таблицы нехилых размеров и, к тому же, постоянно переписывается.

Раньше я работал с таблицами FoxPro. Там вопросы сохранности данных, IMHO, продуманы лучше чем в Paradox или Acess. Например:
- Они не ипользуют Insert, а только Append. И новые записи всегда дописываются в конец файла.
- Индексы вынесены в отдельный файл и для каждого индекса можно создать свой собственный .IDX файл, если нужно. Потому как файлы индексов переписываюся часто и по многу раз и вследствии этого часто же и слетают. А заново переиндексировать таблицу, в случае чего, проблем не составляет.

PS: Метод InsertRecord, так же как метод Insert является общим для всех датасетов, в том числе и с использованием SQL. В хелпе есть еще один пунктик, который звучит примерно так:

- Позиция вновь вставляемой записи в базах данных SQL зависит от применяемой SQL. Индексы обновляются автоматически.
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько?

(с) Библия. Вольный перевод с древнееврейского.

Последний раз редактировалось Alex21; 15.01.2008 в 13:20.
Andrei вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос данных из одной книги со многих листов в другую gavrylyuk Microsoft Office Excel 34 20.07.2008 21:39
пересылка данных из одной сети в другую AIst Работа с сетью в Delphi 5 08.07.2008 23:50
Проблема с сохранением данных в другую таблицу HAMMAN Помощь студентам 1 26.05.2008 08:30
Копирование данных из одной таблицы в другую! фЁдОр БД в Delphi 18 06.01.2008 19:27
Перенос EXE на другую машину tihon_65 Общие вопросы Delphi 12 21.02.2007 15:00