Конференция "Базы" » Интересная вещь в ADO [D7]
 
  • Patrick1968 © (26.07.11 16:27) [0]
    Не пойму в чем причина, написал запрос
    select count(*)  from mytable where article='100' and propid='40'
    при открытии ADOQuery, выходит сообщение, что "групповая функция не является одногруппной", хотя в SQL Plus'e всё проходит на "ура". Что-то непонятно? Может кто сталкивался?
  • MsGuns © (26.07.11 16:35) [1]
    select article, propid, count(*)
     from mytable
     where article='100' and propid='40'
     group by article, propid
  • b z (26.07.11 16:40) [2]
    Никто не сталкивался.
    Кстати а что за субд?
  • Patrick1968 © (26.07.11 16:45) [3]
    Понял,спасибо
  • Patrick1968 © (26.07.11 16:50) [4]
    А в этом случае ошибка, что выражение не является выражением GROUP BY
  • Игорь Шевченко © (26.07.11 17:01) [5]

    > при открытии ADOQuery, выходит сообщение, что "групповая
    > функция не является одногруппной",


    так прямо и выходит ?

    подробности для вопроизведения будут ?


    >  хотя в SQL Plus'e всё проходит на "ура".


    везде должно проходить на ура
  • SQLEXPRESS (26.07.11 17:03) [6]

    > Кстати а что за субд?

    +1

    такие простые агрегатные штуки должны работать

    в oracle, работает
    select
    count(*)
    from t_users U
    where U.NAME like 'МЕЛ%' and U.STREET_ID = 0

    в MSSQL, работает
    SELECT count(*)
     FROM [InterStart].[dbo].[vCTVConstSVCDeactivate]
    where [INFO] = 'NotActive' and ID_SVC = 55

    в Access, работает
    SELECT
    count(*)
    FROM Answert
    where Answert.[IdQuest] = 10 and Answert.[Value] = 0
  • Patrick1968 © (26.07.11 17:03) [7]
    про это и речь, поэтому и интересные вещи а какие подробности?
  • Patrick1968 © (26.07.11 17:08) [8]
    может свойства query какие-то на это влияют?
  • SQLEXPRESS (26.07.11 17:27) [9]
    параметры есть? parse их?
  • MsGuns © (26.07.11 17:32) [10]
    Есть подозрение что в этой СУБД (клиенте ?) нет такой функции 'count' или не допускается выражение 'count(*)'
  • Patrick1968 © (26.07.11 17:32) [11]
    Все параметры по дефолту
  • MsGuns © (26.07.11 17:32) [12]
    Вот тольуо адо тут совершенно сбоку
  • MsGuns © (26.07.11 17:34) [13]
    А так ?
    select count(A.*) from
     (select article,propid from mytable where article='100' and propid='40') A
  • Patrick1968 © (26.07.11 17:35) [14]
    Это как-так в оракле нет count?
  • Игорь Шевченко © (26.07.11 17:40) [15]

    > Это как-так в оракле нет count?


    ну вот нет
  • SQLEXPRESS (26.07.11 17:41) [16]
    Ну а парсишь их?
    Query.Parameters.ParseSQL ?
  • SQLEXPRESS (26.07.11 18:03) [17]
    да, не работает, так и пишет
    не сингл группа функция, к Ораклу

    select count(*) from debtor
    where REG_ID = :RI

    с параметрами надо играть.
    Cheked, Prepare, PARse
    у меня заработало, короче

    А к MSSQL это не обязательно, и так работает :)
  • Игорь Шевченко © (26.07.11 18:35) [18]
    У вас ADO кривое (или что-то еще)

    object Form1: TForm1
     Left = 0
     Top = 0
     Caption = 'Form1'
     ClientHeight = 293
     ClientWidth = 426
     Color = clBtnFace
     Font.Charset = DEFAULT_CHARSET
     Font.Color = clWindowText
     Font.Height = -11
     Font.Name = 'Tahoma'
     Font.Style = []
     OldCreateOrder = False
     PixelsPerInch = 96
     TextHeight = 13
     object Button1: TButton
       Left = 332
       Top = 252
       Width = 75
       Height = 25
       Caption = 'Button1'
       TabOrder = 0
       OnClick = Button1Click
     end
     object db: TADOConnection
       ConnectionString =
         'Provider=OraOLEDB.Oracle.1;Password=bar;Persist Security I' +
         'nfo=True;User ID=foo;Data Source=sles10'
       Provider = 'OraOLEDB.Oracle.1'
       Left = 32
       Top = 24
     end
     object ds: TADODataSet
       Connection = db
       CommandText = 'SELECT COUNT(*) FROM arg_city WHERE country_code = '#39'RU'#39
       Parameters = <>
       Left = 128
       Top = 24
     end
    end



    procedure TForm1.Button1Click(Sender: TObject);
    begin
     db.Connected := true;
     ds.Open;
     try
       ShowMessageFmt('count = %s', [ds.Fields[0].AsString]);
     finally
       ds.Close;
     end;
    end;



    результат вполне адекватен
  • SQLEXPRESS (26.07.11 19:05) [19]

    > Parameters = <>

    а глючит, когда они есть
 
Конференция "Базы" » Интересная вещь в ADO [D7]
Есть новые Нет новых   [134431   +10][b:0][p:0.002]