RUS  ENG 

Создание таблицы в БД слоя

Страницы: 1
RSS
Создание таблицы в БД слоя
 
Добрый день. Пытаюсь создать таблицу в БД.
Вот эта конструкция работает

public static void AddTable(string pathSloy)
{
try
{
var actLayer = new Layer();
actLayer.Open(pathSloy);


var zdb = new ZbDatabase();
try
{
//Для участков индекс 5
var baseName = actLayer.ObjectTypes.GetItemByIndex((int)MyZuluDBType.enItems.HeatSector).BaseName;
zdb.Open(baseName);

string tblName = "qq";
var source = zdb.Tables[0].Source;


var tbldef = new ZbTableDef();
tbldef.AddField("Sys", zbFieldType.zbftInteger, 0, 0, true);
tbldef.AddField("Descr", zbFieldType.zbftString, 50, 0, false);

IZbTableInfo tblinf;
bool res = zdb.CreateTableEx(source, tblName, tbldef, true, out tblinf);
if (res)
MessageBox.Show("Таблица добавлена");
else
MessageBox.Show("Ошибка добавления таблицы");
}
finally
{
zdb.Save(0);
zdb.Close(true);
}
}
catch (Exception ex)
{
MessageBox.Show("Сбой - " + ex.Message);
}

}


А вот эта почему то не работает. Хотя вроде бы как все тоже самое, не могу понять, что тут может быть не так. Подскажите пожалуйста.

' ActiveX enumeration values definitions start (do not change!)
Const zbftFloat = 6
Const zbftString = 1
Const zbftInteger = 3
' ActiveX enumeration values definitions end


Sub avar
Set Out = Zulu.OpenOutputChannel("")
Out.Clear
Out.Put "Start" + CHR(10)
Set L = CreateObject("ZuluLib.Layer")
L.Open "C:\Users\alexe\OneDrive\Рабочий стол\Сервис аварийности\testmacro\2.b00"
Set B = L.Bases
Set potr_db = B.ItemById(8).Open

tblName = "qqqq"

source = potr_db.Sources.Item(0).Name

Set tbldef = CreateObject("Zb.ZbTableDef")

tbldef.AddField "sys", zbftInteger, 0 , 6, True
tbldef.AddField "Descr", zbftString, 50, 0, false

potr_db.CreateTableEx source,TBLNAME,tbldef,True

potr_db.Save(0)
Out.Put "Finish" + CHR(10)
End Sub

Ошибка следующая "potr_db.CreateTableEx: несоответствие типа"
 
Алексей, добрый день!
В методе CreateTableEx есть ещё один параметр, который в первом примере (VB.Net) вы передаёте (см. "out tblinf"), а в случае VB Script его (а это объект по ссылке) и не передать, из-за чего и ошибка. Для VB Script введён похожий метод CreateTable2 без этого параметра. Воспользуйтесь им.
 
Цитата
написал:
Алексей, добрый день!
В методе CreateTableEx есть ещё один параметр, который в первом примере (VB.Net) вы передаёте (см. "out tblinf"), а в случае VB Script его (а это объект по ссылке) и не передать, из-за чего и ошибка. Для VB Script введён похожий метод CreateTable2 без этого параметра. Воспользуйтесь им.
А я думал не обязательный параметр. Но и с ним тоже пробовал, не уверен конечно, что правильно - просто добавлял переменную

dim tblinf и туда ее подставлял. Те. если полностью

dim tblinf

potr_db.CreateTableEx source,TBLNAME,tbldef,True, tblinf

Была та же ошибка.
 
CreateTable2 работает. Как локально так и сервером воспользуюсь им. Спасибо за ответ!
Страницы: 1