Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.03.2013, 15:28
std25 std25 вне форума
Прохожий
 
Регистрация: 05.12.2012
Сообщения: 6
Репутация: 10
По умолчанию ADOQuery.Edit проблемы с редактированием

здравствуйте. база данных состоит из 5 таблиц, в главной таблице поле "табельный номер" ключ, связано с остальными связью один ко многим.при помощи ADOQuery все поля таблиц выводятся в dbgrid,чтобы по щелчку на запись вся инфа заносилась в edit.добавление записи происходит без проблем,а вот с редактированием проблемы. т.е. после того как все данные поместились в edit,некоторые из них редактируются и по нажатию на кнопку сохранить

form2.adoquery1.edit;
adoquery1.fieldbyname('dfhv').asstring:=edit1.text ;
....перечисляем поля из всех таблиц
...
form2.adoquery1.post;

вылетает ошибка "недостаточно сведений о ключевом столбце для обновления"
т.е. если правильно думаю, проблема в ключах,но тогда почему работает добавление. посоветуйте,что делать??
Ответить с цитированием
  #2  
Старый 29.03.2013, 15:46
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

Код:
   ADOQuery.close;
   ADOQuery.SQL.Clear;
   ADOQuery.SQL.Add('INSERT INTO tabl (pole1, pole2) VALUES (' + QuotedStr(edit1.text) + ', ' + QuotedStr(edit2.text) + ')');
    try 
       dm.ADOQuery.ExecSQL;
    except
     begin 
          messageDlg('Ошибка вставки записи SQL', mtError, [mbOK], 0); 
          exit; 
     end;
    end;
но это для вставки записи, тебе нужен UPDATE, сам разберешься?)
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")

Последний раз редактировалось Mrak, 29.03.2013 в 15:49.
Ответить с цитированием
  #3  
Старый 29.03.2013, 16:00
std25 std25 вне форума
Прохожий
 
Регистрация: 05.12.2012
Сообщения: 6
Репутация: 10
По умолчанию

ADOQuery.SQL.Add('INSERT INTO tabl (pole1, pole2) VALUES (' + QuotedStr(edit1.text) + ', ' + QuotedStr(edit2.text) + ')');

получается в моем случае,через запятую перечисляются все таблицы,а потом все столбцы??
Ответить с цитированием
  #4  
Старый 29.03.2013, 16:05
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Я запутался. Давай сначала! У тебя таблицы связаны один ко многим.

Информация из Столбца ГЛАВНОЙ таблицы попадает в Edit? и ты хочешь её изменять?
Ответить с цитированием
  #5  
Старый 29.03.2013, 16:11
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

Цитата:
Сообщение от std25
ADOQuery.SQL.Add('INSERT INTO tabl (pole1, pole2) VALUES (' + QuotedStr(edit1.text) + ', ' + QuotedStr(edit2.text) + ')');

получается в моем случае,через запятую перечисляются все таблицы,а потом все столбцы??
ВСТАВИТЬ В ТАБЛИЦУ <имя таблицы>(<имя столбца1>, <имя столбца2>) ЗНАЧЕНИЯ (<значение1>, <значение2>)
http://www.mysql.ru/docs/ в помощь
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #6  
Старый 29.03.2013, 16:20
std25 std25 вне форума
Прохожий
 
Регистрация: 05.12.2012
Сообщения: 6
Репутация: 10
По умолчанию

5 таблиц связаны,я нажимаю на строку dbgrid, в которой содержится вся информация о сотруднике со всех 5 таблиц.получается, что все данные заносятся в editЫ. редактирую некоторые из них,ну и ошибка описана выше((
Ответить с цитированием
  #7  
Старый 29.03.2013, 16:26
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

Цитата:
Сообщение от std25
5 таблиц связаны,я нажимаю на строку dbgrid, в которой содержится вся информация о сотруднике со всех 5 таблиц.получается, что все данные заносятся в editЫ. редактирую некоторые из них,ну и ошибка описана выше((
а чего, сразу в гриде не редактируется?
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
  #8  
Старый 29.03.2013, 16:28
std25 std25 вне форума
Прохожий
 
Регистрация: 05.12.2012
Сообщения: 6
Репутация: 10
По умолчанию

через editЫ делаю для того,чтобы пользователю было более наглядно и понятно что и куда добавлять
Ответить с цитированием
  #9  
Старый 29.03.2013, 16:35
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Ну я надеюсь ты через DBEditЫ это делаешь, каждый из которых связан со своим полем? Если да, то ошибку отследить проще.

Можешь сделать дамп скелета своей базы? (без инфы) или если нет секретной инфы, весь дамп прикрепить.
Ответить с цитированием
  #10  
Старый 01.04.2013, 09:42
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

по идее, когда в дбедите появляется текст, к нему можно обратиться через dbedit1.text и ее сохранить обратно в базу
топикстартер, пробуй как я писал через запрос

а какая СУБД?
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:48.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter