Boa noite Pessoal
Tenho um dataset que lê uma view no banco de dados via conexão jdbc… Mas é uma consulta com muitos itens, como tornar este dataset sincrono?
View
SELECT [IDPRD]
,[CODIGO_ITEM]
,[NOME_ITEM]
,[UNIDADE_ITEM]
,[CODIGO_FAMILIA]
,[NOME_FAMILIA]
,[CODIGO_NATUREZA]
,[NUM_FABRICANTE]
,[NATUREZA]
,[TIPO_ITEM]
,[GRPFATURAMENTO]
,[CODFAB]
,[GRP_FATURAMENTO]
FROM _Fluig_ITENS
Dataset
function createDataset(fields, constraints, sortFields) {
var newDataset = DatasetBuilder.newDataset();
var dataSource = “/jdbc/FluigRM”;
var ic = new javax.naming.InitialContext();
var ds = ic.lookup(dataSource);
var created = false;
var myQuery = "SELECT * from _Fluig_ITENS";
log.info("QUERY: " + myQuery);
try {
var conn = ds.getConnection();
var stmt = conn.createStatement();
var rs = stmt.executeQuery(myQuery);
var columnCount = rs.getMetaData().getColumnCount();
while (rs.next()) {
if (!created) {
for (var i = 1; i <= columnCount; i++) {
newDataset.addColumn(rs.getMetaData().getColumnName(i));
}
created = true;
}
var Arr = new Array();
for (var i = 1; i <= columnCount; i++) {
var obj = rs.getObject(rs.getMetaData().getColumnName(i));
if (null != obj) {
Arr[i - 1] = rs.getObject(rs.getMetaData().getColumnName(i)).toString();
} else {
Arr[i - 1] = "null";
}
}
newDataset.addRow(Arr);
}
} catch (e) {
log.error("ERRO==============> " + e.message);
} finally {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
return newDataset;
}
@herickfreitas conseguiu?
Surgiu essa necessidade aqui pra mim tbm, se obter sucesso compartilho aqui.
Por hora, estou passando uma func que da clear nos valores e subo novamente a cada vez que a schedule roda 
Bom dia
Ficou assim! Configurei para atualizar diariamente às 22:00.
O comando addOrUpdateRow irá atualizar os registros existentes, quando não existir, será incluído.
function defineStructure() {
addColumn("CODCOLIGADA");
addColumn("IDPRD");
addColumn("CODIGO_ITEM");
addColumn("NOME_ITEM");
addColumn("UNIDADE_ITEM");
addColumn("CODIGO_FAMILIA");
addColumn("NOME_FAMILIA");
addColumn("CODIGO_NATUREZA");
addColumn("NUM_FABRICANTE");
addColumn("NATUREZA");
addColumn("TIPO_ITEM");
addColumn("GRPFATURAMENTO");
addColumn("CODFAB");
addColumn("GRP_FATURAMENTO");
setKey([ "IDPRD" ]);
addIndex([ "CODCOLIGADA" ]);
addIndex([ "IDPRD" ]);
addIndex([ "CODIGO_ITEM" ]);
addIndex([ "NOME_ITEM" ]);
addIndex([ "NUM_FABRICANTE" ]);
addIndex([ "CODCOLIGADA", "IDPRD", "CODIGO_ITEM", "NOME_ITEM", "NUM_FABRICANTE" ]);
}
function onSync(lastSyncDate) {
var newDataset = DatasetBuilder.newDataset();
var dataSource = "/jdbc/FluigRM";
var ic = new javax.naming.InitialContext();
var ds = ic.lookup(dataSource);
var created = false;
log.info(" dsRmItens >>>> Entrou ");
// * Campos retornados no Select
// * [IDPRD],[CODIGO_ITEM ],[NOME_ITEM ],[UNIDADE_ITEM ],[CODIGO_FAMILIA ],[NOME_FAMILIA ],[CODIGO_NATUREZA ],
// * [NUM_FABRICANTE ],[NATUREZA ],[TIPO_ITEM ],[GRPFATURAMENTO ],[CODFAB] ,[GRP_FATURAMENTO]
var myQuery = "SELECT * FROM _Fluig_ITENS where codcoligada=1";
log.info("QUERY: " + myQuery);
try {
var conn = ds.getConnection();
var stmt = conn.createStatement();
var rs = stmt.executeQuery(myQuery);
var columnCount = rs.getMetaData().getColumnCount();
while (rs.next()) {
if (!created) {
for (var i = 1; i <= columnCount; i++) {
newDataset.addColumn(rs.getMetaData().getColumnName(i));
}
created = true;
}
var Arr = new Array();
for (var i = 1; i <= columnCount; i++) {
var obj = rs.getObject(rs.getMetaData().getColumnName(i));
if (null != obj) {
Arr[i - 1] = rs.getObject(rs.getMetaData().getColumnName(i)).toString();
} else {
Arr[i - 1] = "null";
}
}
newDataset.addOrUpdateRow(Arr);
}
} catch (e) {
log.error("ERRO==============> " + e.message);
} finally {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
return newDataset;
}
function createDataset(fields, constraints, sortFields) {
}
1 curtida