Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ADOTable - ошибка при подключении [D7, dBase, FoxPro]


Страницы:   1 2 3

Scorpio ©   (2005-02-09 10:12:00) 

Добрый день мастера, подскажите пишу:

ADOTable1.Active := true;
ADOTable1.First;
while not ADOTable1.Eof do
    begin
         ADOTable1.Next;
    end;


А когда запускаю компилятор она мне выдает:
Could not convert variant of type(Null) into type (String)  

Как мне это лечить ??


Scorpio   (2005-02-09 11:08:00) [21]

Мне нужно прсто мою БД паодключить ч/з ADOTable чтобы небыло ошибок и все.


Плохиш   (2005-02-09 11:04:00) [22]


>Scorpio ©   (09.02.05 11:02) [22]

Книжку бы чтоли какую почитал для начала :-(


Плохиш   (2005-02-09 11:03:00) [23]


>Scorpio ©   (09.02.05 10:58) [19]

Анекдот, про пьяного под фонарём напоминает :-(

PS. 11:00 московского времени, можно фа форуме больше не тусоваться :-(


Scorpio   (2005-02-09 11:02:00) [24]

DataSource1.DataSet.Edit; - перевод в рижим редактирования
АDODataSet1.Delete; - Удаление строки
DataSource1.DataSet.Edit;
ADODataSet1.Post; - запомнить для БД,

Но Post используетсмя для ADOTable, я думал что и для ADODataSet тоже проканает, а она нехочет, поэтому хочу сразу ч/з ADOTable произвести выборку.


ЮЮ   (2005-02-09 11:02:00) [25]

вместо
 DataSource1.DataSet.Edit;
 ADODataSet1.Delete;
 DataSource1.DataSet.Edit;
 ADODataSet1.Post;

достаточно
 ADODataSet1.Delete;
при этом ADODataSet1.next не надо, т.к. текущей записью после этого станет следующая, если есть.

Source1.DataSet и ADODataSet1 - один и тот же набор данных?


Плохиш   (2005-02-09 10:58:00) [26]


>Scorpio ©   (09.02.05 10:51) [16]

8-O Нифига себе Та конструкция что сверху это вся моя программа

                     DataSource1.DataSet.Edit;
                    ADODataSet1.Delete;
                    DataSource1.DataSet.Edit;
                    ADODataSet1.Post;

Ой, что енто?


Scorpio   (2005-02-09 10:58:00) [27]

Да я хочу это все переделать по новому с учетом ADOTable, только когда я ее подключаю у меня ошибка выскакивает, этот кусок я исключил, думал что где то здесь, и попробовал, просто подключить чтобы активировать таблицу, и просто пробежаться по ее данным, а она мне сразу без пробега ошибку с типами, а потом повторно сразу запускаю и она пробег делает, как мне избежать эту ошибку с данными ??


ЮЮ   (2005-02-09 10:54:00) [28]

Начнем с начала, где (в каком обработчике) стоит указанный в [1] код?


janb   (2005-02-09 10:53:00) [29]

упс...


Scorpio   (2005-02-09 10:51:00) [30]

procedure TForm1.BitBtn1Click(Sender: TObject);
var i, n, i1, mo, yd, k4, re : integer;
   rr : array of integer;
   mas : array [1..100] of integer;
   report : array [1..20,1..1000] of integer;
   metka, metka1 : TBookmark;
label    l1, l2, l3, l4 ;
// mo - ?? ??????? ??????? ???????
// yd - ????? ??
begin
    rr := 0;
    SetLength(rr, 21);

    ADODataSet1.Active := true;
//     ADOTable2.Active := true;
//     ADOTable2.First;
    ADODataSet1.First;
    i := 0;
    i1 := 0;
l3:  while not ADODataSet1.eof do
         begin
              ADODataSet1.DisableControls;
              if ADODataSet1.FieldByName('re_').IsNull then
                begin
                     DataSource1.DataSet.Edit;
                     ADODataSet1.Delete;
                     DataSource1.DataSet.Edit;
                     ADODataSet1.Post;
                end
                else
                    begin
                         re := ADODataSet1.FieldByName('re_').AsInteger;
                         if (re = 1) or (re = 30) or (re = 34) or (re = 37) or (re = 41) or (re = 42) or (re = 44) then
                           begin
                                DataSource1.DataSet.Edit;
                                ADODataSet1.Delete;
                                DataSource1.DataSet.Edit;
                                ADODataSet1.Post;
                                goto l3;
                           end;

                    end;

              if ADODataSet1.FieldByName('wh_').IsNull then
                begin
                     DataSource1.DataSet.Edit;
                     ADODataSet1.Delete;
                     DataSource1.DataSet.Edit;
                     ADODataSet1.Post;
                     goto l3;
                end else
                   yd := ADODataSet1.FieldByName('wh_').AsInteger;
//             DataSource1.DataSet.Edit;
// ????? ? ????????? ?????? ???????? ??????
// ??????? ????? ?????????? ? ???????? ??????? ???????.
              if ADODataSet1.FieldByName('rf_').AsDateTime <= StrToDate(Edit1.Text) then
                begin
                     DataSource1.DataSet.Edit;
                     ADODataSet1.Delete;

                     ADODataSet1.Prior;
                     DataSource1.DataSet.Edit;
                     ADODataSet1.Post;
                end;
              if (ADODataSet1.FieldByName('rf_').AsDateTime >= StrToDate(Edit1.Text)) and (ADODataSet1.FieldByName('rf_').AsDateTime <= StrToDate(Edit2.Text)) then
                begin
                     if not ADODataSet1.FieldByName('re_').IsNull then
                       re := ADODataSet1.FieldByName('re_').AsInteger;
                     metka :=  ADODataSet1.GetBookmark;
//                      ADODataSet1.Next;
//                      while not ADOTable1.eof do
// ?????????? ???????? ?? ??????? ?????? ? ?????? ????????
l2:                       begin
l4:                            if ADODataSet1.Eof then
                                begin
                                     ADODataSet1.GotoBookmark(metka1);
                                     goto l1;
                                end;

                              ADODataSet1.Next;
                              if ADODataSet1.FieldByName('re_').IsNull then
                                 begin
                                      DataSource1.DataSet.Edit;
                                      ADODataSet1.Delete;
                                      goto l4;
                                 end else
                               if (ADODataSet1.FieldByName('re_').AsInteger = re) and (ADODataSet1.FieldByName('rf_').AsDateTime >= StrToDate(Edit1.Text)) and (ADODataSet1.FieldByName('rf_').AsDateTime <= StrToDate(Edit2.Text))and (ADODataSet1.FieldByName('wh_').AsInteger = yd) then
                                   begin
                                        DataSource1.DataSet.Edit;
                                        ADODataSet1.Delete;
                                        goto l4;
                                   end;
                               if (ADODataSet1.FieldByName('re_').AsInteger = re) and (ADODataSet1.FieldByName('rf_').AsDateTime < StrToDate(Edit1.Text)) and (ADODataSet1.FieldByName('wh_').AsInteger = yd) then
                                  begin
                                       DataSource1.DataSet.Edit;
                                       ADODataSet1.Prior;

                                       ADODataSet1.Next;
                                       metka1 := ADODataSet1.GetBookmark;
                                       ADODataSet1.Delete;
                                       ADODataSet1.GotoBookmark(metka1);
                                       ADODataSet1.FreeBookmark(metka1);
                                       i := 1;
                                       goto l4;
                                  end;
                               if ADODataSet1.FieldByName('wh_').AsInteger <> yd then
                                     begin

                                          ADODataSet1.GotoBookmark(metka);
                                          ADODataSet1.FreeBookmark(metka);

                                          goto l2;
                                     end;
                               i := 1;
                               ADODataSet1.next;
                         end;
                end;

l1:            ADODataSet1.next;
         end;
end;

Но здесь у меня были очень сильные тормоза и немог запомнить то что удалил.
Сейчас хочу попробовать ч/з ADOTable


janb   (2005-02-09 10:50:00) [31]

Просто напиши что ты хочешь этим сделать подробнее. Смысл


Scorpio   (2005-02-09 10:47:00) [32]

Anatoly Podgoretsky

Мне ненужна пауза в программе, я немогу просто без ошибки подключить базу, я могу дать исходный код с использованием ADODataSet, но он очень гомоздкий, и у меня в конце неполучалось запомнить те записи которые я удалил, поэтому я хочу попробоватиь ч/з ADOTable, но здесь возникла ошибка, при запуске программы, онав мне кидает ошибку, а затем после повторного запуска, она производит прогон таблицы. Как мне избежать этой ошибки при подключении, даже если я сразу ADOTable прсваиваю ACTIVE = TRUE, всеравно она после запуска программы сначала выдает ошибку, и затем после повторного запуска производит прогон по таблице.


ЮЮ   (2005-02-09 10:45:00) [33]

>т.е. беру первое значение запоминаю позицию, затем спускаюсь ниже, и если есть определенные условиято удаляю ненужные строки, а затем поднимаюсь к первой записи и опускаюсь к следующе и т.д. и проделываю тоже самое с ней.

код для выделенного покажи


Anatoly Podgoretsky   (2005-02-09 10:39:00) [34]

Scorpio ©   (09.02.05 10:37) [10]
В потрепаться, там ты узнаешь не только Про него и про других, выборка будет более репрезентативная.


Anatoly Podgoretsky   (2005-02-09 10:38:00) [35]

Scorpio ©   (09.02.05 10:28) [6]
Обработки данных в коде не наблюдается, а наблюдается только организация паузы, а для организации пауз sleep более подходящ.


Scorpio   (2005-02-09 10:37:00) [36]

Плохиш у тебя какой Delphi ??


Плохиш   (2005-02-09 10:35:00) [37]


>Scorpio ©   (09.02.05 10:32) [8]

1. С учётом [2] и [6], врёшь.
2. Чудес не бывает.


Scorpio   (2005-02-09 10:32:00) [38]

String1 := ADOTable1['NullValue']; ??

Та конструкция что сверху это вся моя программа. А ошибку выдает, я же никакие переменные неиспользую??


Плохиш   (2005-02-09 10:32:00) [39]

asString + F1


Scorpio   (2005-02-09 10:28:00) [40]

Мне нужно чтобы она не ждала определенное время, а произвела обработку данных, там мне нужно произвести двойную обработку по таблице, т.е. беру первое значение запоминаю позицию, затем спускаюсь ниже, и если есть определенные условия то удаляю ненужные строки, а затем поднимаюсь к первой записи и опускаюсь к следующе и т.д. и проделываю тоже самое с ней.
  Ч/з ADODataSet у меня неочень получилось, хочу попробовать ч/з ADOTable.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо