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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2009, 11:15   #11
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Цитата:
ну ты, братан, даёшь
нельзя же один и том же query использовать для отображения данных и при помощи него же удалять данные.
Можно....
Работает:
Код:
  ADOCalculate.SQL.Clear;
  ADOCalculate.SQL.Add('Delete From Dop_nacenki');
  ADOCalculate.ExecSQL;
  ADOCalculate.SQL.Clear;
  ADOCalculate.SQL.Add('Select * From Dop_nacenki');
  ADOCalculate.Open;

Последний раз редактировалось Evgeniy26; 30.06.2009 в 11:22.
Evgeniy26 вне форума Ответить с цитированием
Старый 30.06.2009, 11:31   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
нельзя же один и том же query использовать для отображения данных и при помощи него же удалять данные.
Это еще почему? Вполне можно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.06.2009, 11:35   #13
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это еще почему? Вполне можно.
Но у меня же почему то не получалось.
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 30.06.2009, 11:36   #14
SlavaSH
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 174
По умолчанию

Цитата:
Сообщение от Droid Посмотреть сообщение
Я же не знал Спасибо получилось )))) А добавлять тоже через него или редактировать ? Потому что добавление у меня через ADOQuery - работает.
Ну добавление и должно работать. Ты же не используешь в этот момент этот Query.

А вот при изменении должна возникать такая же ошибка.
Но вообще для отображаения данных используется TADOQuery, а для изменения, добавления и удаления желательно использовать TADOCommand. Он специально для этого и предназначен. Можно использовать один и тот же для изменения, добавления и удаления.
SlavaSH вне форума Ответить с цитированием
Старый 30.06.2009, 11:38   #15
SlavaSH
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 174
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это еще почему? Вполне можно.
да что вы говорите?

интересно, как можно здесь:
Код:
DM.ADOQ_PAC.Close;
DM.ADOQ_PAC.SQL.Clear;
DM.ADOQ_PAC.SQL.Add('DELETE FROM pacient WHERE id_pacienta=:D;');
DM.ADOQ_PAC.Parameters.FindParam('D').Value:=DM.ADOQ_PACid_pacienta.DataSet.RecNo;
DM.ADOQ_PAC.ExecSQL;
прочитать значение у DM.ADOQ_PACid_pacienta.DataSet.RecN o если DM.ADOQ_PAC в этот момент закрыт?
SlavaSH вне форума Ответить с цитированием
Старый 30.06.2009, 11:43   #16
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

В этом случае не как:
Код:
DM.ADOQ_PAC.Parameters.FindParam('D').Value:=DM.ADOQ_PACid_pacienta.DataSet.RecNo;
Определить переменную или StoredProc.

Последний раз редактировалось Evgeniy26; 30.06.2009 в 11:58.
Evgeniy26 вне форума Ответить с цитированием
Старый 30.06.2009, 11:45   #17
SlavaSH
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 174
По умолчанию

Цитата:
Сообщение от Evgeniy26 Посмотреть сообщение
Можно....
Работает:
Код:
  ADOCalculate.SQL.Clear;
  ADOCalculate.SQL.Add('Delete From Dop_nacenki');
  ADOCalculate.ExecSQL;
  ADOCalculate.SQL.Clear;
  ADOCalculate.SQL.Add('Select * From Dop_nacenki');
  ADOCalculate.Open;
не смешно)))
и что после этих чудесных действий пользователь увидет на своём экране?
все данные, которые он старательно забивал удалились одним нажатием кнопки???
я имел в виду, что нельзя использовать тот запрос, который был у Droid.
SlavaSH вне форума Ответить с цитированием
Старый 30.06.2009, 11:48   #18
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Я знаю, что там будет. Не смеши.
Это просто пример то, что можно использовать один Query. Дак ты объясни почему, ты его запутал, он думает, что через один Query удалять и отображать не льзя.

Последний раз редактировалось Evgeniy26; 30.06.2009 в 11:51.
Evgeniy26 вне форума Ответить с цитированием
Старый 30.06.2009, 12:04   #19
SlavaSH
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 174
По умолчанию

