IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> База данных в Delphi, Проблема с изменением и сохранением.
сообщение
Сообщение #1


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


Всем привет! Щас сделал лаб работу по предмету БД. Все сделал как по методике, но кнопка сохранить не хочет работать...в чем дело ..не пойму..при нажатии на кнопку сохранить выходит ошибка----Query1: Dataset not in edit or insert mode. Напрмер...нашел запись в БД удалил ёё...жму..применить изменения, потом жму...сохранить...и выходит ошибка----Query1: Dataset not in edit or insert mode. но при этом после перезапуска проги этой записи нету...т.е. сохранились изменения.

Вот на лабу задание:

Работа с компонентом Query
1.На вкладке BDE выбрать компонент Query. Назначить следующие свойства DatabaseName; SQL (записать запрос).
2.Установить следующие компоненты на форму: DataSource, DBGrid, DBNavigator, Button.
3.В свойстве Caption кнопки написать “открыть Query”. На событие click кнопки написать команду: Query1.Open;
4.Отобразить данные, используя компонент DBEdit (Вкладка DataControls). Назначить свойства DataField и DataSource.

Свойства и процедуры набора данных (Query)
open – открыть набор данных
eof – конец набора данных
First – первая запись
Last – последняя запись
Next – следующая запись
insert – вставка записи
edit – редактирование записи
delete – удаление записи
Post – сохранить
ApplyUpdates – применить изменения в БД
Prior – последняя

Навигация
Установить кнопки с именами: Первая запись, Назад, Вперед, Последняя запись. Реализовать навигацию.

Модификация таблицы
1.Для модификации нескольких записей или таблиц используется компонент UpdateSql.
2.Установить компоненты Query (вкладка BDE), DataSource (вкладка DataAccess).
3.Query назначить свойство UpdateObject.
4.Двойным щелчком левой кнопки мыши по UpdateSql открыть окно генерации SQL. Выбрать поля, которые будут модифицироваться (все, кроме ключа). Нажать кнопку Generate SQL.
5.Query назначить следующие свойства: CachedUpdate (кэшированные изменения); RequestLive (возможность редактирования полученного набора данных); SQL.
6.Назначить событие OnUpdateRecord (DataSet: TDataSet; UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction), где DataSet – набор данных; UpdateKind – принимает следующие значения: ukModify - операция изменения, ukInsert - операция вставки, ukDelete - операция удаления; переменной UpdateAction присваивается одно из следующих значенияй: uaAbort, uaApplied, uaFail, uaRetry, uaSkip.
Пример:
UpdateSql1.Apply(UpdateKind);
UpdateAction := uaApplied;
7.Поставить и обработать кнопки Добавления, Изменения, Удаления записи, а также кнопки Сохранить и Применить изменения.

вот код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBTables, ExtCtrls, DBCtrls, Grids, DBGrids, DB, Mask;

type
TForm1 = class(TForm)
Table1: TTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Query1: TQuery;
DataSource2: TDataSource;
DBGrid2: TDBGrid;
DBNavigator2: TDBNavigator;
Button1: TButton;
DBEdit1: TDBEdit;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Label4: TLabel;
Label5: TLabel;
UpdateSQL1: TUpdateSQL;
DataSource3: TDataSource;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Query1UpdateRecord(DataSet: TDataSet; UpdateKind: TUpdateKind;
var UpdateAction: TUpdateAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Open;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Query1.First;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Query1.Prior;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
Query1.Last;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Query1.Next;
end;


procedure TForm1.Button6Click(Sender: TObject);
begin
Query1.Open;
DataSource3.DataSet:=Query1;
Query1.Insert;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
Query1.Open;
DataSource3.DataSet:=Query1;
Query1.Edit;
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
Query1.Open;
DataSource3.DataSet:=Query1;
Query1.Delete;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
Query1.ApplyUpdates;
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
Query1.Post;
end;
procedure TForm1.Query1UpdateRecord(DataSet: TDataSet; UpdateKind: TUpdateKind;
var UpdateAction: TUpdateAction);
begin
UpdateSql1.Apply(UpdateKind);
UpdateAction:=uaApplied;
end;
end.


Добавлено через 1 мин.
И по поводу Назначить событие OnUpdateRecord (DataSet: TDataSet; UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction), где DataSet – набор данных; UpdateKind – принимает следующие значения: ukModify - операция изменения, ukInsert - операция вставки, ukDelete - операция удаления; переменной UpdateAction присваивается одно из следующих значенияй: uaAbort, uaApplied, uaFail, uaRetry, uaSkip.
--я его тупа вставил в type и в поцедуры..наверное это не правильно?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


ок, сейчас.

Добавлено через 3 мин.
Вот.


Прикрепленные файлы
Прикрепленный файл  ____.rar ( 343.07 килобайт ) Кол-во скачиваний: 260
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
dron4ik   База данных в Delphi   19.10.2010 12:07
Client   прикрепи проект целиком с базой. уж очень лень мне…   19.10.2010 14:46
dron4ik   ок, сейчас. Добавлено через 3 мин. Вот.   19.10.2010 15:24
Client   заколдованная база у тебя :) создал новый проект:…   19.10.2010 17:31
dron4ik   спасибо) но проблема была в сохранении) Добавлено…   19.10.2010 17:42
Client   Сохранение... нужно когда изменяешь поля в таблице…   19.10.2010 17:46
dron4ik   Вставка - это добавление новых данных?   19.10.2010 17:48
Client   ага. Insert/Append   19.10.2010 17:49
dron4ik   я думал нужно сохранять. Добавлено через 2 мин. …   19.10.2010 17:50
Client   а да, при вставке не надо указывать метод Edit, а …   19.10.2010 18:34
dron4ik   у всех бывают ошибки)   19.10.2010 18:37
Client   И... В новом проекте я подключил твою базу. Сейчас…   19.10.2010 18:38
dron4ik   у мя тип базы Paradox -это имееш ввиду?   19.10.2010 18:39
dron4ik   Как перевести базу в режим редактирования?   19.10.2010 20:55
Client   Table1.Edit;   19.10.2010 22:55
dron4ik   Спасибо, client! а где это именно в коде писат…   19.10.2010 23:10
Client   где надо там и пиши :) Когда надо изменять данны…   20.10.2010 12:48
dron4ik   как раз я использую Query)А как запрос написать на…   20.10.2010 13:07
dron4ik   Щас врде нормально...добавил Query1.Edit в кнопки-…   20.10.2010 13:27
Client   ага, про поле Soc_nom там ничего не сказано   20.10.2010 13:34
dron4ik   короче я незнаю......нормально щас работала.......…   20.10.2010 13:53
Client   вот написал немного   20.10.2010 14:24
dron4ik   Спасибо))Кстати..сделал..теперь работает..и сохран…   20.10.2010 15:18


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 1.05.2024 3:12
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name