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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2014, 14:05   #11
Evgen7
Пользователь
 
Регистрация: 13.02.2014
Сообщений: 19
По умолчанию

Ошибка.(
Project .exe raised exception class EListError with message 'List indexout of bounds (3)'.
И добавляет запись в первом же DBGrid'е

При нажатии выводит ошибку такого плана:
Project...exe raised exception class ElistEditor with message 'List index out of bounds(3)'
И добавляет в первый же на котором выбираю грид впереди первой записи.

procedure TForm3.SpeedButton1Click(Sender: TObject);
var i,FieldsCount:integer;
begin
with DBGrid1.DataSource.DataSet do begin
insert;
for i:=0 to FieldsCount-1 do
Fields[i].value:=Form2.DBGrid1.DataSource.Da taSet. Fields[i].value;
end;


Может в коде что не так?

Последний раз редактировалось Stilet; 16.02.2014 в 16:32.
Evgen7 вне форума Ответить с цитированием
Старый 16.02.2014, 14:28   #12
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

Цитата:
Может в коде что не так?
................................... .........

судя из ошибки у тебя в одной DataSet-e(из которого добавляешь) полей больше чем в другом DataSet-e(в который добавляешь)

Вопрос: в твоём проекте DataModule есть?
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 16.02.2014, 14:41   #13
Evgen7
Пользователь
 
Регистрация: 13.02.2014
Сообщений: 19
По умолчанию

Даже не представляю, что это за компонент, DataModule.
Второй грид, в который добавляешь. он пуст. но запрос, кажется не верен
в соурсе такой.
SELECT Класс, Наименование, Единицы_измерения AS [Ед_изм],
Количество AS [Кол-во],Срок_носки
FROM Clothes
where Класс="ytfytgu"

Мне надо чтобы он был пустой, я же в него добавляю.Придерживаясь компонентам
DBLookupComboBox.
Evgen7 вне форума Ответить с цитированием
Старый 16.02.2014, 14:52   #14
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
судя из ошибки у тебя в одной DataSet-e(из которого добавляешь) полей больше чем в другом DataSet-e(в который добавляешь)
Dark_Spirit, простите, но дело здесь вовсе не в полях, а в записях. Поля-это колонки таблицы. Они могут прекрасно существовать и в пустой таблице.
Evgen7, для того, что бы перенести данные, в принимающей таблице должна быть создана новая строка. Перед тем как перенести данные в другой DBGrid у его DataSet необходимо вызвать метод Insert.
Цитата:
По поводу методов Insert и Delete.Можно поподробнее.Не могу пока в инете нарыть(.
Материалов в сети полно. Учитесь гуглить.
Вот, например, официальная документация:
Insert
Delete
Streletz вне форума Ответить с цитированием
Старый 16.02.2014, 15:08   #15
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

Цитата:
Dark_Spirit, простите
прощаю)))))

но спешу не согласится. ошибка 'List index out of bounds(3)' возникаем вот в этом коде:
Код:
procedure TForm3.SpeedButton1Click(Sender: TObject);
var i,FieldsCount:integer;
begin
with DBGrid1.DataSource.DataSet do begin
insert;
for i:=0 to FieldsCount-1 do
Fields[i].value:=Form2.DBGrid1.DataSource.Da taSet. Fields[i].value;
end;
а тут, как мы видим, перебираются поля разных DataSet-ов, а не сами записи
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 16.02.2014, 15:23   #16
Evgen7
Пользователь
 
Регистрация: 13.02.2014
Сообщений: 19
По умолчанию

Ребята, смотрите.У меня в гриде, в котором выбираю три поля.А в который добавляется больше полей(+ еще 2)Вот.Так я в эти поля(два поля) хотел 'тыкать' и редактировать прямо в гриде, это думаю возможно, а не добавлять откуда-то.Но при этом они еще и в базу должны забиваться.Я в делфи ничего серьезного не делал.Поэтому плохо разбираюсь.Сори.
Evgen7 вне форума Ответить с цитированием
Старый 16.02.2014, 15:39   #17
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

Цитата:
Ребята, смотрите.У меня в гриде, в котором выбираю три поля.А в который добавляется больше полей(+ еще 2)Вот.Так я в эти поля(два поля) хотел 'тыкать' и редактировать прямо в гриде, это думаю возможно, а не добавлять откуда-то.
ну да возможно. просто "тыкни", раза 2, и редактируй
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 16.02.2014, 15:44   #18
Evgen7
Пользователь
 
Регистрация: 13.02.2014
Сообщений: 19
По умолчанию

До редактирования пока не дошло.У меня спидбатон.Пойдет на добавление?
Evgen7 вне форума Ответить с цитированием
Старый 16.02.2014, 16:04   #19
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

Цитата:
До редактирования пока не дошло.У меня спидбатон.Пойдет на добавление?
слушай , я вот уже сам запутался чего ты хочешь....
для добавления подойдёт даже CheckBox, всё зависит от того что ты напишешь на событие OnClick.

попробуем пошагово разобраться:
1. и так у тебя в базе есть какие-то таблицы(1_таблица, 2_таблица), соответственно в таблицах поля: для 1_таблица(поле_1, поле_2, поле_3); для 2_таблица(поле_1, поле_2, поле_3, поле_4, поле_5).
2. судя из того что ты писал в своих постах - нужно из 1_таблица вставить данные в 2_таблица и заполнить "руками" оставшиеся незаполненные поля (надеюсь правильно понял).
3. для копирования данных из 1_таблица в 2_таблица, код тебе уже приводили
4. оставшиеся 2 поля(в 2_таблица) можно заполнить руками, это просто.
5. постарайся мыслить, не компонентами с которыми ты работаешь, а наборами данных(DataSet-ы), компоненты служат для отображения этих же данных. тогда тебе будет проще самому понимать что делаешь

это для ознакомления: http://www.delphiplus.org/programoro...lphi7_135.html
Тяжело быть бестолковым.....

Последний раз редактировалось Dark_Spirit; 16.02.2014 в 16:07.
Dark_Spirit вне форума Ответить с цитированием
Старый 16.02.2014, 16:31   #20
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
У меня в гриде, в котором выбираю три поля.А в который добавляется больше полей(+ еще 2)Вот
Тогда совсем непонятно из-за чего возникает эта ошибка и не только это. Простите, но по Вашим постам совершенно невозможно разобраться что, откуда и куда копируется.
Изначально в посте #3 Вы говорили только про 2 формы (Form1 и Form2), теперь в посте #9 появилась ещё 3я форма (Form3). Как компоненты, которые расположены на ней, тот же DBGrid, связаны с БД и связаны ли они с ней вообще? Где теперь расположен DBGrid в который производится копирование?
Простите, я не хочу Вас обидеть, но по моему Вы что-то не договариваете. Опишите проблему целиком. Что, откуда, куда необходимо скопировать, где расположены и как соединены с БД то откуда и то куда нужно скопировать.
В крайнем случае, выложите проект. Возможно, что его изучение поможет точно понять то, что Вам самому сложно объяснить на словах.
Streletz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление новой записи в DBGrid из 2х DBLookupComboBox ta_n_u_s_h_ka БД в Delphi 0 05.06.2012 18:21
Удаление записи из DBGrid через запрос manula БД в Delphi 1 23.05.2012 10:48
Добавление записи через DBGrid или Edit. IgoreKMaN БД в Delphi 1 01.05.2012 11:24
Добавление записи в DBGrid c помощью кода Droid БД в Delphi 12 27.06.2009 16:07
добавление и удаление столбцов в DBGrid по нажатию кнопки MargoNik БД в Delphi 6 27.04.2009 15:44