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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2010, 17:10   #21
crocklam
 
Регистрация: 25.04.2010
Сообщений: 6
По умолчанию

Form2.ADOTable1.Active:=false;
Form2.ADOTable1.Active:=true;
Form1.Close;

Это так, пальцем в небо. Вдруг сработает.

или если у тебя на форме ввода DataSource подключен к ADOTable1
можешь прямо через него) если конечно поможет)

DataSource1.DataSet.Active:=false;
DataSource1.DataSet.Active:=true;

Или вообще добавляй прямо через тейбл.
crocklam вне форума Ответить с цитированием
Старый 02.05.2010, 19:43   #22
kmvteam
Пользователь
 
Регистрация: 28.04.2010
Сообщений: 21
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
kmvteam, полный текст ошибки приведи. Как Delphi пишет, а не как ты переводишь.
В Sql у AdoQuery1 написано:" SELECT * FROM картотека"
Ошибку выдает:"AdoQuery1:Cannot perform this operation on a closed dataset "
kmvteam вне форума Ответить с цитированием
Старый 03.05.2010, 05:05   #23
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Ошибка: не получается выполнить эту операцию на закрытом dataset. Может так:
Код:
var
com:string;
i:integer;
begin
Form2.adoquery1.Active:=False;
Form2.adoquery1.Sql.Clear;
Form2.adoquery1.sql.text:='insert into Картотека(Код_сотрудника,Подразделе ние,Должность,Фамилия,Имя,Отчество, Пол) values (:Код_сотрудника,:Подразделение,:До лжность,:Фамилия,:Имя, :Отчество,:Пол)';
Form2.adoquery1.Parameters.ParamByName('Ф амилия').value:=edit1.Text;
Form2.adoquery1.Parameters.ParamByName('И мя').value:= edit2.Text;
Form2.adoquery1.Parameters.ParamByName('О тчество').value:=edit3.Text;
Form2.adoquery1.Parameters.ParamByName('П ол').value:=combobox1.Text;
Form2.adoquery1.Parameters.ParamByName('К од_сотрудника').value:= edit5.Text;
Form2.adoquery1.Parameters.ParamByName('П одразделение').value:=combobox2.Tex t;
Form2.adoquery1.Parameters.ParamByName('Д олжность').value:=edit4.Text;
Form2.adoquery1.execSQL;
Form2.adoquery1.Active:=True;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 03.05.2010, 08:16   #24
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Form2.adoquery1.Sql.Clear;
В данном случае это лишнее ибо все итак очищается, поскольку используется Form2.adoquery1.sql.text:=
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.05.2010, 14:35   #25
nikta
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 15
Вопрос

Помогите, пожалуйста.
Мне нужно чтобы из формы в Delphi вводились данные по балансу, причем не один раз, а балансы различных фирм, и потом эти данные сохранялись в таблице БД. Поскажите как это лучше сделать и как лучше сохранять их в Access: для каждого предприятия создавать отдельную таблицу и хранить все в одной, просто различать их по коду предприятия?
nikta вне форума Ответить с цитированием
Старый 04.05.2010, 15:05   #26
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

nikta, один вопрос - одна тема.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 09.07.2010, 02:08   #27
golopjatov
Пользователь
 
Регистрация: 09.07.2010
Сообщений: 13
Радость

Цитата:
Сообщение от artemavd Посмотреть сообщение
nikta, один вопрос - одна тема.
к теме:

=================================== =================================== ==============================

unit Unit1;

//для примера проверку соединения с БД надо дописать .....
//------------------------------------------------------------------------------
function NotEmptySet(inSet:TDataSet): boolean; // не пусто, функция проверки на наличие записей в сете
begin
Result := Not (inSet.Bof and inSet.eof);
end;

procedure DelRec(inSet:TDataSet); // процедура удаление записи
begin
if (NotEmptySet(inSet)) then
begin
if MessageDlg(PChar('Удалить запись? - '+Form1.ADOQuery1.FieldByName('Фами лия').AsString),mtConfirmation, mbOKCancel, 0) = mrOK then
inSet.Delete
end
else
begin
MessageDlg('Нет записей для удаления!',mtInformation,[mbCancel], 0);
Exit;
end;
end;