Цитата:
Сообщение от Evgeniy26 Посмотреть сообщение
Я знаю, что там будет. Не смеши.
Это просто пример то, что можно использовать один Query. Дак ты объясни почему, ты его запутал, он думает, что через один Query удалять и отображать не льзя.
Никого я не запутал. Правильно я сказал, что нельзя. Это просто неразумно даже в тех случаях, когда это будет работать. Тот вариант, который вы предложили вряд ли когда-нибудь найдет свое применение.
SlavaSH вне форума Ответить с цитированием
Старый 30.06.2009, 12:29   #20
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от SlavaSH Посмотреть сообщение
Никого я не запутал. Правильно я сказал, что нельзя. Это просто неразумно даже в тех случаях, когда это будет работать. Тот вариант, который вы предложили вряд ли когда-нибудь найдет свое применение.
Код:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, ExtCtrls, ComCtrls, Mask, Buttons;

type
  TFD_PAC = class(TForm)
    DateTimePicker1: TDateTimePicker;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Memo1: TMemo;
    DBListBox1: TDBListBox;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Edit5KeyPress(Sender: TObject; var Key: Char);
    procedure DBListBox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FD_PAC: TFD_PAC;
  i :integer;

implementation

uses Unit2, Unit1;

{$R *.dfm}

procedure TFD_PAC.BitBtn1Click(Sender: TObject);
begin
DM.ADOQ_PAC.Close;
DM.ADOQ_PAC.SQL.Clear;
DM.ADOQ_PAC.SQL.Text:='INSERT INTO pacient (familiya,imya,otchestvo,data_rogdeniya,telefon,kollichestvo_detey,semeynoe_pologenie,adres,gitel,obrazovanie,opekun) VALUES (:e1,:e2,:e3,:d,:e4,:e5,:e6,:e7,:e8,:m1,:o1);';
DM.ADOQ_PAC.Parameters.ParamByName('e1').Value:=Edit1.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e2').Value:=Edit2.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e3').Value:=Edit3.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e4').Value:=Edit4.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e5').Value:=strtoint(Edit5.Text);
DM.ADOQ_PAC.Parameters.ParamByName('e6').Value:=Edit6.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e7').Value:=Edit7.Text;
DM.ADOQ_PAC.Parameters.ParamByName('e8').Value:=Edit7.Text;
DM.ADOQ_PAC.Parameters.ParamByName('m1').Value:=memo1.Text;
dm.ADOQ_PAC.Parameters.ParamByName('o1').Value:=i;
DM.ADOQ_PAC.Parameters.ParamByName('d').Value:= FormatDateTime('yyyy-mm-dd', datetimepicker1.Date);
{if Radiogroup1.ItemIndex=1 then
begin
DM.ADOQ_PAC.Parameters[4].Value:='Муж';
DM.ADOQ_PAC.Parameters.ParamByName('r1').Value:=radiogroup1.Items;
end;
if Radiogroup1.ItemIndex=2 then
begin
DM.ADOQ_PAC.Parameters[4].Value:='Жен';
DM.ADOQ_PAC.Parameters.ParamByName('r1').Value:=radiogroup1.Items;
end;  }
//dblookupcombobox1.KeyValue:='Муж';
//DM.ADOQ_PAC.Parameters[0].Value:=Edit1.Text;
DM.ADOQ_PAC.ExecSQL;

DM.ADOQ_PAC.Close;
DM.ADOQ_PAC.SQL.Clear;
DM.ADOQ_PAC.SQL.Add('SELECT * FROM pacient');
DM.ADOQ_PAC.Open;
FormActivate(Self);
//
end;

procedure TFD_PAC.FormActivate(Sender: TObject);
begin
//DBEdit1.DataField:='familiya';
GL_F.DBNavigator1.BtnClick(nbInsert);
i:=1;
end;
у меня код по добавленю, у меня все работает но че то очень криво

а как тогда редактировать ?
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПОМОГИТЕ РЕШИТЬ ПРОБЛЕМУ !!!!!!!!!!!! ЛиЛу Помощь студентам 5 29.12.2008 15:36
Помогите решить проблему nismo Microsoft Office Excel 7 12.09.2008 08:59
помогите решить проблему 1234 Общие вопросы Delphi 2 04.07.2008 11:52
помогите решить проблему ... alexey7 Microsoft Office Excel 2 16.10.2007 13:25