![]() |
| ||
|
|
Новости |
Поиск |
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 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 , то она мне ошибку невыдает??