AX 文件内容的读写
X++ 这方面使用的是.net Framework,读取文件时,要权限放行。
以下代码,会看到可爱的System.IO.SteamReader。如此熟悉,感动ing。。。

static void readJob(Args _args)
{
System.IO.StreamReader m_streader;
InteropPermission m_Perm = new InteropPermission(InteropKind::ClrInterop);
Notes m_Notes;
m_Perm.assert();
m_streader = new System.IO.StreamReader(@"C:\ms\n01yan_100.copy");
while(int642int(m_streader.Peek())>0)
{
m_Notes += m_streader.ReadToEnd();
}
m_streader.Close();
m_streader.Dispose();
CodeAccessPermission::revertAssert();
info(m_Notes);
// pause;
}
{
System.IO.StreamReader m_streader;
InteropPermission m_Perm = new InteropPermission(InteropKind::ClrInterop);
Notes m_Notes;
m_Perm.assert();
m_streader = new System.IO.StreamReader(@"C:\ms\n01yan_100.copy");
while(int642int(m_streader.Peek())>0)
{
m_Notes += m_streader.ReadToEnd();
}
m_streader.Close();
m_streader.Dispose();
CodeAccessPermission::revertAssert();
info(m_Notes);
// pause;
}
写入
static void StreamWriter(Args _args)
{
System.IO.StreamWriter sw;
InteropPermission perm = new InteropPermission(InteropKind::ClrInterop);
SalesTable st;
;
perm.assert();
sw = new System.IO.StreamWriter(@"C:\test.txt");
while select st
{
sw.WriteLine(st.SalesId);
sw.WriteLine(st.CustAccount + " " + Date2str(st.DeliveryDate,321,2,3,2,3,4));
}
sw.Flush();
sw.Close();
sw.Dispose();
CodeAccessPermission::revertAssert();}
{
System.IO.StreamWriter sw;
InteropPermission perm = new InteropPermission(InteropKind::ClrInterop);
SalesTable st;
;
perm.assert();
sw = new System.IO.StreamWriter(@"C:\test.txt");
while select st
{
sw.WriteLine(st.SalesId);
sw.WriteLine(st.CustAccount + " " + Date2str(st.DeliveryDate,321,2,3,2,3,4));
}
sw.Flush();
sw.Close();
sw.Dispose();
CodeAccessPermission::revertAssert();}
posted @ 2011-12-13 13:43 Kurodo 阅读(20) 评论(0) 编辑
AX调用存储过程
X++ 通过OdbcConnection访问数据库,调用存储过程。
要注意一点,调用存储过程的窗体或者类方法等,必须要有开发者权限。
static void SpJob(Args _args)
{
LoginProperty m_loginProperty; //登录配置
OdbcConnection m_connection; //链接对象
Statement m_stmt; //状态
ResultSet m_sqlres; //结果集
Str m_strSQL; //查询字符串
SqlStatementExecutePermission m_permission; //执行权限
;
m_loginProperty = new LoginProperty();
m_loginProperty.setServer("Kurodo\\SQL2008");
m_loginProperty.setServer("AX_DEV");
m_connection = new OdbcConnection(m_loginProperty);
m_stmt = m_connection.createStatement();
m_strSQL = strfmt("exec Sp_SelectSp '%1','%2'",11,22); //执行存储过程参数 11 22
m_permission = new SQLStatementExecutePermission(m_strSQL);
m_permission.assert();
m_sqlres = m_stmt.executeQuery(m_strSQL);
CodeAccessPermission::revertAssert();
while(m_sqlres.next())
{
info(strfmt("ID: %1 Name: %2",m_sqlres.getInt(1),m_sqlres.getString(2))); //数据集对应类型
}
pause;
}
{
LoginProperty m_loginProperty; //登录配置
OdbcConnection m_connection; //链接对象
Statement m_stmt; //状态
ResultSet m_sqlres; //结果集
Str m_strSQL; //查询字符串
SqlStatementExecutePermission m_permission; //执行权限
;
m_loginProperty = new LoginProperty();
m_loginProperty.setServer("Kurodo\\SQL2008");
m_loginProperty.setServer("AX_DEV");
m_connection = new OdbcConnection(m_loginProperty);
m_stmt = m_connection.createStatement();
m_strSQL = strfmt("exec Sp_SelectSp '%1','%2'",11,22); //执行存储过程参数 11 22
m_permission = new SQLStatementExecutePermission(m_strSQL);
m_permission.assert();
m_sqlres = m_stmt.executeQuery(m_strSQL);
CodeAccessPermission::revertAssert();
while(m_sqlres.next())
{
info(strfmt("ID: %1 Name: %2",m_sqlres.getInt(1),m_sqlres.getString(2))); //数据集对应类型
}
pause;
}
posted @ 2011-12-13 12:02 Kurodo 阅读(35) 评论(0) 编辑
