Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите как в С++В и InterBase.... / 12 сообщений из 12, страница 1 из 1
03.12.2003, 14:37
    #32342096
Sales
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в С++В и InterBase....
мне нужно встав в гриде на определенную запись и вызвав меню, отредактировать одно поле у выделенной записи.

Раньше использовал компоненты Table, проблем небыло, Сейчас нужно пользоваться компонентами только Query и не пойму как.

пробую так:
DataModule1->IBQuery1->SQL->Add("edit * from DOCUMENTS where PERVICH = 0"); //открываю данные которые нужны на редактирование

//как отредактировать?

if (FMain->OpenDialog->Execute()) DataModule1->IBQuery1->FieldValues["PATHDOC"] = FMain->OpenDialog->FileName;
//смысл открыть диалог и выбрать новый путь к файлу.

//сохраняю изменения
DataModule1->IBQuery1->ExecSQL();
...
Рейтинг: 0 / 0
03.12.2003, 16:05
    #32342267
1man
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в С++В и InterBase....
IBQuery - только для Select. Тебе нужен IBUpdateSQL в добавок к IBQuery . Не забудь связать их пл св-ву UpdateObject.
А ваще правильнее вместо этих двух использовать один IBDataSet.
И обязательно учить SQL - составлять простейшие запросы. Несмотря на то, что в вышеуказанных компонентах есть удобный механизм для чайников - xEditor (вызывается правым кликом на компоненте).
...
Рейтинг: 0 / 0
04.12.2003, 03:24
    #32342784
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в С++В и InterBase....
1man
я думаб ты не прав, что IBQuery только для селекта... я думаю ты в этом совсем не прав...
более того IBUpdateSQL это просто контейнер для скриптов, которые и извлекает из него IBQuery.
...
Рейтинг: 0 / 0
04.12.2003, 07:38
    #32342824
Indian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в С++В и InterBase....
StarWind: Приведи, пожалуйста, пример использования одного IBQuery. Я такого никогда не видел...
...
Рейтинг: 0 / 0
04.12.2003, 10:16
    #32342967
1man
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в С++В и InterBase....
StarWind , ты конечно прав! Мой пост был рекомендацией для новичка. Очень торопился, надо было вставить "желательно" , "категорически советую" и пр.
Рекомендации же для новичка имхо правильны: использовать IBDataSet и т.д. А в случае использования IBQuery хранить запросы на UPDATE и пр. все же логичнее в связанном с ним IBUpdateSQL, если они не меняются динамически.
ИМХО, конечно
...
Рейтинг: 0 / 0
05.12.2003, 10:11
    #32344388
Sales
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в С++В и InterBase....
А можно конкретней пример как мне сделать!

Поставил компонент "IBDataSet" вместо "Query", попытался сделать что мне нужно и не работает.
В "IBDataSet1->SelectSQL" сделал выборку, и как мне теперь в "DBGrid1" встав на определенную запись исправить в ней поле.
...
Рейтинг: 0 / 0
08.12.2003, 05:42
    #32345916
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в С++В и InterBase....
1man
вот видишь и непонятки
тут надо подробно

Indian
а какие траблы? в SQL заряжаешь скажем insert... а в проге говоришь ExecSQL и все дела
...
Рейтинг: 0 / 0
08.12.2003, 10:01
    #32346023
Sales
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в С++В и InterBase....
Ну с INSERT все понятно, запись новая вставится.

Я СПРАШИВАЛ как работать редактированием записей. (компоненты Update и Query)

Делаю так:
AnsiString npath = "новое значение";

В компоненте IBQuery1 запросом сформирован набор даненых, который требуется для просмотра и редактирования.
select * from DOCUMENTS where PERVICH = '0' .

Компонент IBUpdateSQL1 направлен на компонент IBQuery1.

В компоненте записывается запрос на обновление:
IBUpdateSQL1->ModifySQL->Add("update DOCUMENTS set EDOCNAME =:EDOCNAME, PATHDOC =:PATHDOC where EDOCNAME = :OLD_EDOCNAME and PATHDOC = :OLD_PATHDOC");

- Как (где в коде) мне нужно присвоить выбранной строке "DBGrid1" в полю "PATHDOC" присвоить значение переменной "npath" ???

- И сохранить все это??


Просьба, сказать словами как это делается или показать просто пример (кусок кода).
Знающих как решить мой вопрос, но удерживающих в тайне это, Просьба воздержатся от флуда ( ненужные сообщения. Для этого есть "болталки" в сети).
...
Рейтинг: 0 / 0
08.12.2003, 10:54
    #32346105
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в С++В и InterBase....
а какие проблемы?
во-первых не забудь заполнить свойство RefreshSQL
и если у тебя редактирование происходит в гриде, то никаких проблем, так и редактируй. А если надо в коде подставить где-то, то на Before Update вешаешь строку IBQuery1.FieldByName().AsString := 'test' и все.
...
Рейтинг: 0 / 0
08.12.2003, 14:37
    #32346503
Sales
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в С++В и InterBase....
Чтот совсем туплю.
Вроде копоненты InterBase одинаковы с просто SQLевскими, но не как не разберусь с InterBase.

В гриде естеств. проблем нет редактирования и записи.

Но мне нужно сделать чтоб по правому клику мыши открывался диалог выбора файла и новый путь записывался а поле БД.

Вот так пытаюсь делать.

if(FMain->OpenDialog->Execute()) {

AnsiString npat = FMain->OpenDialog->FileName;

DataModule1->IBQuery1->Edit();
// DataModule1->IBQuery1->FieldByName("PATHDOC")->AsString = npat;

// DataModule1->IBUpdateSQL1->ModifySQL->Add("update DOCUMENTS set EDOCNAME =:EDOCNAME, PATHDOC =:PATHDOC where"
// "EDOCNAME = :OLD_EDOCNAME and PATHDOC = '"+npat+"'");

DataModule1->IBQuery1->ExecSQL();

}

Не разберусь что и куда подключить в компонентах.
Читал встроенный в билдер хелп не помог, а книги нет(.


Нет ли у кого примерчика.
...
Рейтинг: 0 / 0
08.12.2003, 20:45
    #32347055
DJStealth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в С++В и InterBase....
Salesпробую так:
DataModule1->IBQuery1->SQL->Add("edit * from DOCUMENTS where PERVICH = 0"); //открываю данные которые нужны на редактирование
А попробуй select * from DOCUMENTS where PERVICH = 0
...
Рейтинг: 0 / 0
09.12.2003, 03:39
    #32347210
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите как в С++В и InterBase....
Sales

DataModule1->IBUpdateSQL1->ModifySQL->Add("update DOCUMENTS set EDOCNAME =:EDOCNAME, PATHDOC =:PATHDOC where"
// "EDOCNAME = :OLD_EDOCNAME and PATHDOC = '"+npat+"'");

это у тебя уже должно быть записано в свойстве ModifySQL

а вот этого не должно быть
DataModule1->IBQuery1->ExecSQL();

и в принципе все зарулит.... не забывй только про транзакции
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите как в С++В и InterBase.... / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]