Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > SQLQuery на Web-сервисе


Автор: halilpro 28.8.2011, 23:09
Всем привет!
Помогите решить мою проблему!

вот рабочая часть моей программы:

Код

function TConvert.GiveNewOrders(Value: String): string; 
var XMLDoc: TXMLDocument;
    i: Integer;
    strarInsert: TArStr;
begin
  { TODO : Implement method echoEnum }
  XMLDoc := TXMLDocument.Create(Application);
  XMLDoc.Active := True;
  //XMLDoc.XML.Text := Value;
  XMLDoc.LoadFromFile('d:\2.xml');
 


  strarInsert := GetQueriesFromDataSetXML(XMLDoc);

    WebModule1.SQLConnection1.Connected := True;
    WebModule1.SQLQuery1.Close;
    WebModule1.SQLQuery1.SQL.Clear;
    WebModule1.SQLQuery1.SQL.Add(strarInsert.Strings[0]);
    WebModule1.SQLQuery1.Active := true;
    WebModule1.SQLQuery1.ExecSQL;
 

  Result := strarInsert.Strings[0];

  WebModule1.SQLQuery1.Close;



Функция GetQueriesFromDataSetXML(XMLDoc) возвращает набор Insert-ов. Здесь все работает. Но как только пытаюсь выполнить любое действие с SQLQuery - вылетает ошибка "Acsses Violation". При работе в обычном приложении (а не на Web-сервисе) все работает без заминки. В чем может быть загвоздка?
Спасибо за внимание! 

Автор: gashik 29.8.2011, 01:03
Странно, я так же использую в своей программе. Может быть ошибка в том что, в SQLConnection LoginPrompt=True? 
Да и в строках у меня есть еще строка 
SQLQuery1.Params.Clear;
а вот  эту WebModule1.SQLQuery1.Active := true; убери, она не нужна

Автор: halilpro 29.8.2011, 01:11
Цитата(gashik @ 29.8.2011,  01:03)
Странно, я так же использую в своей программе. Может быть ошибка в том что, в SQLConnection LoginPrompt=True? 
Да и в строках у меня есть еще строка 
SQLQuery1.Params.Clear;
а вот  эту WebModule1.SQLQuery1.Active := true; убери, она не нужна

в том то и дело, что loginpromt=false.
Что касается active = true, то до нее команда не доходит. Программа прерывается при первом вызове Query.close
Для меня странно, ведь сначала я написал тотже код в обычном приложении и все работало, а как перенес все в сервис, так не работает. Я не пойму, почему query отказывается работать

Добавлено через 4 минуты
Цитата(gashik @  29.8.2011,  01:03 Найти цитируемый пост)
Может быть ошибка в том что, в SQLConnection LoginPrompt=True?

кстати, при выполнении команды
 
Код

WebModule1.SQLConnection1.Connected := True;

программа так же прерывается. Я ее комментировал, после чего столкнулся с проблемой query.
Такое ощущение, что не могу получить доступ к webmodule

Автор: pseud 29.8.2011, 08:50
Тут одно из двух:
1. или WebModule1 не существует
2. или SQLQuery1 не существует
Склоняюсь к первому, т.к. SQLQuery1 наверняка в дизайне брошен на WebModule1. Значит при успешном создании WebModule1 успешно автосоздастся и SQLQuery1. Следовательно первое.

Автор: halilpro 29.8.2011, 10:44
Цитата(pseud @ 29.8.2011,  08:50)
Тут одно из двух:
1. или WebModule1 не существует
2. или SQLQuery1 не существует
Склоняюсь к первому, т.к. SQLQuery1 наверняка в дизайне брошен на WebModule1. Значит при успешном создании WebModule1 успешно автосоздастся и SQLQuery1. Следовательно первое.

Как разобраться создается Webmodule или нет?

Автор: pseud 30.8.2011, 08:52
Цитата(halilpro @  29.8.2011,  10:44 Найти цитируемый пост)
Как разобраться создается Webmodule или нет? 

Код

if not Assigned(WebModule1) then
  WebModule1 := TWebModule1.Create............

но вообще при создании приложения "веб-служба" веб-модуль является главным окном и такой код должен уже присутствовать в тексте файла проекта:
Код

  Application.CreateForm(TWebModule1, WebModule1);

Если его нет, значит вы создаете веб-службу совсем руками, а не File->New->WebServices...

Автор: halilpro 30.8.2011, 10:14
Цитата(pseud @  30.8.2011,  08:52 Найти цитируемый пост)
но вообще при создании приложения "веб-служба" веб-модуль является главным окном и такой код должен уже присутствовать в тексте файла проекта:
Выделить всёкод Pascal/Delphi
1:
    
  Application.CreateForm(TWebModule1, WebModule1);

Если его нет, значит вы создаете веб-службу совсем руками, а не File->New->WebServices... 


Код

Application.Initialize;
  Application.CreateForm(TWebModule1, WebModule1);
  Application.Run;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)