Конференция "Базы" » Delphi7+DBGridEh+FireBird+IBDataSet [D7, FireBird]
 
  • Alekcey © (13.08.10 11:58) [0]
    Delphi7+DBGridEh+FireBird+IBDataSet

    таблица:

    CREATE TABLE RANGEIP (
       ID_RANGEIP  INTEGER NOT NULL,
       IP1         VARCHAR(20),
       IP2         VARCHAR(20),
       FLAGIS      SMALLINT
    );



    с IBDataSet делаю так:
    в GeneratorField:
    GEN_RANGEIP_ID -> ID_RANGEIP By 1

    в InsertSQL:
    insert into RANGEIP (ID_RANGEIP, IP1, IP2, FLAGIS ) values (:ID_RANGEIP, :IP1, :IP2, :FLAGIS)

    в ModifySQL:
    update RANGEIP set IP1=:IP1, IP2=:IP2, FLAGIS=:FLAGIS where ID_RANGEIP=:OLD_ID_RANGEIP

    в RefreshSQL:
    select * from  RANGEIP where ID_RANGEIP=:ID_RANGEIP order by IP1

    в SelectSQL:
    select * from  RANGEIP order by IP1

    При выполнении кода:

      DataModuleMain.IBDataSetRANGEIP.open;
      DataModuleMain.IBDataSetRANGEIP.Insert;   DataModuleMain.IBDataSetRANGEIP.ParamByName('IP1').AsString:=FormMain.EditRangeI P1.Text+'.'+FormMain.EditRangeIP2.Text+'.'+FormMain.EditRangeIP3.Text+'.'+FormMain.EditRangeIP4.Text;
      DataModuleMain.IBDataSetRANGEIP.ParamByName('IP2').AsString:=FormMain.EditRangeI P5.Text+'.'+FormMain.EditRangeIP6.Text+'.'+FormMain.EditRangeIP7.Text+'.'+FormMain.EditRangeIP8.Text;
      DataModuleMain.IBDataSetRANGEIP.Post;



    возникает ошибка:
    Field "IP1" not found
  • Sergey13 © (13.08.10 12:10) [1]
    > [0] Alekcey ©   (13.08.10 11:58)

    > DataModuleMain.IBDataSetRANGEIP.ParamByName('IP1').AsString:
    > =FormMain.EditRangeI P1.Text+'.'+FormMain.EditRangeIP2.Text+'.'+FormMain.
    > EditRangeIP3.Text+'.'+FormMain.EditRangeIP4.Text;

    Присваивать значения надо ПОЛЯМ, а не параметрам.
  • Alekcey © (13.08.10 13:11) [2]
    понял, спасибо
  • Alekcey © (13.08.10 13:28) [3]
    Мужики, удобный компонент оказывается, надо взять на вооружение.

    для MS SQL Server подобного компонента с SelectSQL, DeleteSQL ... не подскажите?
  • Alekcey © (13.08.10 15:10) [4]
    на гриде CheckBox сделал. устанавливаю флаг. закрываю программу, запускаю снова, флаг не установлен.
    Если ставлю флаги на нескольких полях закрываю программу, запускаю снова, флаги установлены только на некоторых полях.

    Я так понял транзакцию комитить надо. в каком методе это делать или? или.. или как?
    в транзакции Read_Committed
  • Alekcey © (13.08.10 15:53) [5]
    на FormShow:
     Way_to_database:=Application.ExeName;
     while Way_to_database[length(Way_to_database)]<>'\' do
       delete(Way_to_database,length(Way_to_database),1);

     DataModuleMain.IBDatabaseMain.Connected:=false;
     DataModuleMain.IBDatabaseMain.DatabaseName:=Way_to_database+'BDSCANIP.fdb';
     DataModuleMain.IBDatabaseMain.Connected:=true;

     DataModuleMain.IBTransactionRANGEIP.Active:=true;
     DataModuleMain.IBDataSetRANGEIP.open;
     DataModuleMain.IBDataSetRANGEIP.First;
     DataModuleMain.IBDataSetRANGEIP.Last;
     DataModuleMain.IBDataSetRANGEIP.First;


    Transaction Properties= Read_Committed

    добавляю запись:
      DataModuleMain.IBDataSetRANGEIP.open;
      DataModuleMain.IBDataSetRANGEIP.Insert;   DataModuleMain.IBDataSetRANGEIP.FieldByName('IP1').AsString:=FormMain.EditRangeI P1.Text+'.'+FormMain.EditRangeIP2.Text+'.'+FormMain.EditRangeIP3.Text+'.'+FormMain.EditRangeIP4.Text;   DataModuleMain.IBDataSetRANGEIP.FieldByName('IP2').AsString:=FormMain.EditRangeI P5.Text+'.'+FormMain.EditRangeIP6.Text+'.'+FormMain.EditRangeIP7.Text+'.'+FormMain.EditRangeIP8.Text;
      DataModuleMain.IBDataSetRANGEIP.FieldByName('FLAGIS').AsInteger:=1;
      DataModuleMain.IBDataSetRANGEIP.Post;



    Удаляю запись:
    if  DataModuleMain.IBDataSetRANGEIP.FieldByName('ID_RANGEIP').Value<>null then
    begin
      DataModuleMain.IBDataSetRANGEIP.Delete;
      DataModuleMain.IBDataSetRANGEIP.open;
    end;



    Всё вышеперечисленное работает нормально. и коммитится сразу, а checkBox сохраняется не на всех записях
  • Sergey13 © (13.08.10 16:11) [6]
    > [5] Alekcey ©   (13.08.10 15:53)
    > Всё вышеперечисленное работает нормально. и коммитится сразу,
    > а checkBox сохраняется не на всех записях

    Во всем вышеперечисленном нет кода установки/переустановки флага.
  • Alekcey © (13.08.10 16:28) [7]
    а никакой код и не писал

    CheckBoxces в true
    и
    в KeyList 1 и 0
  • Sergey13 © (16.08.10 13:32) [8]
    > [7] Alekcey ©   (13.08.10 16:28)
    > а никакой код и не писал

    > [5] Alekcey ©   (13.08.10 15:53)
    > добавляю запись:
    > Удаляю запись:

    После чего именно
    > checkBox сохраняется не на всех записях

    ?
 
Конференция "Базы" » Delphi7+DBGridEh+FireBird+IBDataSet [D7, FireBird]
Есть новые Нет новых   [134433   +22][b:0][p:0.002]