Меню

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

Lolka1996

2 / 2 / 1

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

Сообщений: 78

1

19.11.2015, 00:41. Показов 2208. Ответов 3

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


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
var t1,t,t3:boolean;
begin
if Edit13.Text='' then begin ShowMessage('Код Сотрудника Не заполнен'); edit13.SetFocus; end
else begin
if (edit1.Text='')or(edit3.Text='')or(edit4.Text='')or(edit2.Text='')or
    (edit5.Text='')or(edit6.Text='')or(edit7.Text='')or(edit8.Text='')or
    (edit9.Text='')or(edit10.Text='')or(edit11.Text='')or(edit12.Text='')
     then
 showmessage('Не все поля заполнены!') else begin
     MagazinModule.DataModule2.sotrud.Open;
     MagazinModule.DataModule2.sotrud.Insert;
     MagazinModule.DataModule2.sotrud.FieldByName('KodSotr').Value:=edit13.Text;
     MagazinModule.DataModule2.sotrud.FieldByName('Fam').Value:=edit1.Text;
     MagazinModule.DataModule2.sotrud.FieldByName('Name').Value:=edit2.Text;
     MagazinModule.DataModule2.sotrud.FieldByName('Otch').Value:=Edit3.Text;
     MagazinModule.DataModule2.sotrud.FieldByName('Pol').Value:=ComboBox1.Text;
     MagazinModule.DataModule2.sotrud.FieldByName('DataRosh').Value:=DateTimePicker1.Date;
     if CheckBox1.Checked then
     MagazinModule.DataModule2.sotrud.FieldByName('SemPol').Value:='Женат'
     else
     MagazinModule.DataModule2.sotrud.FieldByName('SemPol').Value:='Замужем';
     MagazinModule.DataModule2.sotrud.FieldByName('Obrazov').Value:=Edit5.Text;
     MagazinModule.DataModule2.sotrud.FieldByName('Otdel').Value:=Edit7.Text;
     MagazinModule.DataModule2.sotrud.FieldByName('DolShnost').Value:=Edit8.Text;
     MagazinModule.DataModule2.sotrud.FieldByName('KolVo-det').Value:=Edit4.Text;
     MagazinModule.DataModule2.sotrud.FieldByName('StahsRab').Value:=Edit6.Text;
     MagazinModule.DataModule2.sotrud.FieldByName('Strana').Value:=Edit9.Text;
     MagazinModule.DataModule2.sotrud.FieldByName('Gorod').Value:=Edit10.Text;
     MagazinModule.DataModule2.sotrud.FieldByName('Adres').Value:=Edit11.Text;
     MagazinModule.DataModule2.sotrud.FieldByName('DataPriNaRab').Value:=DateTimePicker2.Date;
     MagazinModule.DataModule2.sotrud.FieldByName('PasportDan').Value:=MaskEdit2.Text;
     MagazinModule.DataModule2.sotrud.FieldByName('TP').Value:=Edit12.Text;
 
     if CheckBox2.Checked then
     MagazinModule.DataModule2.sotrud.FieldByName('Voenno').Value:='True'
     else
     MagazinModule.DataModule2.sotrud.FieldByName('Voenno').Value:='False';
     end;
     end;
 
         MagazinModule.DataModule2.sotrud.Post;
         MagazinModule.DataModule2.sotrud.Close;
      form3.DBGrid1.DataSource.DataSet.Active:=false;
      form3.DBGrid1.DataSource.DataSet.Active:=true;
end;

ADO Post: ошибки во время выполннеия многошаговой операции

Help.. Ошибка тут

Delphi
1
 MagazinModule.DataModule2.sotrud.Post;

Не может сохранить. Как это пофиксить?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Супер-модератор

8781 / 2532 / 144

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

Сообщений: 11,873

19.11.2015, 01:03

2

Lolka1996, а почему вы не используете запрос? я тут почитал, причин может быть море… попробуйте как вариант всю эту кучу закомментировать и добавлять по небольшому количеству, чтобы выяснить, какие именно данные не устраивает вашу конструкцию… и почему вы не используете методы AsString, AsInteger… чтобы указать тип данных… еще нашел как вариант — «обычно это связанно с несоответствием типов»… просто у вас так все громоздко, что ну просто страшно…



1



2 / 2 / 1

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

Сообщений: 78

19.11.2015, 01:16

 [ТС]

3

Цитата
Сообщение от Lord_Voodoo
Посмотреть сообщение

Lolka1996, а почему вы не используете запрос? я тут почитал, причин может быть море… попробуйте как вариант всю эту кучу закомментировать и добавлять по небольшому количеству, чтобы выяснить, какие именно данные не устраивает вашу конструкцию… и почему вы не используете методы AsString, AsInteger… чтобы указать тип данных… еще нашел как вариант — «обычно это связанно с несоответствием типов»… просто у вас так все громоздко, что ну просто страшно…

