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 13:12:00) [1]

А этоа точно не долна попасть?
204010001      4             8,01,2005


Точно, потомучто оно считалось в другом отчете с периодом 1.12.2004 - 31.12.2004. Такая заморочка.


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

А этоа точно не долна попасть?
204010001      4             8,01,2005


Точно, потомучто оно считалось в другом отчете с периодом 1.12.2004 - 31.12.2004. Такая заморочка.


Scorpio   (2005-02-09 13:06:00) [3]

Такое может быть и надо оставить с высокой датой 02.01.05, а второе удалить.

А зачем их тогда вставлять, а не проверять "диапазон сразу"?- там проблема, что 4 БД по 150 мб более 300,000 записей, а индексные файлы *.idx Фоксовские, я их подключить к моей программе немогу, и те БД создаются прграммой написанной на фоксе, так что индексные файлы я немогу использовать.


ЮЮ   (2005-02-09 13:06:00) [4]

А этоа точно не долна попасть?
204010001      4             8,01,2005

Т.е. тебе нужны такие записи (дело, решение) за отчетный период, для которых нет соответствующих записей (дело, решение) в предшествующие периоду сроки?

>ч/з SQL запрос все правильно неудальшь
зато почти всегда можно выбрать только то, что нужно


ЮЮ   (2005-02-09 12:57:00) [5]

>>wh_, re_ и rf_ в двух записях совпадают?
>Чтобы одновременно все три были похожи, токого небывает.

речь не о "похожесте", а о "равенстве" :)

а так бывает?
Дело Решение Дата
33   10      01.01.05
33   10      02.01.05


какую из записей предпочтешь оставить.

>Базу в котоорой происходят удаления я формирую сам из 4 других
А зачем их тогда вставлять, а не проверять "диапазон сразу"?


Scorpio   (2005-02-09 12:51:00) [6]

Я немогу понять что ты непонимаешь, там все просто, ч/з SQL запрос все правильно неудальшь, а чтобы построчно - я немогу подключить ADOTable.

А есть поля, одназначно определяющее запись, в случае, если
wh_, re_ и rf_ в двух записях совпадают?
- такого небывает.

проверить по базе со всеми его похожими номерами ?- я писал, что в моей таблице могуть до 20 раз встречаться номера дел у них могут быть похожие даты и решения, но не все три одновременно.

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

Пример (период 01,01,2005 - 10,01,2005)
wh_  re_  rf_
204010001      4             8,01,2005
204010001      5             3,01,2005
204010001      4             30,12,2004
204020002      4             30,11,2004
204020002      3             5,10,2004
204030003      8             8,01,2005
204030003      6             7,01,2005

Должно остаться:
204010001      5              3,01,2005
204030003      8              8,01,2005
204030003      6              7,01,2005


msguns   (2005-02-09 12:34:00) [7]

Ааа, ты все о своем, о женском. Посты не читаем, на предложения и замечания не реагируем.
Ну что ж, флаг в руки. И барабанные палочки. Вместо барабана можно по голове, ей не вредно будет
Счастливо побарабанить !


Scorpio   (2005-02-09 12:22:00) [8]

Теперь мне нужно взять номер дела, его решение и дату и проверить по базе со всеми его похожими номерами дел и сравнить было ли такое решение принято ранее и если было и оно невходит в отчетный период, (т.е. у меня есть диапазон дат по которым я смотрю rf_), то я его удаляю, также как и то что я нашел, т.е. в моей БД в итоге должно остаться дела решения которых ранее невстречальсь, они неповторялись, входили в отчетный период.

Номер дела, номер решения, дата принятия в одной строке находятся.

А есть поля, одназначно определяющее запись, в случае, если
wh_, re_ и rf_ в двух записях совпадают?
Чтобы одновременно все три были похожи, токого небывает.

Базу в котоорой происходят удаления я формирую сам из 4 других, так что если неправильный диапазон дат мне нестрашен.


msguns   (2005-02-09 12:19:00) [9]

Что за манера все заталкивать в одну монстроидальную таблицу, гениально называемую таинственным словом "база" ?
А вот нельзя было по-нашему, по-бразильски ? Без этих восточных запремудростей:
1. Таблица дел. Содержит поля:
ID
номер вх.
номер исх.
дата
ссылка на документ-родитель (если их может быть несколько, то
 детал таблица с ID документов)
ФИО исполнителя
ФИО отв.лица (утвержд.подпись)
<всякая всячина о документе>

