Уточнение

Обсуждение MAV Direct ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
And234

Уточнение

Сообщение And234 »

Закончил прогу и прошу уточнить несколько вопросов.
1) При запуске программы, (строку источника положил в глобальную переменную для путь файла в словаре)
при неверном соединении выдает виндовское окно выбора источника соединения.
Я хочу сделать так чтоб при загрузке тестировалось соединение(это сделано) и если оно неверно то выдавал окно настройки соединения (созаное мной в моей программе)
Т.Е. убрать виндовское окно.
2) хочу выполнить скрипт SQL(создание новой базы данных на серваке) через MAVLOAD, но ей необходимо чтото подсовывать в виде результата выполнения.
Денис
Бывалый
Сообщения: 70
Зарегистрирован: 07 Июль 2005, 5:39
Откуда: Хабаровск
Контактная информация:

Сообщение Денис »

а зачем скрипт засовывать в MAVLOAD? есть целый класс MAVExecute, как раз подойдет
Аватара пользователя
DimOn
Новичок
Сообщения: 10
Зарегистрирован: 02 Август 2005, 15:58
Откуда: г.Вязьма, Смоленская обл.
Контактная информация:

Re: Уточнение

Сообщение DimOn »

And234 писал(а):1) При запуске программы, (строку источника положил в глобальную переменную для путь файла в словаре)
при неверном соединении выдает виндовское окно выбора источника соединения.
Я хочу сделать так чтоб при загрузке тестировалось соединение(это сделано) и если оно неверно то выдавал окно настройки соединения (созаное мной в моей программе)
У функции MAVCONNECT есть третий параметр, который отвечает за появление стандартного окна соединения ODBC драйвера. Подробности тут - http://forum.clarionlife.net/viewtopic.php?t=1530
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Re: Уточнение

Сообщение Admin »

And234 писал(а): Я хочу сделать так чтоб при загрузке тестировалось соединение(это сделано)
Кусок кода можешь показать как сделал?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
And234

Сообщение And234 »

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

Сообщение 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 сервере возврат как то не в тему
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение 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
и глянь во что превращается данный код в трассе
Ответить