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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2010, 12:25   #1
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию Query1.post записывает не одну запись, а все

Код:
while not Query1.Eof do //проверяю сколько записей выбрал запрос = 1
  Query1.Next;
Query1.Edit;
Query1.FieldByName('text_test').AsString := memo1.Lines.Text;
if Query1.State in [dsEdit,dsInsert] then
Query1.Post;//здесь говорит, что все записи обновлены
то что находится в memo1.Lines.Text записывается во все поля 'text_test' таблицы. Что не так в коде?

И еще может кто предложит лучший вариант записи в базу содержимого из Memo1, да забыл сказать База данных PostGreSQL
Не забываем говорить спасибо за помощь - это ведь так приятно

Последний раз редактировалось Sanprof; 19.08.2010 в 12:45.
Sanprof вне форума Ответить с цитированием
Старый 19.08.2010, 12:45   #2
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

хотелось бы взглянуть полностью код процедуры, где участвует данный кусок
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 19.08.2010, 12:47   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
то что находится в memo1.Lines.Text записывается во все поля 'text_test' таблицы. Что не так в коде?
А должно как?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.08.2010, 12:52   #4
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А должно как?
должно так выбрать одну запись (выбирается)
в эту запись записать в поле text_test содержимое Memo1

а оно мне кроме того, что записывает в текущую запись еще и заменяет все остальные поля (text_test) в таблице.
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Старый 19.08.2010, 13:07   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Sanprof
В таком случае выполни просьбу quit'a и обьясни зачем ты делаешь
Цитата:
while not Query1.Eof do //проверяю сколько записей выбрал запрос = 1
Query1.Next;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.08.2010, 13:07   #6
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

не знаю в чем разница но
так не работает
Код:
Query1.SQL.Add('SELECT text_test FROM T1 where ....');
а так работает
Код:
Query1.SQL.Add('SELECT * FROM T1 where ....');
Цитата:
Сообщение от Stilet Посмотреть сообщение
В таком случае выполни просьбу quit'a и обьясни зачем ты делаешь
Это я сделал, что бы при пошаговом режиме определить сколько записей выбрал запрос
Не забываем говорить спасибо за помощь - это ведь так приятно

Последний раз редактировалось Stilet; 19.08.2010 в 13:13.
Sanprof вне форума Ответить с цитированием
Старый 19.08.2010, 13:13   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
что бы при пошаговом режиме определить сколько записей выбрал запрос
А свойство RecordCount уже не в моде?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.08.2010, 13:25   #8
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А свойство RecordCount уже не в моде?
В моде, только я совсем забыл про него, голова уже вобще варенная от работы
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Старый 19.08.2010, 15:39   #9
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

код делает ровно то что ты в нем написал
уберешь цикл и будет апдейтить по одной записи

З.Ы.: не понимаю я этого желания знать скока в граммах точно выбрал селект
что листание датасета. что рекордкаунт - оба отработают тормозно на больших объемах
имхо если есть желание узнать кол-во, то дерни запросом select count

Последний раз редактировалось soleil@mmc; 19.08.2010 в 15:42.
soleil@mmc вне форума Ответить с цитированием
Старый 19.08.2010, 18:13   #10
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию Может я ослеп ?

Цитата:
Сообщение от Sanprof Посмотреть сообщение
Код:
while not Query1.Eof do //проверяю сколько записей выбрал запрос = 1
  Query1.Next;
Query1.Edit;
Query1.FieldByName('text_test').AsString := memo1.Lines.Text;
if Query1.State in [dsEdit,dsInsert] then
Query1.Post;//здесь говорит, что все записи обновлены

Возможно я вареный но ...

У тебя цикл,по написаному, проверяем конец ли это запроса ? - Если нет Перемещаемся на след. елемент и вновь проверяем на конец запроса ??? ... Тоесть ?! Де операции ?

мб там нужен Бегин - енд.
Честно говоря Как то все усложненно ... )
Запросы РуЛЯДДДД! Все проще и быстрее.
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из DBGrid в FastReport одну запись Ghjuhfvvf Помощь студентам 5 27.05.2011 11:23
все в одну строку Yokka Общие вопросы C/C++ 4 15.05.2010 00:27
Запись всех строк в одну. Lazio Помощь студентам 1 10.10.2009 21:44
Запись в одну строку Terran Общие вопросы Delphi 2 08.05.2008 23:35
Все тот же IdHTTP (Post) AVer Работа с сетью в Delphi 5 28.09.2007 10:40