Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];

Вниз

ADOQUERY - Где я не прав?   Найти похожие ветки 

 
Vitaliy12 ©   (2007-05-25 12:22) [0]

Здравстуйте Мастера!

Помогите, заклинило. Не могу найти ошибку. В таблице ADOTable1 есть записи. ADOQuery1 делает запрос, но на выходе количество записей на одну меньше реально существующих. Фрагмент кода:

  ADOTable1.TableName:= "Temp_Start_70";
  ADOTable1.ConnectionString:= ReadIni("Options", "Con_Str_ADOT1");
  if ADOTable1.Active= False then ADOTable1.Open;
  ADOQuery1.ConnectionString:= ReadIni("Options", "Con_Str_Q1");
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Text:="select * from Temp_Start WHERE N_TEL BETWEEN "700000" AND "799999"";
  ADOQuery1.Open;
  try
   while not ADOQuery1.Eof do
     begin
        ADOTable1.Insert;
       for i:=0 to ADOQuery1.Fields.Count - 1  do
        begin
         ADOTable1.FieldByName(ADOQuery1.FieldDefs[i].name).Value :=
         ADOQuery1.Fields[i].Value;
       end;
     ADOTable1.Post;
     ADOQuery1.Next
    end;
   finally
 //  ADOQuery1.Close;
  end;

Где, что не так посоветуйте!

Всем спасибо!


 
ЮЮ ©   (2007-05-25 12:28) [1]

но на выходе количество записей на одну меньше реально существующих
реально существующих где? в Temp_Start или в ADOQuery1? Может из-за BETWEEN "700000" AND "799999" они в запрос не попали?


 
Vitaliy12 ©   (2007-05-25 12:32) [2]

реально существующих в Temp_Start. Количество записей соответствующих запросу в Temp_Start допустим 7, а ADOQuery1 выдает 6. При пошаговом режиме ( F7) записей получается 7. Где Ошибка?

Всем Спасибо!


 
ЮЮ ©   (2007-05-25 12:39) [3]

> а ADOQuery1 выдает 6

Откуда знаешь?

>При пошаговом режиме ( F7) записей получается 7. Значит так и есть. Но и без пошагой отладки цикл while not ADOQuery1.Eof do должен отработать 7 раз.


 
Vitaliy12 ©   (2007-05-25 12:41) [4]

>Откуда знаешь?

Посмотрел в таблице Temp_Start.


 
Плохиш ©   (2007-05-25 12:46) [5]


> Vitaliy12 ©   (25.05.07 12:32) [2]
> реально существующих в Temp_Start. Количество записей соответствующих
> запросу в Temp_Start допустим 7, а ADOQuery1 выдает 6. При
> пошаговом режиме ( F7) записей получается 7
.


> Vitaliy12 ©   (25.05.07 12:41) [4]
> >Откуда знаешь?
>
> Посмотрел в таблице Temp_Start.

Значит 7я запись не выполняет заданное условие, тут без вариантов.

PS. Хотелось бы узнать, как связаны две выделенные цитаты?


 
ЮЮ ©   (2007-05-25 12:47) [6]

> а ADOQuery1 выдает 6
> Посмотрел в таблице Temp_Start.

Не понятно... Если хотя бы ADOQuery1.RecordCount посмотрел бы. А то ... Бред какой то...
А в таблицу куда пишет смотрел?


 
stone ©   (2007-05-25 12:53) [7]

N_TEL >= 700000 AND N_TEL <= 799999


 
clickmaker ©   (2007-05-25 12:57) [8]

а between разве не включительно?

какая субд хоть, Виталий?


 
stone ©   (2007-05-25 13:18) [9]


> clickmaker ©   (25.05.07 12:57) [8]
> а between разве не включительно?

мда, в данном случае будет включительно :)


 
clickmaker ©   (2007-05-25 13:21) [10]

тьфу, блин, там же кавычки
between по строкам, а Виталий? то ли ты написал?


 
Плохиш ©   (2007-05-25 13:27) [11]


> clickmaker ©   (25.05.07 13:21) [10]
> тьфу, блин, там же кавычки
> between по строкам, а Виталий? то ли ты написал?

