Произошла ошибка во время выполнения многошаговой операции delphi

MrHitman47

35 / 35 / 4

Регистрация: 23.05.2011

Сообщений: 201

Записей в блоге: 1

1

Произошла ошибка во время выполнения многошаговой операции

08.11.2011, 16:00. Показов 6428. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Работаю в Delphi 2006 соединяюсь к базе MySQL 5.0… через ODBC драйвер 5.1 и при вод таком простом коде

Delphi
1
2
3
    ADOQuery.Edit;
    ADOQuery.FieldByName('....').AsVariant := 255;
    ADOQuery.Post;

выпадает вот такая страшная ошибка :
Произошла ошибка во время выполнения многошаговой операции
Что делать??!



0



12 / 12 / 2

Регистрация: 30.10.2011

Сообщений: 59

08.11.2011, 16:47

2

Это скорее всего косяк ADO, сильно быстро вызываешь процедуру или тыкаешь по кнопке



0



6 / 6 / 0

Регистрация: 06.11.2011

Сообщений: 36

09.11.2011, 01:10

3

У меня как-то была такая же ошибка, косяк скрывался в запросе (ORDER BY…)
Покажи свой запрос



0



35 / 35 / 4

Регистрация: 23.05.2011

Сообщений: 201

Записей в блоге: 1

09.11.2011, 10:34

 [ТС]

4

не там нет ORDER BY, мне кажется я понял почему эта фигня появляется, там булеан заменяется на tinyint поэтому показует true как 255 хотя сам сервак показывает как -1 поэтому когда я когда ставлю
….Edit;
…. := -1;
….Post;
то тогда ошибка не появляется, вод такая вот загагулина



0



1496 / 1238 / 244

Регистрация: 04.04.2011

Сообщений: 4,357

09.11.2011, 11:45

5

Напишите явно:
AsInteger

И вообще не используйте AsVariant без необходимости (в данном случае такой необходимости не видно)



