Конференция "Начинающим" » Помогите с полем
 
  • 6ruse (11.08.10 08:07) [0]
    Доброго времени суток! я пишу:
     for i := 1 to j do
      begin
       FrmMain.TBL_PHONES.Close;
       FrmMain.TBL_PHONES.Open();
       FrmMain.TBL_PHONES.Insert;
       FrmMain.TBL_PHONES.FieldByName('PERIOD').Value := FrmMain.DateTimePicker1.Date ;
       FrmMain.TBL_PHONES.FieldByName('PHONE').AsString := main_P_PHONE[i].phone ;
       FrmMain.TBL_PHONES.FieldByName('CALLSCOUNT').AsString := main_P_PHONE[i].CALLSCOUNT ;
       FrmMain.TBL_PHONES.FieldByName('SUM_OF_CALLS').AsString := main_P_PHONE[i].SUM_OF_CALLS;
       FrmMain.TBL_PHONES.Post();
      FrmMain.TBL_PHONES.UpdateTransaction.Commit();
       FrmMain.TBL_PHONES.Close;
       FrmMain.TBL_PHONES.SQLs.SelectSQL.Text := 'SELECT GEN_ID( FOR_PHONES_INSERT,0) from RDB$DATABASE';
       FrmMain.TBL_PHONES.Open ;
       Trim(main_P_PHONE[i].CALLSCOUNT) ;
        for y := 1 to Strtoint(main_P_PHONE[i].CALLSCOUNT) do
         begin
          main_P_CALLS[y].phones_ID := FrmMain.TBL_PHONES.Fields[0].AsInteger ;
          end;
      end;
    первый проход основного цикла нормальный при вхождении в первый цикл во второй раз появляется ошибка "поле PERIOD не найдено". Подскажите пожалуйста в чем тут дело
  • sniknik © (11.08.10 09:56) [1]
    > Подскажите пожалуйста в чем тут дело
    в бессмысленной экономии компонент. + невнимательность.
  • sniknik © (11.08.10 09:59) [2]
    > 'SELECT GEN_ID( FOR_PHONES_INSERT,0) from RDB$DATABASE'
    вот покажи(найди сам если не доверяешь ошибкам) в запросе "поле PERIOD"
  • Виталий Панасенко (11.08.10 13:59) [3]
    как я помню, ты используешь FIBPlus.. даже если СУБД - ИБ или старые версии ФБ, то :
    первое - FrmMain.TBL_PHONES.UpdateTransaction.Commit(); это по большому счету нахрен не нужно. если используешь ДВА компонента транзакций для чтения и записи. выставляешь у FIBDataSetа св-во AutoCommit=True И все.
    второе - если СУБД ФБ 2.х то дергать генератор
    > 'SELECT GEN_ID( FOR_PHONES_INSERT,0) from RDB$DATABASE';

    так не стОит. для этого есть триггер и ключевое слово RETURNING.. если е все-таки хочется самому управлять генератором, то у FIBDataSet есть св-ва AutoUpdateOptions, где ты указываешь, какой генератор дергается, с каким шагом, для какой таблицы, для какого поля, в какой момент (OnNewRecord/BeforePost)

    З.Ы. пока писал, еще раз глянул твой код - это ты генератор дергаешь НА НОЛЬ, чтобы определить количество записей? Ну-ну, удачи...
  • Alekcey © (13.08.10 13:33) [4]
    сам так сегодня лапухнулся сегодня . пару тем выше смотри
 
Конференция "Начинающим" » Помогите с полем
Есть новые Нет новых   [134434   +26][b:0][p:0]