![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADOTable - ошибка при подключении [D7, dBase, FoxPro]
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.