Страница 1 из 1

Уточнение

Добавлено: 15 Август 2006, 12:44
And234
Закончил прогу и прошу уточнить несколько вопросов.
1) При запуске программы, (строку источника положил в глобальную переменную для путь файла в словаре)
при неверном соединении выдает виндовское окно выбора источника соединения.
Я хочу сделать так чтоб при загрузке тестировалось соединение(это сделано) и если оно неверно то выдавал окно настройки соединения (созаное мной в моей программе)
Т.Е. убрать виндовское окно.
2) хочу выполнить скрипт SQL(создание новой базы данных на серваке) через MAVLOAD, но ей необходимо чтото подсовывать в виде результата выполнения.

Добавлено: 16 Август 2006, 6:58
Денис
а зачем скрипт засовывать в MAVLOAD? есть целый класс MAVExecute, как раз подойдет

Re: Уточнение

Добавлено: 16 Август 2006, 8:26
DimOn
And234 писал(а):1) При запуске программы, (строку источника положил в глобальную переменную для путь файла в словаре)
при неверном соединении выдает виндовское окно выбора источника соединения.
Я хочу сделать так чтоб при загрузке тестировалось соединение(это сделано) и если оно неверно то выдавал окно настройки соединения (созаное мной в моей программе)
У функции MAVCONNECT есть третий параметр, который отвечает за появление стандартного окна соединения ODBC драйвера. Подробности тут - http://forum.clarionlife.net/viewtopic.php?t=1530

Re: Уточнение

Добавлено: 16 Август 2006, 10:42
Admin
And234 писал(а): Я хочу сделать так чтоб при загрузке тестировалось соединение(это сделано)
Кусок кода можешь показать как сделал?

Добавлено: 25 Август 2006, 9:34
And234
Кусок кода можешь показать как сделал?
не туда код влепил, смотрите
http://forum.clarionlife.net/viewtopic.php?p=7014#7014

Добавлено: 25 Август 2006, 9:55
And234
Процедура такая

Код: Выделить всё

CREATE PROCEDURE sp_DeleteStudent
@idStud  numeric(6,0)
AS

if exists (select idArrival from Arrival where idStud=@idStud)
    Begin
       declare @fd     bit
     set @fd=(select flagdelStud from Student where idStud=@idStud)
      if (@fd is null)or(@fd=0)
           UPDATE Student SET flagdelStud = 1 WHERE idStud = @idStud
       else
            UPDATE Student SET flagdelStud = 0  WHERE idStud = @idStud
  end
else
 delete Student  where idStud=@idStud
select 1
GO
Код по вызову
приблизительно такой

Код: Выделить всё

MAV:WindowManager.NewReport       PROCEDURE

QDriver     QUEUE
end

APP_glo     CLASS(APPGM)
    end

    CODE

  close(outtext)
  Create(OutTEXT)
  Share(OutText)
  DateBeginYear=APP_glo.toBeginLearnYear(glo_DateLast)
  
  if MAVLOAD('sp_MonthRevolutionResult'&APP_glo.toSQLDT(DateBeginYear)&','&APP_glo.toSQLDT(DateBeginMonth)&','&APP_glo.toSQLDT(DateEndMonth)&','&APP_glo.toSQLDT(glo_DateLast),QDriver) then
    MAVSHOWERROR('Ioeaea io?aoa| ia?aoeoanu e ?ac?aaio?eeo')
  else
    FastI = RECORDS(QDriver)
    LOOP I = 1 TO FastI
      GET(QDriver,I)
      If FacOUT<>QDriver.IDFac then
        If clip(FacOUT)='' then
Если убрать строку возврата Select 1 то выдает ошибку
При создании новых структур данных на SQL сервере возврат как то не в тему

Добавлено: 28 Август 2006, 8:38
Andrew™
And234 писал(а):Если убрать строку возврата Select 1 то выдает ошибку
При создании новых структур данных на SQL сервере возврат как то не в тему
правильно, MAVLOAD это по определению - получить результат , если в ХП нету такового то и будет ошибка, для твоего случая раз нету получения результата надо воспользоваться соответсвующим классом для выполнеия ХП - MAVExecSP

Код: Выделить всё

sql  MAVExecSP
tmp  DECIMAL(6,0)
   CODE
 tmp = 1
 sql.BindParameter(tmp)
 IF sql.Run('sp_DeleteStudent')
   MAVSHOWERROR
 END
и глянь во что превращается данный код в трассе