Написал-то то, но с пробелами разобраться не может :-))


 
Vitaliy12 ©   (2007-05-25 13:34) [12]

>between по строкам, а Виталий? то ли ты написал?

В таблице в столбце записи для условия. В данном конкретмон случае записи в Таблице Temp_Start полностью соответствуют условию BETWEEN "700000" AND "799999". Последняя запись игнорируется. Если ставил RecordCount без минус 1, получалось нужное количество записей, но последняя запись повторяла предпоследнюю, т е было две одинаковых записи. В случае присутствия записей не соответствующих условию(лишних), все правильно работает. Но когда нужная строка стоит последней, она опускается


 
clickmaker ©   (2007-05-25 13:40) [13]

так а что это за БД, где числа надо брать в кавычки?


 
Плохиш ©   (2007-05-25 13:42) [14]


> Vitaliy12 ©   (25.05.07 13:34) [12]

Т.о. понятно, что в [0] приведён не тот код, который используется, а так от балды... Т.к. там никаких RecordCount не упоминается...


 
Vitaliy12 ©   (2007-05-25 13:57) [15]


>Т.о. понятно, что в [0] приведён не тот код, который используется, а так >от балды... Т.к. там никаких RecordCount не упоминается...


Вместо
while not ADOQuery1.Eof do       ставил
for a:= 0 to ADOQuery1.RecordCount (или ADOQuery1.RecordCount - 1)


> так а что это за БД, где числа надо брать в кавычки?

Access XP


 
Плохиш ©   (2007-05-25 14:01) [16]


> for a:= 0 to ADOQuery1.RecordCount (или ADOQuery1.RecordCount - 1)

Афигеть, вот что бывает, когда вместо изучения основ топчут кнопки...


 
Anatoly Podgoretsky ©   (2007-05-25 14:05) [17]

> Vitaliy12  (25.05.2007 12:22:00)  [0]

Что за бред и Clear и ADOQuery1.SQL.Text:=, Query и Table
Когда здесь хватает простого запроса INSERT INTO SELECT FROM и одной строки кода AdoCommand.Execute


 
Vitaliy12 ©   (2007-05-25 14:16) [18]


> Когда здесь хватает простого запроса INSERT INTO SELECT
> FROM и одной строки кода AdoCommand.Execute


Можно пример?

Я потому в новичках и спрашиваю. А оскорбить каждый может


 
Anatoly Podgoretsky ©   (2007-05-25 14:28) [19]

> Vitaliy12  (25.05.2007 14:16:18)  [18]

Ну тогда продолжай оскорбляться


 
Vitaliy12 ©   (2007-05-25 14:53) [20]


> Ну тогда продолжай оскорбляться


Оскорбился!
Сделал AdoCommand с текстом "INSERT INTO Temp_Start_70 SELECT  * FROM Temp_Start WHERE N_TEL BETWEEN "700000" AND "799999"". Тоже самое?

Изменил  "700000" AND "799999"  string на integer : "INSERT INTO Temp_Start_70 SELECT  * FROM Temp_Start WHERE N_TEL BETWEEN 700000 AND 799999". Все равно не видит последнюю строку.

Оскорбляться дальше, или кто-нибудь знает что делать


 
Плохиш ©   (2007-05-25 16:19) [21]


> Vitaliy12 ©   (25.05.07 14:53) [20]

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



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.06.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.044 c
1-1177148712
Антон Шестаков
2007-04-21 13:45
2007.06.17
Проектирование ИС и Экспертные системы


2-1180174977
GeLLeR
2007-05-26 14:22
2007.06.17
Вопрос про dll.


2-1180291791
ppcumax
2007-05-27 22:49
2007.06.17
Перевод секунд в Часы:Минуты:Секунды


2-1180116559
programmist87
2007-05-25 22:09
2007.06.17
Кэш и Cookie


15-1179646386
Knight
2007-05-20 11:33
2007.06.17
Выговор Slider007&amp;#133 за пропущенное 19-ое мая&amp;#133





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский