Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Delphi. Удаление выделенной строки в StringGrid, связано с БД 
:(
    Опции темы
Solominka
Дата 18.12.2009, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.12.2009

Репутация: нет
Всего: нет



И так, вторая моя проблема.
Требовалось написать код для удаления выделенной строки из  компонента StringGrid. Я написала, и всё бы ничего, он работает, но возникла такая проблема.
Дело в том, что добавление записей в StringGrid идёт непосредственно из компонента DBGrid, связанного в свою очередь с Базой Данных. И удалять то удаляет... Но когда после удаления добавляешь что-то ещё, добавляется весьма криво. А когда пытаюсь записать данные из StringGrid-a в другую таблицу Базы Данных (DBGrid на форме 3), то выходит ошибка.
Как сделать так, чтобы выделенная строка в StringGrid удалялась без ущерба для дальнейших нужных действий?

Для пущей ясности ссыль на исходник: Исходник
PM MAIL   Вверх
chip_and_dayl
Дата 18.12.2009, 20:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Оно кажись и крыво удаляет, если добавить две записи, то оно вообще нифига не удаляет, а если добавить больше 2 или трех записей, то оно якобы удаляет последнюю


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Данкинг
Дата 18.12.2009, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Solominka @  18.12.2009,  19:33 Найти цитируемый пост)
добавление записей в StringGrid идёт непосредственно из компонента DBGrid

Смысл? И если всё же смысл в этом есть, то при чём здесь DBGrid? Данные в любом случае берутся не из него, а из источника, к нему подвязанного.

Цитата(Solominka @  18.12.2009,  19:33 Найти цитируемый пост)
из компонента DBGrid, связанного в свою очередь с Базой Данных

DBGrid не может быть связан с базой данных; он может быть связан с набором данных, т.е. таблицей.

Цитата(Solominka @  18.12.2009,  19:33 Найти цитируемый пост)
добавляется весьма криво

Цитата(Solominka @  18.12.2009,  19:33 Найти цитируемый пост)
то выходит ошибка.

 smile 

Цитата(Solominka @  18.12.2009,  19:33 Найти цитируемый пост)
Для пущей ясности ссыль на исходник:

Кстати, файлы до мегабайта можно прикрепить непосредственно к сообщению.

Добавлено через 1 минуту и 2 секунды
Вот chip_and_dayl, сразу понял, что к чему, а до меня не доходит; видимо, IQ ниже. smile 

В общем, сформулируй вопрос более конкретно.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Solominka
Дата 18.12.2009, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.12.2009

Репутация: нет
Всего: нет