2. Таблица решений. Содержит поля:
ID
Дата решения
Дата срока исполнения
Код источника (комиссия, отдел, комитет и т.д.)
ФИО ответств. лица
список лиц, если была комиссия (обычный VARCHAR, но отображается как мемо для того, чтоб каждое ФИО было с новой строки)
<инфа о решении>
список ID документов, которых касается
список ID документов, на основании которых принято.

и т.д.
Схема примерная, конечно, я же не знаю что за "дела" тебе поручено учитывать. Что-то похожее на типичный контроль директивных документов в организации подобной какому-нить исполкому.
Но по схеме данных хотя бы можно понять, "кто на ком стоит"


msguns   (2005-02-09 12:08:00) [10]

>Scorpio ©   (09.02.05 11:57) [34]

Сам-то понял, что написал ?
Что это за китайский иероглиф :
проверить по базе со всеми его похожими номерами?

или это:
сравнить было ли такое решение принято ранее и если было и оно невходит в отчетный период,?

Что с чем сравниваешь ? "Похожие" номера делов или дела с решениями ? Где тут котлеты, где мухи, а где тарелка ? ИМХО, все перемешано и свалено в одну большую кучу, откуда предполагается хлебать. Битое стекло пополам с дохлыми мухами.

Вердикт: база спроектирована не просто бездарно. Преступно. За такое надо сажать. Лет на 5-10. За статьи и учебники.
Причем срочно !


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

DELETE FROM table
WHERE
NOT (rf_ BETWEEN :FirstDate AND :LastDate)

улалит все записи, не попадающие в "отчетный период", хотя очень странное обращение с записями, не боишься, что пользователь ошибется при задании периода и базе хана?

А есть поля, одназначно определяющее запись, в случае, если
wh_, re_ и rf_ в двух записях совпадают?


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

Смотри это мое условие:

 Есть БД поле wh_- номера дел, в базе могут повторяться от двух до бесконечноти.
 поле re_- решение к этому делу.
 поле rf_- дата принятия решения

 Базу я отсортировал по номерам дел, и по дате принятия решений.
 
 Теперь мне нужно взять номер дела и проверить по базе со всеми его похожими номерами и сравнить было ли такое решение принято ранее и если было и оно невходит в отчетный период, (т.е. у меня есть диапазон дат по которым я смотрю rf_), то я его удаляю, также как и то что я нашел, т.е. в моей БД в итоге должно остаться дела решения которых ранее невстречальсь, они неповторялись, входили в отчетный период.


msguns   (2005-02-09 11:44:00) [13]

>ЮЮ ©   (09.02.05 11:40) [31]
>Переходить на ADOCommand !!! :)

Ну да, как сиквел, так обязательно на адо ;))
Биде тоже его некисло понимает ;)
Тут трабла вовсе не в bde..


msguns   (2005-02-09 11:41:00) [14]

>Scorpio ©   (09.02.05 11:35) [29]
> как мне теперь быть??

Немедленно бросать программить приложения с БД и "Учиться, учиться и учиться". Как говорил великий В.И.Ленин


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

>как мне теперь быть??

Переходить на ADOCommand !!! :)
DELETE FROM table
WHERE
 (re_ IS NULL) OR
 (wh_ IS NULL) OR
 (re IN (1,30,34,37,41,42,44))

что ещё удалить?


msguns   (2005-02-09 11:39:00) [16]

И, главное, ни единойстроки комментария. Видимо, предполагается, что каждый мало-мальски продвинутый джидай должен с молоком матери всосать, что обозначают эти таинственные wh_, rf_ и re_
А эти прыжки-перескоки из внутреннего цикла во внешний и поистине мастерское владение Next`ами, Prior`ами, Detet`ами и Insert`ами внутри сканирующего цикла напоминают Брюса Ли, не правда ли ?


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

Но у меня проблема, моя БД находится не у меня на машине а у черта на куличках, как мне теперь быть??


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

Потому, что движок другой. БДЕ форева !!!


msguns   (2005-02-09 11:32:00) [19]

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

Ух и наколбасил пацан ;))
Что-то подсказывает мне, что всю эту трахомудрию можно вполне впихнуть в полтора-два десятка строк кода.
Или вообще обойтись одним-двумя запросами


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

Тогда еще такой вопрос, почему если я подключаю базу через Table, а не ADOTable , то она мне ошибку невыдает??


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

Наверх

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