Вставка в Oracle

DENE
Дата: 06.10.2006 12:19:38
Есть форма с Mask Edit и Обычным текстовым полем, которая передаёт данные в таблицу Оракла, добавил ещё один MaskEdit, подскажите, как сделать чтобы в таблицу добавлялись все строки из промежутка данных между 2 полями MaskEdit включительно, а третее текстовое поле забивалось ко всем строкам статично (просьба привести пример кода).

Вот мой сорц:
unit CMR;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, Oracle, AppUtils, Mask;

type
  TfrmCMR = class(TForm)
    Label2: TLabel;
    cmrDA: TEdit;
    Label3: TLabel;
    btnSend: TBitBtn;
    BitBtn2: TBitBtn;
    cmrText1: TMaskEdit;
    cmrText2: TMaskEdit;
    Label1: TLabel;
    procedure btnSendClick(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    FCMRID: Integer;
    FCMRStatus: Integer;
  public
    { Public declarations }
    procedure OpenCMR(aCMRID: Integer);
    procedure CreateCMR;
  end;

var
  frmCMR: TfrmCMR;

implementation

uses DBSess;

{$I TFS_Messages.pas}

{$R *.DFM}

procedure TfrmCMR.CreateCMR;
begin
	FCMRID := 0;
    FCMRStatus := 0;
    cmrDA.Text := '';
    cmrText1.Text := '';
    cmrText2.Text := '';
end;

procedure TfrmCMR.OpenCMR(aCMRID: Integer);
   
begin
	FCMRID := aCMRID;


	with TOracleQuery.Create(Application) do
    begin
    	Session := dbs;

    	SQL.Add('SELECT * FROM DEVEL.CMR');
        SQL.Add('WHERE CMRID=:CMRID');

        DeclareVariable('CMRID', otInteger);
        SetVariable('CMRID', FCMRID);

        Execute;

        FCMRStatus := FieldAsInteger('STATUS');
        cmrDA.Text := FieldAsString('DA');
        cmrText1.Text := FieldAsString('TEXT');

    end;

end;

procedure TfrmCMR.btnSendClick(Sender: TObject);
begin
	Close;
end;

procedure TfrmCMR.BitBtn2Click(Sender: TObject);
begin
	Close;
end;

procedure TfrmCMR.FormClose(Sender: TObject; var Action: TCloseAction);
begin
	Action := caFree;
end;

procedure TfrmCMR.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
	newID: Integer;

begin
	if ModalResult = mrOk then
    begin
    	if FCMRStatus = 1 then
        begin
        	if MessageDlg('Ñîîáùåíèå óæå îòïðàâëåíî. Îòïðàâèòü ïîâòîðíî?',
            	mtConfirmation, [mbYes, mbNo], 0) <> mrYes then
            begin
            	CanClose := False;
            	Exit;
            end;
        end;
    	with TOracleQuery.Create(Application) do
        begin
        	Session := dbs;
            if FCMRID = 0 then
            begin
            	SQL.Add('SELECT DEVEL.SEQ_CMR.NEXTVAL ID FROM DUAL');
                Execute;
                newID := FieldAsInteger('ID');
                SQL.Clear;

            	SQL.Add('INSERT INTO DEVEL.CMR(');
                SQL.Add('CMRID, DA, TEXT, OWNER');
                SQL.Add(')VALUES(');
                SQL.Add(':CMRID, :DA, :TEXT, USER');
                SQL.Add(')');
            end else
            begin
            	SQL.Add('UPDATE DEVEL.CMR SET');
                SQL.Add('DA=:DA, TEXT=:TEXT, STATUS=NULL,');
                SQL.Add('WHERE CMRID=:CMRID');
            end;

			DeclareVariable('CMRID', otInteger);
            DeclareVariable('DA', otString);
            DeclareVariable('TEXT', otString);

            if FCMRID = 0 then
            begin
            	SetVariable('CMRID', newID);
            end else
            begin
            	SetVariable('CMRID', FCMRID);
            end;

            SetVariable('DA', trim(cmrDA.Text));
            SetVariable('TEXT', cmrText1.Text);

            Execute;

            dbs.Commit;

            AppBroadcast(TFSM_REFRESH_CMRLIST, 1, 0);
        end;
    end;
end;

procedure TfrmCMR.FormCreate(Sender: TObject);
begin
	FCMRID := 0;
    cmrText1.Text := '';
    cmrText2.Text := '';
end;

end.