procedure AddRec; // процедура открытия диалога для добавления записи
var form2: TForm2;
begin
form2:=TForm2.Create(Form1);
form2.ShowModal;
end;

procedure EdtRec(inSet:TDataSet); // процедура редактирование записи
var form2: TForm2;
begin
if (NotEmptySet(inSet)) // если сет пустой - незачем выводить запрос
then //ну а если не пуста - открываем диалог редактирования
begin
form2:=TForm2.Create(Form1);
form2.Edit1.Text:=Form1.ADOQuery1.F ieldByName('Фамилия').Text;
form2.Edit2.Text:=Form1.ADOQuery1.F ieldByName('Имя').Text;
form2.ShowModal;
end
else
begin
MessageDlg('Нет записей для редактирования!',mtInformation,[mbCancel], 0);
Exit;
end;
end;
//------------------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject); //открываем диалог для новой записи
begin
AddRec;
end;

procedure TForm1.Button2Click(Sender: TObject); // кнопка редактирования записи (диалог)
begin
EdtRec(DataSource1.DataSet);
end;

procedure TForm1.Button3Click(Sender: TObject); // кнопка удаление записи (процедура delrec)
begin
DelRec(DataSource1.DataSet);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Application.Terminate; // убиваем приложение
end;

procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); // обработка нажатия кнопок на активном гриде
begin
if Key = VK_DELETE then // кнопка Delete - удаление записи
begin
DelRec(DataSource1.DataSet); // используем процедуру удаления
end;
if Key = VK_INSERT then // кнопка Insert - добавление записи
begin
AddRec; // используем процедуру добавления
end;
if Key = VK_RETURN then // кнопка Enter - редактирование записи
begin
EdtRec(DataSource1.DataSet); // используем процедуру редактирования
end;
if Key = VK_LEFT then // кнопка <- - первая запись
begin
DataSource1.DataSet.First;
end;
if Key = VK_RIGHT then // кнопка -> - последняя запись
begin
DataSource1.DataSet.Last;
end;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
DBGrid1.SetFocus; //получение гридом фокуса
end;

end.

=================================== =================================== ========================

procedure TForm2.Button1Click(Sender: TObject);
begin
if (Edit1.Text='') and (Edit2.Text='') then // *** если едиты пустые то ***
if (Edit1.Text)='' then // если пустой первый едит (фамилия)
begin
MessageDlg('Введите фамилию!',mtInformation,[mbOK], 0); // сообщаем что фамилия не указана
Edit1.Text:=''; // очищаем на всякий первый едит
Edit1.SetFocus; // ставим на него фокус
Exit; // выходим из месыджа
end;
if (Edit2.Text)='' then // если пустой второй едит (имя)
begin
MessageDlg('Введите имя!',mtInformation,[mbOK], 0); // сообщаем что имя не указано
Edit2.Text:=''; // очищаем на всякий второй едит
Edit2.SetFocus; // ставим на него фокус
Exit; // выходим из месыджа
end; // *** иначе, если эдиты не пустые - сохраняем значение едитов в базе ***
Form1.ADOQuery1.Edit;
Form1.ADOQuery1.FieldByName('Фамили я').Text:=Edit1.Text;
Form1.ADOQuery1.FieldByName('Имя'). Text:=Edit2.Text;
Form1.ADOQuery1.Post;
Close; // закрываем форму ввода данных
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
Close;
end;

procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
//только русские буквы
if CharInSet(Key,['0'..'9','A'..'Z','a'..'z',#13]) then key:=#0;

end;

end.


только как пример. чем проще, тем понять лучше. но далеко до идеального варианта. работает.
Изображения
Тип файла: jpg 1.jpg (52.9 Кб, 83 просмотров)
Тип файла: jpg 2.jpg (18.8 Кб, 76 просмотров)

Последний раз редактировалось golopjatov; 10.07.2010 в 00:35.
golopjatov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
access+delphi+ado aid_013 БД в Delphi 2 10.07.2010 09:28
delphi+ado+access Jo2000 Помощь студентам 16 27.02.2010 08:04
Delphi <--> ADO <--> Access acid02 БД в Delphi 4 09.04.2009 16:29
БД Access + Delphi, ADO. по сети Cyn4uk БД в Delphi 4 04.01.2008 00:06
Delphi+ADO+Access Turpa Помощь студентам 12 15.10.2007 23:29