1



    msm.ru

    Нравится ресурс?

    Помоги проекту!

    >
    Возникает ошибка не могу найти решение
    , Не могу добавить в базу данные…

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему

      


    Сообщ.
    #1

    ,
    03.08.11, 04:58

      Junior

      *

      Рейтинг (т): нет

      При добавлении данных на стадии insert возникает ошибка.
      Проект прилагаю
      В SKLAD_ADD
      начало модуля dm2.SKLAD_IN.insert

      В проекте используется библиотека rz rx и ehlib

      Прикреплённый файлПрикреплённый файлs.rar (32,77 Кбайт, скачиваний: 115)

      Сообщение отредактировано: DeZik — 03.08.11, 04:59

      Wizard

      Bas



      Сообщ.
      #2

      ,
      03.08.11, 05:35

        Ошибка какая?


        DeZik



        Сообщ.
        #3

        ,
        03.08.11, 05:40

          Junior

          *

          Рейтинг (т): нет

          DataSet not edit or insert mode

          Переключался между видами доступа — 0 эмоций


          Fr0sT



          Сообщ.
          #4

          ,
          03.08.11, 06:12

            Есть ли весомая причина не юзать DB controls?
            Есть ли весомая причина добавлять все поля в дизайн-тайм и обращаться к ним как к объектам вместо dataset.FieldByName?


            DeZik



            Сообщ.
            #5

            ,
            03.08.11, 06:56

              Junior

              *

              Рейтинг (т): нет

              Цитата Fr0sT @ 03.08.11, 06:12

              Есть ли весомая причина не юзать DB controls?

              Точнее про что идет речь — не могу понять

              Цитата Fr0sT @ 03.08.11, 06:12

              Есть ли весомая причина добавлять все поля в дизайн-тайм и обращаться к ним как к объектам вместо dataset.FieldByName?

              Да есть.

              Поэтому и возникает вопрос. Интересует вопрос откуда проблема и как решить, а не как изменить всю программу для правильного функционирования данного модуля.

              ПРИЧЕМ ДОБАВЛЮ.
              После возникновения ошибки запись добавляется, но пустая….

              Даже при конструкции

              ExpandedWrap disabled

                  try

                  dm2.ASKLAD_IN.Insert;

                  dm2.ASKLAD_INDATE.AsDateTime:=SKLAD_ADD.DateEdit1.Date;

                  dm2.ASKLAD_INKOL.AsFloat:=SKLAD_ADD.CurrencyEdit1.Value;

                  dm2.ASKLAD_IN.Post;

                  except

                  messagebox(Sklad_add.Handle,’Запись не добавлена’,’Внимание’,0);

                  end;

              выводит сообщение об ошибке, а пустая запись добавляется. (в D7 ошибка та-же)

              Сообщение отредактировано: DeZik — 03.08.11, 07:32


              Fr0sT



              Сообщ.
              #6

              ,
              03.08.11, 08:06

                Цитата DeZik @ 03.08.11, 06:56

                Точнее про что идет речь — не могу понять

                Классы вида TDB<control_name>

                Цитата DeZik @ 03.08.11, 06:56

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

                Ой, там «всей программы»-то — две с половиной строчки. Впрочем, дело хозяйское.
                Почему у тебя не работает — не знаю. Попробовал у себя:

                ExpandedWrap disabled

                    IBTable1.Insert;

                    IBTable1SUBJECT.AsString := ‘blabla’;

                    IBTable1.Post;

                всё ОК. Твой проект запустить нет возможности по причине юзания левых компонент-паков


                DeZik



                Сообщ.
                #7

                ,
                03.08.11, 08:10

                  Junior

                  *

                  Рейтинг (т): нет

                  Цитата Fr0sT @ 03.08.11, 08:06

                  Ой, там «всей программы»-то — две с половиной строчки.

                  Это вырубка для теста.

                  Цитата Fr0sT @ 03.08.11, 08:06

                  Твой проект запустить нет возможности по причине юзания левых компонент-паков

                  отключи левые компонент паки — можешь запустить т.к. они за визуальность отвечают, а ее тма не надо.

                  Ib не ставил — однозадачна система. Еще раз акцентирую = нужно найти ошибку и решить проблему, а не переписать всю прогу с «0».

                  Добавлено 03.08.11, 08:51
                  Как не странно следующий код работает

                  ExpandedWrap disabled

                      try

                      dm2.ASKLAD_IN.Insert;

                      except

                      end;

                      try

                      dm2.ASKLAD_IN.Edit;

                      dm2.ASKLAD_INDATE.AsDateTime:=SKLAD_ADD.DateEdit1.Date;

                      dm2.ASKLAD_IN.Post;

                      except

                      end;

                  А дальше как не знаю….

                  Сообщение отредактировано: DeZik — 03.08.11, 08:51


                  Игорь Акопян



                  Сообщ.
                  #8

                  ,
                  03.08.11, 10:09

                    Поставьте брякпойнты везде, выясните в какой строке таки возникает ошибка. Происходит присваивание в поле, а датасет почему-то вышел или ещё не вошёл в режим редактирования.
                    Создайте пустые BeforePost и AfterPost. Это позволит более точно понять место ошибки


                    DeZik



                    Сообщ.
                    #9

                    ,
                    03.08.11, 10:12

                      Junior

                      *

                      Рейтинг (т): нет

                      Цитата Игорь Акопян @ 03.08.11, 10:09

                      Поставьте брякпойнты везде, выясните в какой строке таки возникает ошибка.

                      Цитата DeZik @ 03.08.11, 04:58

                      При добавлении данных на стадии insert возникает ошибка.

                      Цитата Игорь Акопян @ 03.08.11, 10:09

                      Создайте пустые BeforePost и AfterPost. Это позволит более точно понять место ошибки

                      Все попробовал ничего не помогает, поэтому и обратился сюда


                      Fr0sT



                      Сообщ.
                      #10

                      ,
                      03.08.11, 10:15

                        Цитата DeZik @ 03.08.11, 08:10

                        отключи левые компонент паки — можешь запустить т.к. они за визуальность отвечают, а ее тма не надо.

                        Я про rz, на котором у тебя все лейблы

                        Цитата DeZik @ 03.08.11, 08:10

                        Это вырубка для теста

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

                        Цитата DeZik @ 03.08.11, 08:10

                        Как не странно следующий код работает

                        Edit после Insert ничего не делает, странно, что это работает…

                        Добавлено 03.08.11, 10:22
                        Хм. Попробовал базу Аксесс + Адоконнекшен + код

                        ADOTable1.Insert;
                        ADOTable1stat.AsString := ‘blabla’;
                        ADOTable1.Post;

                        — выдает ошибку «Произошли ошибки во время выполнения многошаговой операции. Проверьте значения всех состояний.»

                        Сообщение отредактировано: Fr0sT — 03.08.11, 10:22


                        Игорь Акопян



                        Сообщ.
                        #11

                        ,
                        03.08.11, 10:23

                          Цитата DeZik @ 03.08.11, 04:58

                          При добавлении данных на стадии insert возникает ошибка.

                          стадия инсерт это не то что я спросил…
                          Прямо на строке Insert?

                          поддерживаю выкладку без РЗ :)


                          Fr0sT



                          Сообщ.
                          #12

                          ,
                          03.08.11, 10:27

                            Загуглил, это, судя по всему, у АДО такие заморочки


                            DeZik



                            Сообщ.
                            #13

                            ,
                            03.08.11, 10:30

                              Junior

                              *

                              Рейтинг (т): нет

                              Цитата Игорь Акопян @ 03.08.11, 10:23

                              Прямо на строке Insert?

                              Да

                              Цитата Fr0sT @ 03.08.11, 10:15

                              — выдает ошибку «Произошли ошибки во время выполнения многошаговой операции. Проверьте значения всех состояний.»

                              Не, там все норально и никаких проблем с

                              Цитата Fr0sT @ 03.08.11, 10:27

                              Загуглил, это, судя по всему, у АДО такие заморочки

                              нет

                              Выложу без RZ завтра

                              Сообщение отредактировано: DeZik — 03.08.11, 10:30


                              DeZik



                              Сообщ.
                              #14

                              ,
                              03.08.11, 15:09

                                Junior

                                *

                                Рейтинг (т): нет

                                Вот без украшательств….
                                Попробуйте выполнить — убрал даже всю функциональность

                                Прикреплённый файлПрикреплённый файлss.rar (22,84 Кбайт, скачиваний: 115)


                                Fr0sT



                                Сообщ.
                                #15

                                ,
                                03.08.11, 16:27

                                  В самом деле, глюк. Пока удалось обнаружить, что проблема в lookup поле CENA

                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                                  0 пользователей:

                                  • Предыдущая тема
                                  • Delphi: Базы данных
                                  • Следующая тема

                                  Рейтинг@Mail.ru

                                  [ Script execution time: 0,0566 ]   [ 20 queries used ]   [ Generated: 6.06.23, 13:14 GMT ]  

                                  Доброго дня!
                                  Имеется база на Аccess, в базе три таблицы. Решалась задача заполнения одной таблицы данными из двух других. Решалась средствами ADO Delphi. На ADOConnection висят соответственно три ADOTable, ADOSource и DBGrid. На OnDblClick в DBGrid повесил процедуру для взятия данных из двух таблиц по условиям и помещения их в целевую таблицую. Где-то 4-5 раз клацаю, данные переносятся, всё путём отрабатывает. Далее вылетает ошибка:

                                  «Произошли ошибки во время выполнения многошаговой операции. Проверьте значение всех состояний»

                                  В и-нете ничего путного не нарыл. Буду искать ещё, но может кто-то уже сталкивался? Есть ли простые решения?

                                   
                                  {AleX}
                                   
                                  (2006-03-20 19:20)
                                  [0]

                                  При попытки добавить в таблицу запись вылетает ошибка

                                  «EOleException Произошла ошибка во время выполнения многошаговой операции, проверти значения всех состояний»
                                  Причем ошиба вылетает на ADOTable.post;

                                  После этого ADOTable не соединяется с таблицей, пишет

                                  «Поставщик данных или друга служба вернули состояние E_FAIL»

                                  Если потом открыть базу, то там появляется запись которую пытались добавить. и удалить ее, то после этого ADO нормально опять соединяется.

                                  Я уже все перерыл и все перепробывал. так  не нашел что за ошибка


                                   
                                  sniknik ©
                                   
                                  (2006-03-20 20:49)
                                  [1]

                                  > EOleException Произошла ошибка во время выполнения многошаговой операции, проверти значения
                                  > всех состояний»
                                  ну и проверь. проблема в строке коннекта, либо ошибочный параметр, либо параметр правильный но у него нет «связи с системой» (например драйвер не установлен, а переписан, «зарегистрен» но не весь/неправильно)

                                  > Я уже все перерыл и все перепробывал.
                                  не ври. все. ты еще не пробовал пользоваться нормальными компонентами вместо ADOTable.


                                   
                                  tesseract ©
                                   
                                  (2006-03-20 21:54)
                                  [2]


                                  > «Поставщик данных или друга служба вернули состояние E_FAIL»

                                  Ну тебе же OLe говорит что, что то не так передал.


                                   
                                  {AleX}
                                   
                                  (2006-03-20 22:04)
                                  [3]

                                  Программа одновремменно разрабатывалась на 2 системах. Так что ошибки с подключением не может быть. Темболее я все пробывал заново переставить. все тоже самое. (удалял те компоненты, ставил новые) И все повторялось.

                                  Канечно Надо было сразу начинать с ADOQuery, но теперь переписывать все под него нету времени.


                                   
                                  tesseract ©
                                   
                                  (2006-03-20 22:12)
                                  [4]


                                  > Канечно Надо было сразу начинать с ADOQuery, но теперь переписывать
                                  > все под него нету времени.

                                  Да не большая разница. Качаешь Db-aware под Mysql а не ODBC драйвер используешь и всё.


                                   
                                  {AleX}
                                   
                                  (2006-03-20 22:45)
                                  [5]

                                  Db-aware — а можно попдробней.

                                  Я видел много компонентов для работы с MySQL, но все они платные,
                                  если есть у кого ссылки на бесплатные, скинте — rrew@nm.ru — заранее спасибо.

                                  а вообще хочется всетаки докопаться до истины, и узнать в чем проблема


                                   
                                  tesseract ©
                                   
                                  (2006-03-20 22:49)
                                  [6]

                                  1-й Dbexpress :-) но у некоторых проблемы с libmysql.

                                  далее смотрим — http://torry.net/pages.php?id=1170


                                   
                                  {AleX}
                                   
                                  (2006-03-20 22:54)
                                  [7]

                                  dbExpress пробывал тот что в поставку входин, но он требует libmysql, я только куда не пробывал засунуть это библиотеку, он ее всеравно не видет

                                  а  на торри там все платное, что мне более менее подходит


                                   
                                  tesseract ©
                                   
                                  (2006-03-20 22:59)
                                  [8]

                                  Да только-что там видел 3 бесплатных компонента (правда не знаю насколько они подойдут).


                                   
                                  sniknik ©
                                   
                                  (2006-03-21 02:28)
                                  [9]

                                  > … Так что ошибки с подключением не может быть. …
                                  ну да. конечно. верю…

                                  а мелкософт «гонит лажу», они же там нифига не соображают…
                                  http://support.microsoft.com/kb/269495/

                                  > Надо было сразу начинать с ADOQuery
                                  надо начинать с ADODataSet, а не с борландовских «костыликов» для «сросшихся» с BDE…

                                  > а вообще хочется всетаки докопаться до истины, и узнать в чем проблема
                                  посмотри в зеркало, большинство проблем отражается в нем.


                                   
                                  kilonet ©
                                   
                                  (2006-03-21 18:19)
                                  [10]

                                  sniknik

                                  > ты еще не пробовал пользоваться нормальными
                                  > компонентами вместо ADOTable

                                  Что за нормальные компоненты?


                                  > надо начинать с ADODataSet

                                  а как до него добраться?


                                   
                                  {AleX}
                                   
                                  (2006-03-21 18:25)
                                  [11]

                                  Проблема так и не решена, кто нибуть может подсказать подсказать решение?


                                   
                                  {AleX}
                                   
                                  (2006-03-22 09:41)
                                  [12]

                                  up


                                   
                                  ivb2001
                                   
                                  (2006-03-22 12:10)
                                  [13]

                                  Т.к. ошибка при Postе, то скорее всего я посмотрел бы на таблицы и их связи между собой. Возможно там есть поля, не допускающие Null значения для которых не указаны dEFAULT VALUES или поля связанные с другой таблицей по принципу MASTER-DETAIL соджержат неверные или Null значения или что-то в этом роде… Сообщения часто не имеют отношения к ошибке.

                                  TADODataSet — стандартный D7-компонент. Находится в 7-м Delphi на закладке ADO рядом с ADOtable и ADOquery

                                  to Shiknik: Ни AdoTable ни AdoQuery к BDE отношения не имеют


                                   
                                  sniknik ©
                                   
                                  (2006-03-22 12:29)
                                  [14]

                                  > to Shiknik: Ни AdoTable ни AdoQuery к BDE отношения не имеют
                                  ну прямо божественное откровение… ;)
                                  однако ты ошибаешся, их делали (и в хелпе дельфи 5/6 версии, не скажу точно, это написано. в 7м убрали (ненахожу)) «для облегчения перехода с BDE, с «родных» борланловских компонент», «идея» видимо состояла в том, чтобы при переводе програм юзающих BDE на ADO было достаточно сменить декларацию с TTable на TADOTable…
                                  правда получилось довольно убого (слишком разные технологии), но тем не менее BDE-ые  компоненты (Table,Query,StoredProc) можно считать «идеологическими родителями» для одноименных с приставкой Ado вначале.


                                   
                                  ivb2001 ©
                                   
                                  (2006-03-22 12:53)
                                  [15]

                                  to Shiknik. Согласен. У них много похожего и это неизбежно, ибо Borland был необходим плавный отход от BDE. Но, как говорил Райкин, «родилИ, на том спасибо». И теперь ADO — это часть MDAC-технологии (Microsoft Data Access Component). Кроме ADO, к ней относятся OLE DB, ODBC, Remote Data Services (RDS). Так что все вопросы по ADO теперь к тов. Б.Гейтсу. Кстати у них на сайте есть всякая хрень по этому поводу (типа MDAC SDK)


                                   
                                  sniknik ©
                                   
                                  (2006-03-22 13:21)
                                  [16]

                                  > «родилИ, на том спасибо». И теперь ADO — это часть MDAC
                                  не теперь, а всегда, ADO не родилось из BDE (как можно понять из [15]) оно изначально было самостоятельным. а компоненты это не само адо (вот уж чего не надо путать)
                                  и вот эти компоненты были сделаны «притягиванием за уши» свойств/методов из BDE-шных. (большая ошибка борланда была делать их, ИМХО. уже столько начинающих(и даже не очень) шишек себе ими понабивало…)


                                   
                                  ivb2001 ©
                                   
                                  (2006-03-22 14:59)
                                  [17]

                                  И TTable и TADODataSet являются потомками TDataSet, наследуют его начинку и дополняют своими методами и свойствами. Класс описывает поведение и характеристики объекта (в нашем случае НАБОР ДАННЫХ) не зависимо от их источника. Дело не в свойствах и методах, а в их реализации. И если они реализованы с ошибками,то это не значит ,что компонент плохой, а просто руки у его создателя кривые. Аналогично, если физическая реализация доступа к данным, содержит ошибки, то неважно BDE это или OLE DB провайдер от MDAC со своими драйверами, для программера ничем хорошим, кроме геморроя это не грозит (всем известно, как грохаются индексы у Paradox-таблиц под BDE, хотя Paradox — родная для Borlanda).


                                  Подключение к базе .dbf производится с помощью ADO компонентов, ADOConnection1, ADOTable1, DataSource1, при выборе таблицы TableName появляется это ошибка… не могу понять из за чего.
                                  Если кто сталкивался с этой проблемой объясните пожалуйста как решить….


                                  • Вопрос задан

                                    более трёх лет назад

                                  • 1195 просмотров

                                  Понравилась статья? Поделить с друзьями:
                                • Произошла ошибка безопасности xenforo
                                • Произошла ошибка во время авторизации keenetic
                                • Произошла ошибка аутентификации код 1 навител
                                • Произошла ошибка внешняя таблица не имеет предполагаемый формат
                                • Произошла ошибка атрибута dnfdaemon