На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Обязательно указание:
1) типа базы данных (Paradox/Oracle/Interbase и т.п.)
2) способа доступа к базе данных (ODBC/ADO/DAO/BDE и т.п.)
Например: Paradox/BDE, MS Access/ADO

Наиболее часто задаваемые вопросы:
Базы даных для начинающих. Первые шаги. Понятие о BDE.
Переход на клиент-сервер и начала ADO
Приёмы работы с BLOB (OLE/Memo) полями
Запросы и параметры или как избавиться от многих проблем. Проблемы с датами в запросах.
Нужели мне нужно устанавливать BDE? (или почему не работает программа на другом компьютере)
Модераторы: Bas, Rouse_
Страницы: (4) 1 2 [3] 4  все  ( Перейти к последнему сообщению )  
> dbExpress; запрос SELECT и вывод результата в переменную....
    Цитата magsim @
    Нужно сделать запрос к баз MySQL (Например SELECT ip FROM host WHERE id=5) и результат поместить в переменную
    А вот как это сделать не знаю??????
    какие нужно использовать компоненты? (SQLConnection1 , SQLQuery) или другие? и как это сделать?

    Можно ещё так:
    если курсор в Гриде стоит на текущей записи, либо в полях загружена одна запись, то получить значение непосредственно из запроса, типа:
    SQLselect.FieldName.value или SQLselect.FieldName.asDataType (различные варианты типа asString, asInteger и т.д.) и присваиваешь в переменные. живой пример:
    ExpandedWrap disabled
      strsave:='insert into mainwork (numwork,datework,debt,from_orgs,to_orgs, isclose) values';
        strsave:=strsave+' ('''+DBENumWork.Text+''','''+DBDateWork.Text+''','+FloatToStr(DBNDebt.Value)+','+FloatToStr(kontrid)+','+IBQOrgsPolID.AsString+',0)';

    то же самое
    ExpandedWrap disabled
      strsave:='update mainwork set numwork='''+DBENumWork.Text+''',datework='''+DBDateWork.Text+''',debt='+FloatToStr(DBNDebt.Value)+',';
         strsave:=strsave+'from_orgs='+FloatToStr(kontrid)+',to_orgs='+IBQOrgsPolID.AsString+' where id='+IBQMainWorkID.AsString;
    Сообщение отредактировано: shadow_tls -
      Цитата shadow_tls @
      strsave:='update mainwork set numwork='''+DBENumWork.Text+''',datework='''+DBDateWork.Text+''',debt='+FloatToStr(DBNDebt.Value)+',';
      strsave:=strsave+'from_orgs='+FloatToStr(kontrid)+',to_orgs='+IBQOrgsPolID.AsString+' where id='+IBQMainWorkID.AsString;

      А разве это не тоже самое
      ExpandedWrap disabled
        memo1.Lines.Add(SQLQuery.Fields[1].AsVariant);
          Цитата VahaC @
          Цитата shadow_tls @
          strsave:='update mainwork set numwork='''+DBENumWork.Text+''',datework='''+DBDateWork.Text+''',debt='+FloatToStr(DBNDebt.Value)+',';
          strsave:=strsave+'from_orgs='+FloatToStr(kontrid)+',to_orgs='+IBQOrgsPolID.AsString+' where id='+IBQMainWorkID.AsString;

          А разве это не тоже самое
          ExpandedWrap disabled
            memo1.Lines.Add(SQLQuery.Fields[1].AsVariant);

          Тоже самое, кто спорит, но человек, смотрю полный новичок, так что на мой взгля стоило показать всё.
            shadow_tls Bas VahaC спасибо вам за помощь
            а еще такой вопрос по ходу появился...допустим если возникла ошибка при запросе или запуске как сделать чтобы оно не выскакивала а просто поместилась в переменную ?

            Добавлено
            Вот например сейчас таким кодом:

            ExpandedWrap disabled
              unit Unit1;
               
              interface
               
              uses
                Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
                Dialogs, DBXpress, FMTBcd, DB, SqlExpr, StdCtrls;
               
              type
                TForm1 = class(TForm)
                  Button1: TButton;
                  Zapros: TButton;
                  Memo1: TMemo;
                  SQLConnection: TSQLConnection;
                  SQLQuery: TSQLQuery;
                  Edit1: TEdit;
                  procedure Button1Click(Sender: TObject);
                  procedure FormCreate(Sender: TObject);
                  procedure Connect(Sender: TObject);
                  procedure Disconect(Sender: TObject);
               
                  procedure ZaprosClick(Sender: TObject);
                private
                  { Private declarations }
                public
                  { Public declarations }
                end;
               
              var
                Form1: TForm1;
               
              implementation
               
              {$R *.dfm}
               
              procedure TForm1.Button1Click(Sender: TObject);
              begin
              SQLConnection.Connected := true;
               
               
              end;
               
              procedure TForm1.FormCreate(Sender: TObject);
              begin
              memo1.Clear;
              end;
               
              procedure TForm1.Connect(Sender: TObject);
              begin
              memo1.Lines.Add('Подключение успешно');
              end;
               
              procedure TForm1.Disconect(Sender: TObject);
              begin
              memo1.Lines.Add('Соединение разорвано');
              end;
               
               
              procedure TForm1.ZaprosClick(Sender: TObject);
              begin
              sqlquery.SQL.Clear;
              SQLQuery.SQL.Text := 'SELECT * FROM foto WHERE id = 10';
              SQLQuery.Active := true;
              SQLQuery.MoveBy(+1);
              memo1.Lines.Add(SQLQuery.Fields[1].AsVariant);
              memo1.Lines.Add(intTostr(SQLQuery.RecordCount));
              end;
               
              end.


            у меня выскакивает вот такая ошибка? при закрытие программы...
            user posted image

            Добавлено
            вопрос с ошибкой решил добавлением такой процедуры:
            ExpandedWrap disabled
              procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
              begin
              SQLQuery.Close;
              SQlquery.Active := false;
              SqlConnection.Connected := false;
              end;


            но вот как всетаки...если есть ошибка поместить в переменную?
            Сообщение отредактировано: magsim -
                magsim try...except делал?
                  а что это? shadow_tls
                    Цитата magsim @
                    а что это?

                    операторы для обработки исключений.
                    ПС
                    Есть в любой нормальной книге для начинающих.
                    Сообщение отредактировано: VahaC -
                      ага я уже нашёл....

                      ExpandedWrap disabled
                        procedure TForm1.ZaprosClick(Sender: TObject);
                        begin
                        try
                        sqlquery.SQL.Clear;
                        SQLQuery.SQL.Text := 'SELECT * FROM foto WHERE id = 10';
                        SQLQuery.Active := true;
                        SQLQuery.MoveBy(+1);
                        memo1.Lines.Add(SQLQuery.Fields[1].AsVariant);
                        memo1.Lines.Add(intTostr(SQLQuery.RecordCount));
                        Except
                        ShowMessage('Íåèçâåñòíàÿ îøèáêà');
                        end;
                         
                        end.


                      Вот ошибки выводит
                      [Ошибка] Unit1.pas(72): ';' expected but '.' found
                      [Ошибка] Unit1.pas(74): Declaration expected but end of file found
                      Что не так?
                        ExpandedWrap disabled
                          procedure TForm1.ZaprosClick(Sender: TObject);
                          begin
                            try
                              sqlquery.SQL.Clear;
                              SQLQuery.SQL.Text := 'SELECT * FROM foto WHERE id = 10';
                              SQLQuery.Active := true;
                              SQLQuery.MoveBy(+1);
                              memo1.Lines.Add(SQLQuery.Fields[1].AsVariant);
                              memo1.Lines.Add(intTostr(SQLQuery.RecordCount));
                            Except
                              ShowMessage('Íåèçâåñòíàÿ îøèáêà');
                            end;
                           
                          end; // здесь была ошибка
                          Во что то я нечего не понял я еще один end; добавил и все зароботало...почему и зачем она?
                          ExpandedWrap disabled
                            procedure TForm1.ZaprosClick(Sender: TObject);
                            begin
                            try
                            sqlquery.SQL.Clear;
                            SQLQuery.SQL.Text := 'SELECT * FROM foto WHERE id = 10';
                            SQLQuery.Active := true;
                            SQLQuery.MoveBy(+1);
                            memo1.Lines.Add(SQLQuery.Fields[1].AsVariant);
                            memo1.Lines.Add(intTostr(SQLQuery.RecordCount));
                            Except
                            ShowMessage('Ошибка');
                            end;
                             
                            end;
                            end.
                          Сообщение отредактировано: magsim -
                            Потому что синтаксис оператора try выглядит так
                            ExpandedWrap disabled
                              try
                                ....
                                // какой то код
                              except
                                 .....
                                // код который выполнится только если произойдёт исключение
                              end;
                            или
                            ExpandedWrap disabled
                              try
                                ....
                                // какой то код
                              finally
                                 .....
                                // код который выполнится в любом случае
                              end;
                            Сообщение отредактировано: VahaC -
                              а еще такой вопрос не относящийся к теме...какой функцией можно определить что было введено в edit1.Text.... текст или цифры(может быть с запятой real)?
                                почитай о TryStrToFloat
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (4) 1 2 [3] 4  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0674 ]   [ 15 queries used ]   [ Generated: 17.05.24, 13:05 GMT ]