Добрый день. Пытаюсь создать таблицу в БД.
Вот эта конструкция работает
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: несоответствие типа"
Вот эта конструкция работает
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: несоответствие типа"