Cannot perform this operation on a closed dataset!
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.82] |
|
|
ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi
Cannot perform this operation on a closed dataset!
|
Сообщ.
#1
,
|
|
|
|
Добрый день! Пишу небольшую базу данных на делфи! вроде все делаю правильно , но постоянно выходит ошибка Cannot perform this operation on a closed dataset! Работаю с компонентом kmemtable (позволяет создавать таблицу в памяти, выгружать и загружать). Вот сам код
![]() ![]() if od.Execute then begin sfCSV.CSVQuote:='"'; sfCSV.CSVRecordDelimiter:=','; showmessage('1'); bdcomp1.Active:=true; bdcomp1.Open; if bdcomp1.Active then showmessage('îòêðûòà'); bdcomp1.LoadFromFileViaFormat('c:\1.csv',sfCSV); showmessage('îòêðûò111à'); dsbdcomp.DataSet:=bdcomp1; bdcomp1.Active:=true; end; кто что может подсказать, а то у меня вариантов не осталось! |
|
Сообщ.
#2
,
|
|
|
|
Прежде чем стото делать с данными их надо открыть. (open or active=true). Компонент мне неизвестен. Что делает загрузка из файла?
|
|
Сообщ.
#3
,
|
|
|
|
так в том то и дело, что таблица открыта! Загрузка делает загрузку из специального файла! и добавление строчки проходит нормально!
|
|
Сообщ.
#4
,
|
|
|
|
под дебагом зайди в процедуру LoadFromFileViaFormat и посмотри на чем он ломается
|
|
Сообщ.
#5
,
|
|
|
|
если несекрет как под дебагерром посмотреть?
|
|
Сообщ.
#6
,
|
|
|
|
поставь курсор на эту строку и нажми F5
запусти прогу нажим F7 и ты зайдеш в эту процедуру и смотри что за код там написан и что происходи |
|
Сообщ.
#7
,
|
|
|
|
че то пока не могу разобраться! но ведь по идее таблица у меня открыта, почему может быть такая ошибка?
жму ф7 сначала раннинг а потом сразу стоп! почему? |
|
Сообщ.
#8
,
|
|
|
|
Ели bdcomp1 это набор данных то вам достаточно сделать опен. Потом посмотрите есть ли у этого компонента свойство reqwestlife (както так) и сделайте его труе.
![]() ![]() if od.Execute then begin sfCSV.CSVQuote:='"'; sfCSV.CSVRecordDelimiter:=','; showmessage('1'); bdcomp1.Open; bdcomp1.reqwestlife:=true; //if bdcomp1.Active then showmessage('îòêðûòà'); bdcomp1.LoadFromFileViaFormat('c:\1.csv',sfCSV); showmessage('îòêðûò111à'); //dsbdcomp.DataSet:=bdcomp1; //bdcomp1.Active:=true; end; Добавлено requestlive |
|
Сообщ.
#9
,
|
|
|
|
такого сойства у него нет! смое главное что добавление с помощью дбнавигатора проходит нормально
|
|
Сообщ.
#10
,
|
|
|
|
Значит проблем в загрузке из файла.
|
|
Сообщ.
#11
,
|
|
|
|
укороче даже на чистой программе котороя ниже тоже выдает ошибку!
![]() ![]() procedure TForm1.FormCreate(Sender: TObject); begin with mem do begin Active := False; // òàáëèöà äîëæíà áûòü çàêðûòà // òåïåðü îïðåäåëÿåì ïîëÿ with FieldDefs do begin Clear; Add('fio', ftString, 60, True); end; CreateTable; end; end; procedure TForm1.sBitBtn1Click(Sender: TObject); begin sfCSV.CSVQuote:='"'; sfCSV.CSVRecordDelimiter:=','; mem.Open; mem.LoadFromFileViaFormat('c:\1.csv',sfCSV); mem.Active:=true; end; end. |
|
Сообщ.
#12
,
|
|
|
|
Что же всё-таки такое LoadFromFileViaFormat?
|
|
Сообщ.
#13
,
|
|
|
|
это процедура компонента kmemtable, которая позволяет загрузить файл определеннго формата! ну короче в этом файле хранится вся конфигурация и данные о виртуальной базе
|
|
Сообщ.
#14
,
|
|
|
|
Все всем спасибо вопрос решен! Теперь вопрос не по теме где можно посмотреть дизайны программ? ну для сравнения и чтобы для себя что нибудь взять!
|