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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2009, 16:29   #41
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Ты мне скажи, значения в Edit'ы у тебя для редактирования, как заносяться (ты кликаешь по записи в Grid'е и они заносятся в Edit'ы?). Или они пустые, а ты просто вбиваешь значения и патаешься их наити и отредактировать. Я запутался. "+" - автоинкримент? Или добавляй еще Edit и занаси в него значение уникального поля, запись которую необходимо редактировать.

Последний раз редактировалось Evgeniy26; 31.07.2009 в 16:33.
Evgeniy26 вне форума Ответить с цитированием
Старый 31.07.2009, 16:47   #42
начинающий1
Пользователь
 
Регистрация: 30.07.2009
Сообщений: 46
По умолчанию

Цитата:
ФИО я выбираю из dblookupcombobox-a. Если бы этого человека не было в БД, то его бы не было в списке. Так ведь?
На твоем примере я вижу только Edit-ы, и из этих эдитов(условие) ты берешь инфу для обновления записи в таблице.

Цитата:
А как вот это самое обновление по ID сделать?
Код:
имя_id := DBLookupCombobox1.KeyValue;
'WHERE Otchest= ' + QuotedStr(Form12.Edit3.Text)' and id = "'+ имя_id +'";

Последний раз редактировалось начинающий1; 31.07.2009 в 16:57.
начинающий1 вне форума Ответить с цитированием
Старый 31.07.2009, 16:53   #43
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Цитата:
Сообщение от начинающий1 Посмотреть сообщение
А с id вот так:
Код:
'WHERE Otchest= ' + QuotedStr(Form12.Edit3.Text)' and id = 5';
Id оно на то и Id:
Код:
'WHERE id = 5';
Evgeniy26 вне форума Ответить с цитированием
Старый 31.07.2009, 17:08   #44
начинающий1
Пользователь
 
Регистрация: 30.07.2009
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Evgeniy26 Посмотреть сообщение
Id оно на то и Id:
Код:
'WHERE id = 5';
допустим, что в таблице несколько человек с одинаковым Отчеством, тогда
Код:
'WHERE Otchest= ' + QuotedStr(Form12.Edit3.Text)' and id = 5';
будет кстати.
начинающий1 вне форума Ответить с цитированием
Старый 31.07.2009, 17:24   #45
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Ты мне скажи, значения в Edit'ы у тебя для редактирования, как заносяться
.
Объясняю. Есть совершенно другая форма. Form13. На ней есть три DBLookupComboBoxEh-a, каждый из которых соответственно настроен на фамилию, имя, отчество. Когда в списках выбраны эти данные, то нажимается кнопка и открывается другаю форма. Form12. На ней, в Edit1 заносится значение из первого DBLookupComboBoxEh1, в Edit2 из DBLookupComboBoxEh2, в Edit3 из DBLookupComboBoxEh3. Вот. Дальше я хотел редактировать данные...
Цитата:
Я запутался. "+" - автоинкримент?
Совершенно верно)
Цитата:
Код:
'WHERE id = 5';
Дык пользователь то не знает какой ID у этого человека в БД..
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 31.07.2009, 17:32   #46
начинающий1
Пользователь
 
Регистрация: 30.07.2009
Сообщений: 46
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
.
Дык пользователь то не знает какой ID у этого человека в БД..
А это для кого, для Пушкина?
Код:
имя_id := DBLookupCombobox1.KeyValue;
'WHERE Otchest= ' + QuotedStr(Form12.Edit3.Text)' and id = "'+ имя_id +'";
начинающий1 вне форума Ответить с цитированием
Старый 31.07.2009, 17:32   #47
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

В Access работает, под себя подстрой:
Код:
var
  st: TMemoryStream;
begin
  St := TMemoryStream.Create;
  try
    Memo1.Lines.SaveToStream(St);
    st.Position := 0;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('Update one Set BLOB = :b1 Where id = :i1;');
    ADOQuery1.Parameters.ParamByName('b1').LoadFromStream(St, ftBlob);
    ADOQuery1.Parameters.ParamByName('i1').Value := 1;//DBLookupCombobox1.KeyValue;
    ADOQuery1.ExecSQL;
    St.Position := 0;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('Update one Set BLOB = :b2 Where id = :i2;');
    ADOQuery1.Parameters.ParamByName('b2').LoadFromStream(St, ftBlob);
    ADOQuery1.Parameters.ParamByName('i2').Value := 2;//DBLookupCombobox1.KeyValue;
    ADOQuery1.ExecSQL;
  finally
    St.Free;
  end;
начинающий1, можете переделать с DML запросом. Как в примере.

Последний раз редактировалось Evgeniy26; 31.07.2009 в 18:21.
Evgeniy26 вне форума Ответить с цитированием
Старый 31.07.2009, 18:44   #48
начинающий1
Пользователь
 
Регистрация: 30.07.2009
Сообщений: 46
По умолчанию

Evgeniy26
а чего там переделывать?
1) присваиваем строковой переменной имя_id id поля отчество, которое пользователь выбрал в DBLookupComboboxEh1.
Код:
имя_id := DBLookupComboboxEh1.KeyValue;
2) 2-я часть запроса (какую запись обновлять)
Код:
'WHERE id = "'+ имя_id +'";
чего тут не ясного еще? Готовый код.
начинающий1 вне форума Ответить с цитированием
Старый 31.07.2009, 18:47   #49
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

начинающий1 посмотрите 17, 27 и мой последний пост. Blob поле редактируется через DML запрос.

Последний раз редактировалось Evgeniy26; 31.07.2009 в 18:50.
Evgeniy26 вне форума Ответить с цитированием
Старый 31.07.2009, 19:09   #50
начинающий1
Пользователь
 
Регистрация: 30.07.2009
Сообщений: 46
По умолчанию

Пожалуйcта:
Код:
procedure TForm12.BitBtn3Click(Sender: TObject);
var
spisok_id: string;
begin
spisok_id := Form12.DBLookupComboboxEh1.KeyValue;
with Form12.Query_update do
   begin
     Form12.Query_update.SQL.Clear;
     Form12.Query_update.SQL.Add('Select MestoRogd from spisok where MestoRogd_id = '+spisok_id+'');
     Form12.Query_update.Open;
      if RecordCount > 0 then
  begin
    Edit;
    TBlobField(Form12.Query_update.FieldByName('MestoRogd')).AsString := Form12.Memo1.Lines.Text;
    if Modified then
      Post
  end;
     Form12.Query_update.Close;
   end;
end;

Последний раз редактировалось начинающий1; 31.07.2009 в 19:15.
начинающий1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BLOB поле artemavd БД в Delphi 17 09.08.2016 02:13
Перевод из Memo по английскому в Memo по русскому Sanek777 Общие вопросы Delphi 5 26.09.2008 00:17
Blob поля в делфи dagarik БД в Delphi 2 02.12.2007 17:33
В Memo сделать так, чтобы текст был разного цвета, разноцветный memo Artem Компоненты Delphi 3 07.09.2007 13:40
BLOB в string _andrews_ БД в Delphi 0 20.04.2007 12:05