Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2010, 16:46   #1
VladimirAleks
Пользователь
 
Регистрация: 11.09.2007
Сообщений: 34
По умолчанию поставщик данных или другая служба вернули состояние e_fail

Код:
ADOQueryMain.Active := False;
    ADOQueryMain.SQL.Clear;
    ADOQueryMain.SQL.Add('SELECT fev.Number AS PhoneNumber, fev.Expense, Phone.Limit AS PhoneLimit, [fev].[Expense]-[Phone].[Limit] AS MoreExpense ');
    ADOQueryMain.SQL.Add(' FROM Phone INNER JOIN fev ON Phone.[Number] = fev.[Number]; ');
    ADOQueryMain.Active := True;
    ADOQueryMain.First;

    Count := ADOQueryMain.RecordCount;

    For i := 1 to Count do
      Begin
        StringGridExpense.Cells[0,i] := ADOQueryMain.FieldByName('PhoneNumber').AsString;
        StringGridExpense.Cells[1,i] := ADOQueryMain.FieldByName('PhoneLimit').AsString;
        StringGridExpense.Cells[2,i] := ADOQueryMain.FieldByName('Expense').AsString;
        If ADOQueryMain.FieldByName('MoreExpense').AsInteger < 0
          Then StringGridExpense.Cells[3,i] := '0'
          Else StringGridExpense.Cells[3,i] := ADOQueryMain.FieldByName('MoreExpense').AsString;
        ADOQueryMain.Next;
      End;

ADOQueryMain.RecordCount - выдаёт ошибку "поставщик данных или другая служба вернули состояние e_fail"
Если закоментировать эту строку, и взять заведомо известное чило записей, то ничего на добавляется в таблицу, возвращаются пустые поля. Хотя в Access этот запрос работает.

Последний раз редактировалось Stilet; 26.04.2010 в 16:48.
VladimirAleks вне форума Ответить с цитированием
Старый 26.04.2010, 16:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А этот запрос в СУБД собственно выполняется нормательно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.04.2010, 17:12   #3
VladimirAleks
Пользователь
 
Регистрация: 11.09.2007
Сообщений: 34
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А этот запрос в СУБД собственно выполняется нормательно?
В Access этот запрос работает.

Последний раз редактировалось VladimirAleks; 26.04.2010 в 17:25.
VladimirAleks вне форума Ответить с цитированием
Старый 27.04.2010, 08:56   #4
VladimirAleks
Пользователь
 
Регистрация: 11.09.2007
Сообщений: 34
По умолчанию

У кого-нибудь есть варианты?
VladimirAleks вне форума Ответить с цитированием
Старый 27.04.2010, 09:30   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

VladimirAleks
пошарился вчера поиском..
результаты неутешительные...
ибо.
1) эта проблема не уникальная, а достаточно распространена.
2) в каждом конкретном случае она решается по разному... по всей видимости, она зависит от кокретно получаемых в результате данных...

в качестве попытки найти, где собака порылась, предлагаю:
1) проверить, что в Вашем ADOQueryMain в дизайнтайм поля не вытащены! (двойной щелчок мышкой по компоненте - если поля есть - выделить и удалить всё).

2) если не поможет, добавить в запрос условие отбора (Where ... что-то = чему-то)

3) если не поможет, выкидывать из запроса по очереди поля, пока recordcount не заработает. (цикл и обращения к полям можно временно закомментировать)

4) если совсем ничего не поможет - проект + БД в архив, архив сюда, будем всем "обчеством" смотреть, повторяемость ошибки и способы обхода/решения...
для соблюдения конфиденциальности БД лучше заполнить тестовыми данными!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.09.2013, 12:36   #6
other2013
 
Регистрация: 15.02.2013
Сообщений: 3
По умолчанию

если не трудно посмотрите почему вылетает e_fail http://rghost.ru/48834348

Последний раз редактировалось other2013; 19.09.2013 в 12:38.
other2013 вне форума Ответить с цитированием
Старый 19.09.2013, 12:47   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Number зарезервированное слово в ACCESS. В квадратные скобки его, везде

ADD

Извиняюсь, не заметил некропостинга
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 19.09.2013 в 12:49.
Аватар вне форума Ответить с цитированием
Старый 19.09.2013, 13:54   #8
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Код:
ADOQueryMain.Active := False;
    ADOQueryMain.SQL.Clear;
    ADOQueryMain.SQL.Add('SELECT fev.Number AS PhoneNumber, fev.Expense, Phone.Limit AS PhoneLimit, [fev].[Expense]-[Phone].[Limit] AS MoreExpense ');
    ADOQueryMain.SQL.Add(' FROM Phone INNER JOIN fev ON Phone.[Number] = fev.[Number]; ');
    ADOQueryMain.Active := True;
    ADOQueryMain.First;

    i:=0
    while not ADOQueryMain.Eof do
      Begin
        StringGridExpense.Cells[0,i] := ADOQueryMain.FieldByName('PhoneNumber').AsString;
        StringGridExpense.Cells[1,i] := ADOQueryMain.FieldByName('PhoneLimit').AsString;
        StringGridExpense.Cells[2,i] := ADOQueryMain.FieldByName('Expense').AsString;
        If ADOQueryMain.FieldByName('MoreExpense').AsInteger < 0
          Then StringGridExpense.Cells[3,i] := '0'
          Else StringGridExpense.Cells[3,i] := ADOQueryMain.FieldByName('MoreExpense').AsString;
        ADOQueryMain.Next;
        inc(i);
      End;
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 19.09.2013 в 13:55. Причина: и я с некропостил... фуу
Slym вне форума Ответить с цитированием
Старый 19.09.2013, 14:32   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Это навряд-ли, скорее всего или сразу Eof или на нем ошибка вывалится

Э-э. Вопрос был задан 26.04.2010, 15:46
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка E_FAIL S@fer БД в Delphi 6 07.11.2010 12:11
Служба Windows Dezmont_ Win Api 7 30.04.2010 10:40
сеть Петри! yasper или другая программа! hay20 Помощь студентам 0 18.12.2009 13:27
Служба OrdJONY Win Api 5 10.10.2007 12:14
служба MAcK Win Api 3 04.12.2006 20:05