Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DBGrid добавление запись в базу через таблицу 
V
    Опции темы
sssssss7
Дата 28.6.2009, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



MySQL--->ADOQuery --> DBGrid


Попробую точнее сформулировать задачу на простом примере:
есть 4 табл.

1. таб. stud (табл. студенты с полями id и fio (Ф.И.О))

id_stud,  fio
1             Иванов Иван Иваныч
2             Сидоров Сидор Сидорович
3             Петров Петр Петрович

2. таб. ocenka (табл. с видами оценки)

id_ocenka, ocenka
1                удов.
2                хор.
3                отл.

3. таб. predmet (таб. с видами предметов)

id_predmet,  predmet
1                   Математика
2                   Русский язык
3                  Литература

4. таб. jurnal (таб. обьеденяющая все остальные таб.) 

id_jurnal, id_stud, id_predmet, id_ocenka
1              1             1                  1 
2              1              2

Как видно из примера выше у Иванова нет оценки по русскому языку..

Вопрос.. я вывожу в dbgrid следующий запрос 
Код

  SELECT
    jurnal.id_jurnal,
    ocenka.id_ocenka,
    predmet.predmet,
    ocenka.ocenka
  FROM
    jurnal  left join ocenka on  ocenka.id_ocenka = jurnal.id_ocenka , stud, predmet
  where
    jurnal.id_stud = stud.id_stud and
    jurnal.id_predmet = predmet.id_predmet and
    stud.fio = 'Иванов Иван Иванович' 


в dbgridе появляются все предметы Иванова и их оценки.. 

Как мне добавить в dbgrid оценку Иванову например удв и чтоб она сохранилась в таблице jurnal по id из таблице ocenka или изменить существующию оценку...??? выскакивают ошибки: не удается найти строку для обновления. Некоторые значения могли быть изменены со временнем его чтения..

Это сообщение отредактировал(а) sssssss7 - 28.6.2009, 16:38
PM MAIL   Вверх
Romikgy
Дата 28.6.2009, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



гы похожую тему поднимали  раньше , но на аксессе ))
запрос типа select не может менять даные как и добавлять ,
для изменения записи нужно юзать update для вставки нового запрос типа insert
имхо менять можно если открываешь таблицу , типа ADOTable...


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
sssssss7
Дата 28.6.2009, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Romikgy @ 28.6.2009,  22:17)
запрос типа select не может менять даные как и добавлять

 smile  ты меня поставил в тупик


Это сообщение отредактировал(а) sssssss7 - 28.6.2009, 23:00
PM MAIL   Вверх
Данкинг
Дата 28.6.2009, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Romikgy @  28.6.2009,  23:17 Найти цитируемый пост)
запрос типа select не может менять даные как и добавлять ,

Вау! smile Как же так? smile  smile  smile  smile 

Цитата(sssssss7 @  28.6.2009,  23:56 Найти цитируемый пост)
 ты меня поставил в тупик

Чем конкретно? Добавить можно так, если без запросов:
Код

AdoTable.Edit;
AdoTable.FieldValues['ocenka']:='неуд';
AdoTable.Post;

Вот мы в текущей записи AdoTable поставили в поле 'ocenka' значение 'неуд'.


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


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Данкинг @  28.6.2009,  22:07 Найти цитируемый пост)
Вау!  Как же так?        

и в чем я неправ ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Данкинг
Дата 29.6.2009, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Romikgy @  29.6.2009,  00:52 Найти цитируемый пост)
и в чем я неправ ? 

Я не говорю, что ты не прав, это я типа прикалываюсь над незнаниям (?) вроде как простейших операторов SQL. smile Считай неудачной шуткой, но в любом случае не в твой адрес. smile 

Это сообщение отредактировал(а) Данкинг - 29.6.2009, 00:19


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


Шустрый
*


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

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



Цитата(Данкинг @ 28.6.2009,  23:07)
Цитата(Romikgy @  28.6.2009,  23:17 Найти цитируемый пост)
запрос типа select не может менять даные как и добавлять ,

Вау! smile Как же так? smile  smile  smile  smile 

Цитата(sssssss7 @  28.6.2009,  23:56 Найти цитируемый пост)
 ты меня поставил в тупик

Чем конкретно? Добавить можно так, если без запросов:
Код

AdoTable.Edit;
AdoTable.FieldValues['ocenka']:='неуд';
AdoTable.Post;

Вот мы в текущей записи AdoTable поставили в поле 'ocenka' значение 'неуд'.

почему меня поставили в тупик ответом ))) потому что вроде все подробно описал а мне отвечают что запрос типа select не может менять даные как и добавлять ... я разве спрашивал может ли select добавлять или менять  smile ... причем тут 
AdoTable.Edit;
AdoTable.FieldValues['ocenka']:='неуд';
AdoTable.Post;
это и так все понятно...
я пользую MySQL--->ADOQuery --> DataSource-->!!!!!! DBGrid !!!!! и вопрос был как мне добавить в ячейку dbgrid (т.е. я руками туда вписываю значение а оно потом сохраняется в обьеденяющей таблице под id ) оценку Иванову например удв и чтоб она сохранилась в таблице jurnal по id из таблице ocenka (чтоб более подробно понять проблему посмотрите первый пост.. там  даже все по таблицам расписано) или изменить существующию оценку...??? возможно нужно в каком то событии dbgrida прописать запрос добавления самому может еще как то вот и спрашиваю как правильно по науке))  smile 

Это сообщение отредактировал(а) sssssss7 - 29.6.2009, 02:20
PM MAIL   Вверх
Romikgy
Дата 29.6.2009, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(Данкинг @  28.6.2009,  23:18 Найти цитируемый пост)
Я не говорю, что ты не прав, это я типа прикалываюсь над незнаниям (?) вроде как простейших операторов SQL. smile Считай неудачной шуткой, но в любом случае не в твой адрес. 

ну ты и шутник ... испужал то мя как  smile  smile 

Цитата(sssssss7 @  29.6.2009,  01:05 Найти цитируемый пост)
и вопрос был как мне добавить в ячейку dbgrid

смысл этого действия? то что внесется в бдгрид, там и останится а мне кажется что данные нужно вносить  в саму бд!
Цитата(sssssss7 @  29.6.2009,  01:05 Найти цитируемый пост)
возможно нужно в каком то событии dbgrida прописать запрос добавления самому может еще как то вот и спрашиваю как правильно по науке)) 

вот имхо где первый правильный вопрос 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
sssssss7
Дата 29.6.2009, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Romikgy @ 29.6.2009,  10:13)
Цитата(sssssss7 @  29.6.2009,  01:05 Найти цитируемый пост)
и вопрос был как мне добавить в ячейку dbgrid

смысл этого действия? то что внесется в бдгрид, там и останится а мне кажется что данные нужно вносить  в саму бд!

если dbgrid вывести запросом одну таблицу например select * from stud то в самом гриде можно спокойно менять и добовлять данные при чем они все атоматом сохраняются в базе... 

еще добавлю.. что еслиб  поле ocenka в таб. jurnal было б прямым т.е не id из таблицы ocenka.. то в запросе достаточно прописать id_jurnal и всё гуд.. но т.к лучше для каждой сущности делать отдельную таблицу я вывел ocenka в отдельную таблицу.. но теперь не могу добавить значение((( как быть не знаю(((   

Это сообщение отредактировал(а) sssssss7 - 29.6.2009, 13:47
PM MAIL   Вверх
Romikgy
Дата 29.6.2009, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(sssssss7 @  29.6.2009,  12:34 Найти цитируемый пост)

если dbgrid вывести запросом одну таблицу например select * from stud то в самом гриде можно спокойно менять и добовлять данные при чем они все атоматом сохраняются в базе... 

это имхо неправильно !
Цитата(sssssss7 @  29.6.2009,  12:34 Найти цитируемый пост)
но т.к лучше для каждой сущности делать отдельную таблицу я вывел ocenka в отдельную таблицу

зачем усложнять себе жизнь надо было 

PS по моему правильно делать показать записи значит select , хочешь обновить update , 
а то что работает с select , то где то можно нарватся на такой косяк... потом будешь долго думать почему раньше работало а сейчас нет ,
но если любишь трудности , играйся на вариантом , который ты описал ИМХО


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
sssssss7
Дата 29.6.2009, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Romikgy спасибо за совет.. Может кто по теме что знает?? очень надо... второй день уже бьюсь((

Это сообщение отредактировал(а) sssssss7 - 29.6.2009, 15:26
PM MAIL   Вверх
Keeper89
Дата 29.6.2009, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

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



sssssss7, повторите, пожалуйста свой вопрос еще раз более четко.


--------------------
PM MAIL WWW   Вверх
Akella
Дата 29.6.2009, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Цитата(sssssss7 @  29.6.2009,  13:34 Найти цитируемый пост)
если dbgrid вывести запросом одну таблицу например select * from stud то в самом гриде можно спокойно менять и добовлять данные при чем они все атоматом сохраняются в базе... 

Уже не раз обсуждалось почему и когда можно/нельзя редактировать данные через грид напрямую.

Добавлено через 31 секунду
Цитата(sssssss7 @  29.6.2009,  15:25 Найти цитируемый пост)
Может кто по теме что знает?? очень надо... второй день уже бьюсь((

Не надо биться, просто поищи на форуме.

Добавлено через 3 минуты и 51 секунду
http://forum.vingrad.ru/forum/topic-258221.html
читай всю тему внимательно
PM MAIL   Вверх
sssssss7
Дата 30.6.2009, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Akella.. спасибо.. искал чесно)) но пропустил)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0567 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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