|
|
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
Чтоб по правому клику мыши открывался диалог "выбора нового файла" и при выборе файла новый путь записывался в БД. Делаю так: При открытии формы выполняется код: //------------------- DataModule1->IBQuery1->Active = false; DataModule1->IBQuery1->SQL->Clear(); DataModule1->IBQuery1->SQL->Add("select * from DOCUMENTS where PERVICH = '0'"); DataModule1->IBQuery1->Active = true; //------------------- клик "мышки" вешаю код: //------------------- if(FMain->OpenDialog->Execute()) { AnsiString npat = FMain->OpenDialog->FileName; 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->IBUpdateSQL1->RefreshSQL->Add( "Select DATEREG,OWNER,PATHDOC,PRIM,PRIM2,PRIM3,ISKL_DATE,VOSTANNOVL,TYPEDOC,GROUPS,PATHFOLDER,NUM,PERVICH,EDOCNAME" "from DOCUMENTS where DATEREG = :DATEREG and OWNER = :OWNER and PATHDOC = :PATHDOC and PRIM = :PRIM and PRIM2 = :PRIM2 and" "PRIM3 = :PRIM3 and ISKL_DATE = :ISKL_DATE and VOSTANNOVL = :VOSTANNOVL and TYPEDOC = :TYPEDOC and GROUPS = :GROUPS and" "PATHFOLDER = :PATHFOLDER and NUM = :NUM and PERVICH = :PERVICH and EDOCNAME = :EDOCNAME"); DataModule1->IBTransaction1->Commit(); } //------------------- НЕЧЕГО не меняется, но и ошибок нет. Как мне исправить?? Может что в компонентах нужно "отметить". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 17:35 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
Можно просто обновить база, используя TIBSQL. Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 17:59 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
Может надо ExecSQL для запроса на UPDATE... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 18:20 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
я же тебе уже писал что нужно делать.... а ты опять... объект IBUpdateSQL1 надо заполнить задолго до клика.... после execute следует вызвать метод DataModule1->IBUpdateSQL1->Edit() а еще лучше, почитай книги.... ну не перепечтывать же тебе все подряд сюда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 03:21 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 09:35 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
StarWind \r \r - Всёж не догоню я как :(, странно просто.\r \r - Отложу до прочтения книги, просто жаль время терять, книгу смогу купить не раньше конца месяца (зарплаты).\r \r \r 1man \r >>...Где это обсуждалось - не нашел\r \r - Обсуждалось это тут:\r /topic/62510 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 09:55 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
Попробуй DataModule1->IBQuery1->CacheUpdates=false; DataModule1->IBQuery1->FieldByName("PATHDOC")->AsString = npat; DataModule1->IBQuery1->ApplyUpdates(); DataModule1->IBTransaction1->CommitRetaining(); и ВСЕ! остальное - забей нафиг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 10:13 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
переводим датасет в режим редактирования обсуждалось это на форуме C++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 11:08 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
StarWind Мне кажется, что у IBUpdateSQL нет метода Edit. Или я савсем плахой стал? Видимо ты имел ввиду не IBUpdateSQL, а IBQuery, ему соответствующий? Мой вопрос: зачем переводить Query в режим редактирования ПОСЛЕ execute? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 11:25 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
тьфу, точно очепятался ))))))))))))) потому что execute показывает только диалог с выбором файла и если результат true то только тогда мы заносим данные в датасет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 11:27 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
Ну,... ты даешь... От очепятки Бывалых у Чайников же крышу сорвать может Я уж думал ... все... хана... 8) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 11:37 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
1man - Я попробывал пример как Вы написали, все отображается, но не сохраняется в БД при закрытии формы. Попробывал вроде бы использовать и Edit c Post порядке не помогает, выдает на ошибки "cannot update. No update". P.S. А что у компонента "BUpdateSQL1" нет Edit-а, я знаю, я применял его у себя в компоненте Query. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 14:34 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
Извини, уточняю: DataModule1->IBQuery1->CacheUpdates=false; должен быть ДО редактирования грида, например сразу при открытии проги, лучше прямо пропиши это св-во в Object Inspector-е. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2003, 14:51 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
1man - У меня в инспекторе объектов и стоит параметр "CashedUpdates=false" пробывал как "истину" ставить и как "лож". Мне кажется что нужно где то всеж переводить компонент Ouery в режим редактирования. Сейчас у меня так: - При перед открытием формы в компонент "Ouery" (который связан с "DBGrid1"), вставляется запрос: DataModule1->IBQuery1->SQL->Add("select * from DOCUMENTS where PERVICH = '1' и затем открывается форма с требуемым набором данных. И увидев записи в форме мне теперь нужно определенную запись отредактировать. Поидее я должен перевести "IBQuery1" в режим Редактирования. и потом уже выполнять какие либо действия. и командой "Post" или "ExecSQL" сохранить это все. В IBase я понял что нужно еще закрывать транзакцию " DataModule1->IBTransaction1->Commit()" или " DataModule1->IBTransaction1->CommitRetaining". В Вашем коде: Попробуй DataModule1->IBQuery1->CacheUpdates=false; DataModule1->IBQuery1->FieldByName("PATHDOC")->AsString = npat; DataModule1->IBQuery1->ApplyUpdates(); DataModule1->IBTransaction1->CommitRetaining(); и ВСЕ! остальное - забей нафиг. Я не вижу где происходит команда на редактирование и сохранение. Команда DataModule1->IBTransaction1->CommitRetaining -выпалняется так как транзакция ведь открыта на чтение данных. Когда я пишу так: AnsiString npat; if(FMain->OpenDialog->Execute()) { npat = FMain->OpenDialog->FileName; DataModule1->IBQuery1->Edit(); DataModule1->IBQuery1->FieldByName("PATHDOC")->AsString = npat; DataModule1->IBQuery1->CachedUpdates=true; DataModule1->IBQuery1->ApplyUpdates(); DataModule1->IBTransaction1->CommitRetaining(); то выдается ошибка "Cannot update. (No upddate query)" Может нельзя делать так как я, открывать данные селектом и потом переводить в редактирование компонент Query? P.S. Нда, использовать таблицу гораздо проще) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 09:58 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
Sales Все можно, но для обновления данных необходимо наличие компонента IBUpdateSQL связанного с IBQuery и прописать параметр ModifySQL. См. Справочную информацию по этой компоненте. Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 10:14 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
Dnico - У меня есть компонент "IBUpdateSQL1" и он связан с "IBQuery1". В копоненте "IBUpdateSQL1" - ненастроено нечего, все задаю программно: НА ОТКРЫТИИ ФОРМЫ: DataModule1->IBQuery1->Active = false; DataModule1->IBQuery1->SQL->Clear(); DataModule1->IBQuery1->SQL->Add("select * from DOCUMENTS where PERVICH = '1'"); DataModule1->IBQuery1->Active = true; НА КЛИКЕ мышки. if(FMain->OpenDialog->Execute()) { 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->ApplyUpdates(); DataModule1->IBTransaction1->CommitRetaining(); DataModule1->IBUpdateSQL1->RefreshSQL->Add( "Select ВСЕ ПОЛЯ ТАБЛИЦЫ "from DOCUMENTS where DATEREG = :DATEREG and OWNER = :OWNER ............"); } //не стал переносить все поля, много. ПРИ таком коде ошибка те же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 11:20 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
Ты что, до сих пор не прописал св-во ModifySQL Тебе же ХОРОМ говорят ВСЕ - пропиши! Не динамически! А я описывал только сам процесс сохранения. А уж то, что ты там делаешь при работе с гридом, тебе уже многократно писали. Мне тоже присоединится к голосу StarWind и Dnico? Тебя это убедит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 11:39 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
1man в компоненте "IBUpdateSQL1" стоит код "ModifySQL": update DOCUMENTS set DATEREG = :DATEREG, OWNER = :OWNER, PATHDOC = :PATHDOC, ОСТАЛЬНЫЕ ПОЛЯ where DATEREG = :OLD_DATEREG and OWNER = :OLD_OWNER and PATHDOC = :npat and ОСТАЛЬНЫЕ ПОЛЯ.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 13:20 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
Да выкинь ты этот IBQuery - это пережитки социализма! Возьми IBDataSet и сгенери там командв на изменение автоматически - там кнопочка есть, которая всё генерит! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 13:30 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
Ды ему уже объясняли в другом его топике и про IBDataSet и про правый клик мышки на нем, вызывающий редактор. Упрямый он, однако. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 15:09 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
Спасибо ВСЕМ за терпение и ответы. Вернулся к компоненту IBTable и все. За пол дня уже много написал и форм и возможностей проги, а Query просто буду использовать на формировании отчетах. В принципе я так всегда и делал. А с "IBDataSet" попробую пожже, просто интересно как. Не думаю, что использование в программе IBTable портит программу.? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2003, 15:55 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
А я думаю что портит... и очень сильно... компоненты TTable это вообще продукты врагов народа... А разработчиков, которые втыкают эти компоненты в проекты, я обычно убиваю, не спрашивая как зовут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2003, 03:33 |
|
||
|
Подскажите как работать в С++Buildere и IBase. Мне нужно сделать следующее...
|
|||
|---|---|---|---|
|
#18+
Когда выхожу из прграммы и захожу снова, то ввижу что запись не изменилась. Проблема изменения видны только пока программа не закрыта. Код пишу так: В компоненте "IBDataSet1" установлены параметры ModifiSQL: update DOCUMENTS set EDOCNAME =:EDOCNAME, PATHDOC =:PATHDOC where EDOCNAME = "'+nname+'" and PATHDOC = '"+npat+"'. RefreshSQL Select PATHDOC, EDOCNAME и т.д. from DOCUMENTS where PATHDOC = :PATHDOC and PATHFOLDER = :PATHFOLDER and и т.д. В инспекторе установлено: IBDataSet1->CachedUpdates=false; Код на кнопке: if(FMain->OpenDialog->Execute()) { npat = FMain->OpenDialog->FileName; nname = ExtractFileName(FMain->OpenDialog->FileName); DataModule1->IBDataSet1->Edit(); DataModule1->IBDataSet1->CachedUpdates=false; DataModule1->IBDataSet1->FieldByName("PATHDOC")->AsString = npat; if(DataModule1->IBDataSet1->FieldValues["EDOCNAME"] != nname) { DataModule1->IBDataSet1->FieldByName("EDOCNAME")->AsString = nname; } DataModule1->IBDataSet1->UpdateRecord(); DataModule1->IBDataSet1->ApplyUpdates(); DataModule1->IBTransaction1->CommitRetaining(); } Предположения: - Не правильно открывается/закрывается транзакция. - Не происходит сохранения после открытия DataModule1->IBDataSet1->Edit(); Может примерчик кто даст. на reut@land.ru (БД высылать не нужно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2003, 16:58 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32350174&tid=1579508]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
398ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 705ms |

| 0 / 0 |
