Конференция "Базы" » TAdoQuery + Access [D7]
 
  • GlowSolnce (13.09.09 18:52) [0]
    Всем привет!

    Столкнулась с проблемой: при повторном использовании TadoQuery селект ничего не начитывает (((. Экземпл ниже:

    ADOQAddSite.Parameters.ParamByName('SitesID').Value:=Msg.LParam;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select Name, Comment from tSites where SitesID = :SitesID');
    ADOQuery1.Open;
    EDName.Text:=ADOQuery1.Fields.FieldByNumber(1).AsString;
    EDComment.Text:=ADOQuery1.Fields.FieldByNumber(2).AsString;
    ADOQuery1.Close;

    При первом вызове в едиты значения начитываются, при повторном в едитах пусто.
    Подскажите, пожалуйста, что в ADOQuery1 нужно очистить, чтоб повторно получать значения полей? Или в чем может заключаться проблема?
  • adigozelov © (13.09.09 19:34) [1]
    Vapros ni panyatin! Я ni ponil sto znacit
    ADOQAddSite и ADOQuery1.tois eti razniyi Tadoquery.
  • MsGuns © (13.09.09 19:59) [2]
    Параметры следует заполнять перед Open, но никак не после
  • GlowSolnce (14.09.09 08:47) [3]
    Параметры заполняются перед Open, вернее единственный параметр :SitesID

    ADOQuery1.Parameters.ParamByName('SitesID').Value:=Msg.LParam;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select Name, Comment from tSites where SitesID = :SitesID');
    ADOQuery1.Open;
    EDName.Text:=ADOQuery1.Fields.FieldByNumber(1).AsString;
    EDComment.Text:=ADOQuery1.Fields.FieldByNumber(2).AsString;
    ADOQuery1.Close;

    Вопрос остается в силе.
  • MsGuns © (14.09.09 09:02) [4]
    >GlowSolnce   (14.09.09 08:47) [3]
    >Параметры заполняются перед Open, вернее единственный параметр :SitesID

    Сделайте так:

    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Text := 'select Name, Comment from tSites where SitesID = :SitesID';
    ADOQuery1.Parameters.ParamByName('SitesID').Value:=Msg.LParam;
    ADOQuery1.Open;
  • Anatoly Podgoretsky © (14.09.09 09:11) [5]
    > MsGuns  (14.09.2009 09:02:04)  [4]

    А Clear для того, чтобы особо чисто было?
  • MsGuns © (14.09.09 10:46) [6]
    Нет, просто я сначала скопировал Add, а потом заменил на Text, а очистку, действительно лишнюю, выкинуть забыл :)
  • YurikGL © (14.09.09 10:59) [7]
    Кстати, советуется все же не ADOQuery использовать, а ADODataset
  • Anatoly Podgoretsky © (14.09.09 11:18) [8]

    > YurikGL ©   (14.09.09 10:59) [7]

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

  • > GlowSolnce   (14.09.09 08:47) [3]

    А то, что ты текст запроса чистишь ПОСЛЕ установки значения параметра, это как ты думаешь, ничего не меняет?
  • adigozelov © (14.09.09 15:11) [10]
    Privet! ya vapros ni xarsho ponil no dumuyu shto ponil!
    paprobuy tak ya paprobul i vso palucayitsa

    ADOQuery1.sql.clear;
    ADOQuery.sql.add('select Name, Comment from tSites where SitesID = :SitesID');
    ADOQuery1.Parameters.ParamByName('SitesID').Value:=edit1.Text;
    ADOQuery1.open;
    EDName.Text:=ADOQuery1.Fields[1]AsString;
    EDComment.Text:=ADOQuery1.Fields[1].AsString;
    ADOQuery1.Close;


    Eta vso i yesli ya vapros pravilna ponil taqda eta toje pravilna!
    no savetuyu paprobut!
 
Конференция "Базы" » TAdoQuery + Access [D7]
Есть новые Нет новых   [134473   +28][b:0][p:0]