xD Добавляет то он все данные он сохранить не может. Попробую указать типы может получиться

Добавлено через 6 минут

Цитата
Сообщение от Lord_Voodoo
Посмотреть сообщение

Lolka1996, а почему вы не используете запрос? я тут почитал, причин может быть море… попробуйте как вариант всю эту кучу закомментировать и добавлять по небольшому количеству, чтобы выяснить, какие именно данные не устраивает вашу конструкцию… и почему вы не используете методы AsString, AsInteger… чтобы указать тип данных… еще нашел как вариант — «обычно это связанно с несоответствием типов»… просто у вас так все громоздко, что ну просто страшно…

Указал типы все заработало. Спасибо)



0



Супер-модератор

8781 / 2532 / 144

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

Сообщений: 11,873

19.11.2015, 10:02

4

Lolka1996, это конечно не мое дело, но будь я руководителем проекта, вы бы получили крепкий нагоняй за такой код… это просто ужас какой-то, особенно для саппорта… от меня вам 2 с минусом. Такие операции реализуютс в виде запросов, это раз, с помощью параметров, это два. читабельность кода прежде всего — это три!!!



0



    msm.ru

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

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

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

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

      


    Сообщ.
    #1

    ,
    03.08.11, 04:58

      Junior

      *

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

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

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

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

      Сообщение отредактировано: 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 Кбайт, скачиваний: 113)


                                Fr0sT



                                Сообщ.
                                #15

                                ,
                                03.08.11, 16:27

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

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

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

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

                                  Рейтинг@Mail.ru

                                  [ Script execution time: 0,1275 ]   [ 20 queries used ]   [ Generated: 28.01.23, 18:02 GMT ]  

                                   
                                  TechnoDreamer
                                   
                                  (2004-11-02 03:29)
                                  [0]

                                  Собственно прога выдает во время рунтайма следующее сообщение:
                                  «Произошли ошибки во время выполнения многошаговой операции. Проверьте значение всех состояний». Происходит во время рекурсивной функции, насколько я вижу только в тех случаях где рекурсия большая. Я прав? Кто нибуть сталкивался?
                                  Что делать? Может есть какая директива компилятору, типа там, стек увеличить или еще что, которая влияет на это?
                                  Или придется убирать рекурсию? Жалко было бы, такая аккуратная функция получилась :-(((


                                   
                                  R ©
                                   
                                  (2004-11-02 03:58)
                                  [1]

                                  А код привести можно.


                                   
                                  Defunct ©
                                   
                                  (2004-11-02 04:30)
                                  [2]

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

                                  У тебя что русский Delphi? Неужели прямо так и пишет.


                                   
                                  Fay ©
                                   
                                  (2004-11-02 06:36)
                                  [3]

                                  Переделай в цикл.


                                   
                                  KSergey ©
                                   
                                  (2004-11-02 08:19)
                                  [4]

                                  Очеь похоже на сообщение от ADO… Оно используется?


                                   
                                  TechnoDreamer
                                   
                                  (2004-11-02 18:29)
                                  [5]

                                  2R: Код довольно большой и связан с другими кусками.
                                  2Fay: Видимо придется,хотя…
                                  2KSergey: Да, адо используется, подскажешь в связи с чем ошибка?

                                  Вообще, код делает следующее:
                                  Есть дерево (TTreeView) и база на Access через ADO, в дереве хранятся названия категорий (возможны и подкатегории) и элементов, т.е. оно связано с базой (там две таблицы: категории и элементы, одно из полей название категории или элемента).
                                  Рекурсивная функция для удаления категории, т.е. она смотрит, если нет дочерних элементов то удаляется запись в базе, и соответствующий элемент TTreeNode, в противном случае удаляется рекурсивно подкатегории и элементы.
                                  На небольших ветках дерева работает прекрасно, а вот на более больших возникает эта ощибка (2Defunct, да так прям и пишет, это винда пишет, а не дельфи, и судя по постингу KSergey это пишет ADO).


                                   
                                  TechnoDreamer
                                   
                                  (2004-11-02 18:29)
                                  [6]

                                  2R: Код довольно большой и связан с другими кусками.
                                  2Fay: Видимо придется,хотя…
                                  2KSergey: Да, адо используется, подскажешь в связи с чем ошибка?

                                  Вообще, код делает следующее:
                                  Есть дерево (TTreeView) и база на Access через ADO, в дереве хранятся названия категорий (возможны и подкатегории) и элементов, т.е. оно связано с базой (там две таблицы: категории и элементы, одно из полей название категории или элемента).
                                  Рекурсивная функция для удаления категории, т.е. она смотрит, если нет дочерних элементов то удаляется запись в базе, и соответствующий элемент TTreeNode, в противном случае удаляется рекурсивно подкатегории и элементы.
                                  На небольших ветках дерева работает прекрасно, а вот на более больших возникает эта ощибка (2Defunct, да так прям и пишет, это винда пишет, а не дельфи, и судя по постингу KSergey это пишет ADO).


                                   
                                  KSergey ©
                                   
                                  (2004-11-03 12:57)
                                  [7]

                                  Однозначно тут сказать очень сложно.
                                  Советую предпринять след. шаги:

                                  1.Как я понимаю — все делается методами Delete/Post и т.п. Можно перейти на SQL-запросы на удаление/обновление. Во всяком случае эту проблему это решит однозначно.

                                  2.Какая БД используется? Для MS SQL могу рассказать, про другие -не знаю. (к стати, приличные люди сразу это пишут, в вопросе)

                                  3.В любом случае советую почитать все три части от
                                  http://www.delphikingdom.com/asp/viewitem.asp?catalogid=408


                                   
                                  TechnoDreamer
                                   
                                  (2004-11-03 18:46)
                                  [8]

                                  //1.Как я понимаю — все делается методами Delete/Post и т.п. Можно перейти на SQL-запросы на удаление/обновление. Во всяком случае эту проблему это решит однозначно.//

                                  Да, вы правы.

                                  //2.Какая БД используется? Для MS SQL могу рассказать, про другие -не знаю. (к стати, приличные люди сразу это пишут, в вопросе)//
                                  Я говорил:
                                  //Есть дерево (TTreeView) и база на Access через ADO//


                                   
                                  KSergey ©
                                   
                                  (2004-11-04 06:53)
                                  [9]

                                  > Я говорил:
                                  > //Есть дерево (TTreeView) и база на Access через ADO//

                                  Прошу прощения, просмотрел.
                                  Тогда, думаю, приведенная мною ссылка должна помочь — там именно про Access и очень много. (только читать все 3 части)


                                   
                                  Erik1 ©
                                   
                                  (2004-11-04 10:31)
                                  [10]

                                  Вобщето стоит перейти на DOA, это избавить от дополнительной прослойуи в лице ADO и повысит скорость работы. Я советую компоненты diamond www.islamov.com Кое что даже сам правил, но назнаю включил ли он это в свою версию.


                                  • Remove From My Forums

                                   none

                                  Ошибка при выполнении выгрузки данных.

                                  • Вопрос

                                  • Доброго времени суток уважаемые представители компании Microsoft, я являюсь системным администратором городской больницы №4 г. Владимира, у нас есть важная медицинская программулина MedBase,
                                    недавно у Вас приобрели новый сервер, ну и решили перенести эту программу на новый сервер, установили бесплатный SQL server 2008 r2 express, саму программу MedBase, вроде все работает но при создании отчета выдает следущую ошибку:
                                    «При выполнении запроса произошла ошибка: Поставщик OLE DE «Microsoft.ACE.OLEDB. 12.0» для связанного сервера «(null)» вернул сообщение «Произошли ошибки во время выполнения многошаговой операции OLE DE. По
                                    возможности, проверьте значения всех состояний OLE DE. Работа не выполнена.»
                                    — это ошибка SQL server полюбому вот мне очень хочется ее исправить потому что отчеты не делаются… ПОМОГИТЕЕЕЕЕ

                                    • Перемещено

                                      30 апреля 2013 г. 8:07
                                      sql

                                  Ответы

                                    • Помечено в качестве ответа
                                      Иван ПродановMicrosoft contingent staff, Moderator
                                      30 апреля 2013 г. 13:46
                                  • Все решили проблемку: простите за беспокойство … поставщики решили проблему, вот прям только что … в среде SQL выполнить запрос: 

                                    EXEC master.dbo.sp_MSset_oledb_prop N’Microsoft.ACE.OLEDB.12.0′, N’AllowInProcess’, 1
                                    GO
                                    EXEC master.dbo.sp_MSset_oledb_prop N’Microsoft.ACE.OLEDB.12.0′, N’DynamicParameters’, 1
                                    GO

                                    Мне помогло

                                    • Помечено в качестве ответа
                                      ad_sergeev
                                      30 апреля 2013 г. 11:09

                                  0 0 голоса
                                  Рейтинг статьи
                                  Подписаться
                                  Уведомить о
                                  guest

                                  0 комментариев
                                  Старые
                                  Новые Популярные
                                  Межтекстовые Отзывы
                                  Посмотреть все комментарии

                                  А вот еще интересные материалы:

                                • Яшка сломя голову остановился исправьте ошибки
                                • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
                                • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
                                • Delphi ошибка unsatisfied forward or external declaration
                                • Delphi ошибка stack overflow