Ой, да кстати... Что-то я и правда этого не заметила (((
В общем как мне написать ТАК, чтобы работало так как надо?
PM MAIL   Вверх
chip_and_dayl
Дата 18.12.2009, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Данкинг
Я исходник скачалsmile Решил полюбоваться


СтрингГрид там, чтобы с общей базы выбрать несколько строк (заказ комплектующих)

Добавлено через 2 минуты и 26 секунд
Цитата(Solominka @ 18.12.2009,  20:22)
Ой, да кстати... Что-то я и правда этого не заметила (((
В общем как мне написать ТАК, чтобы работало так как надо?

Изобретать и копировать не буду, если в гугл ввести stringgrid в delphi удаление строк, то много готовых написаных ф-цийsmile Выбираем любую

Добавлено через 3 минуты и 51 секунду
Не удержался и скопировал smile 
Код

procedure SGDeleteRow(SG: TStringGrid; RowToDelete: Integer);
var
  i: Integer;
begin
  with SG do
  begin
    if (RowToDelete >= 0) and (RowToDelete < RowCount) then
    begin
      for i := RowToDelete to RowCount - 2 do
        Rows[i].Assign(Rows[i + 1]);
      RowCount := RowCount - 1;
    end;
  end;
end;



--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Данкинг
Дата 18.12.2009, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



chip_and_dayl, я тоже скачал, но Парадокс юзать не умею - никогда с ним не работал - потому прога не запускается. К тому же там путь к базе прописан чётко в корне диска C:, которого у меня нет. smile 

Цитата(Solominka @  18.12.2009,  20:22 Найти цитируемый пост)
В общем как мне написать ТАК, чтобы работало так как надо? 

 smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
chip_and_dayl
Дата 18.12.2009, 20:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Цитата(Данкинг @  18.12.2009,  20:28 Найти цитируемый пост)
я тоже скачал, но Парадокс юзать не умею - никогда с ним не работал

С ним работать и не нужно, на его нужно смотреть или просто вспоминать о нем :)

Я тут вывел правило, если на форуме появляются упоминания о Парадоксе, значить сессия на носу :)


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Solominka
Дата 18.12.2009, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.12.2009

Репутация: нет
Всего: нет



chip_and_dayl, я эти процедуры пробовала и ни с одной из них программа не работает...
И здесь процедура SGDeleteRow тоже не работает... Жалуется почти на все слова...
PM MAIL   Вверх
chip_and_dayl
Дата 18.12.2009, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



ммм..у меня все работает.

В кнопке Удаления я поместил  SGDeleteRow(StringGrid1, номер строки);
Ну и само собой скопировал процедуру в код

Осталось только узнать, как считать строку где стоит указатель и передавать соответствующий номер

Сча гляну, может и отправлю исходник О:)


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Solominka
Дата 18.12.2009, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.12.2009

Репутация: нет
Всего: нет



А у меня что-то ничего((( 
Я наверное не те вещи меняю... И не там где надо (((
Исходник - было бы конечно здорово...
PM MAIL   Вверх
chip_and_dayl
Дата 18.12.2009, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Вот код, там отдельно кнопка Удалить2

Присоединённый файл ( Кол-во скачиваний: 38 )
Присоединённый файл  BD.rar 394,20 Kb


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Данкинг
Дата 18.12.2009, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(chip_and_dayl @  18.12.2009,  20:33 Найти цитируемый пост)
Я тут вывел правило, если на форуме появляются упоминания о Парадоксе, значить сессия на носу smile 

Неужели кроме ничего в ВУЗах рассказывать не про что? smile 
Впрочем, у меня образование гуманитарное, я вообще не знаю, как в ВУЗах программирование преподают. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
chip_and_dayl
Дата 18.12.2009, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



По поводу вставки после удаления строк. Там у тебя глобальная И, которая только увеличивается. При удаление ее нужно уменьшать И=И-1 или dec(i)

Добавлено @ 20:51
Данкинг
Наверно нечего или точнее некому 

З. Ы. Интересно, шоколадку за помощь получу О:) З.Ы. З.Ы. Люблю свиточ молочный :)

Это сообщение отредактировал(а) chip_and_dayl - 18.12.2009, 20:52


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Solominka
Дата 18.12.2009, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.12.2009

Репутация: нет
Всего: нет



chip_and_dayl , после Вашего удаления так же, как и после моего, нельза нормально добавить содержимое стринг грида в таблицу Zakaz формы 3... Выдаётся ошибка... Попробуйте после удаления нажать кнопку "заказать"...  А надо чтобы всё было нормально... :(

Шоколадку бы я вам отдала, но находитесь вы к сожалению далековато (в другой стране)... А так, для хороших людей ничего не жалко smile

Данкинг , вам крупно повезло... Нам его вообще НИКАК не предподают... Тупо дают задания и методички к лабам... в лучшем случае - пару корявых электронных книг, в худшем - вообще ничего не дают...

Это сообщение отредактировал(а) Solominka - 18.12.2009, 21:04
PM MAIL   Вверх
chip_and_dayl
Дата 18.12.2009, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Solominka
Конечно выскакивает ошибка. В кнопке удаления 2, которую я добавил нужно добавить такую строчку w=w-1

Добавлено через 1 минуту и 49 секунд
А вообще я не пойму зачем переменная i и w, они кажись обозначают одно и тоже. Суть проблемы в том, что когда ты добавляешь строку одну, то и=1 и в=1, если добавишь вторую строку и=2 и в=2, но если ты удаляешь строку ты ничего не делала,  вот  оно в базу записывало пустые

Добавлено через 4 минуты и 40 секунд
а также добавь i=i-1 после w=w-1


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1404 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.