Пробежка по коллекции документов с возможностью использования Type total для формирования массива содержащего в себе значения lable, value, value_percent. Удобно для использования в сортировке коллекции документов по выбранному ключу (полю)
[Declarations]
Type total
lable As String
value As Double
value_percent As Double
End Type
[Sub/Function]
dim suf
suf = "_1"
Dim doc As NotesDocument
Dim progolos As NotesItem
Dim proc As NotesItem
Dim a As Integer
Dim progolos As String, proc As String, progolos_val As Variant, proc_val As Variant
progolos = "progolos_" & suf
proc= "proc_" & suf
Set doc = coll.GetFirstDocument
Do While Not(doc Is Nothing)
Set progolos = doc.GetFirstItem(progolos_izbiratel)
Set proc = doc.GetFirstItem(proc_izbiratel)
If ( progolos Is Nothing ) Then
progolos_val = ""
Else
progolos_val = progolos.values(0)
End If
If ( proc Is Nothing ) Then
proc_val = ""
Else
proc_val = proc.values(0)
End If
ReDim Preserve array(a%) As total_progolos
array(a%).lable = doc.n_kom(0)
array(a%).value = progolos_val
array(a%).value_percent = proc_val
Set doc = coll.GetNextDocument(doc)
a% = a% + 1
Loop
26 октября 2010 г.
25 октября 2010 г.
Вышел релиз IBM Lotus Symphony3
Компания IBM выпустила релиз офисного пакета Lotus Symphony 3.0, построенного на основе переработанного кода OpenOffice.org 3.x (прошлая стабильная версия Lotus Symphony 1.3 была основана на OpenOffice.org 1.1.4) и Eclipse Rich Client Platform. Lotus Symphony имеет переработанный интерфейс пользователя, позволяет создавать документы, электронные таблицы и презентации с организацией совместного доступа и групповой работы над ними. В пакете имеется поддержка всех популярных форматов офисных документов, включая DOC, PPS, OOXML (Microsoft Office) и ODF (Open Document Format). Пакет доступен для свободной загрузки для платформ Windows, Mac OS X, Ubuntu, Red Hat и SUSE Linux.
По сравнению с прошлой версией в Lotus Symphony 3.0 внесено более сотни важных улучшений. Наиболее интересные из новшеств:
Поддержка выполнения VBA-скриптов;
Поддержка стандарта ODF 1.2;
Поддержка OLE-объектов Office 2007;
Полностью переработанная боковая панель инструментов, содержащая расширенный набор секций и панелей, поддерживающая гибкие средства настройки содержимого;
Поддержка настройки содержимого и формата панели инструментов;
Возможность создания новых визитных карт и этикеток;
Возможность интеграции в документ OLE-объектов, аудио и видео файлов;
Поддержка режима Live Text, позволяющего распознавать типовые шаблоны в тексте и выполнять с текстом определенные действия (например, указывать адрес на карте, выводить данные из адресной книги и т.п.);
Поддержка зашифрованных и защищенных паролем файлов Microsoft Word и Excel;
Новая галерея клипарта и расширенный набор шаблонов;
Поддержка VML-изображений в файлах OOXML;
Поддержка в VBA API расширенных параметров для защиты электронных таблиц;
Автоматическая проверка наличия обновления пакета в сети;
Редактор документов
Поддержка вложенных таблиц;
Режим многостраничного просмотра макета документа;
Поддержка режима Auto Text, при котором редактор автоматически подбирает варианты завершения фразы по первым буквам;
Поддержка задания пользовательских свойств;
Несколько уровней начертания абзцев;
Редактор электронных таблиц
Максимальное число столбцов расширено с 256 до 1024;
Поддержка масштабирования, характерного для электронных таблиц;
Поддержка преобразования текста в значения столбцов;
Возможность решения уравнений;
Функция "What if";
Поддержка вставки массива констант в формулу;
Поддержка динамических диапазонов в списках проверки;
Поддержка дополнительных формул.
Система создания презентаций
Поддержка отображения на нескольких мониторах;
Расширение числа анимационных эффектов для презентаций;
Расширения числа макетов страниц, графических объектов и шрифтов;
Поддержка копирования и вставки страниц и объектов, вместе со связанными с ними анимационными эффектами.
Прекращена поддержка возможностей, ранее доступных в версии 1.3: импорт SmartSuite-файлов, поддержка Freehand-таблиц, предварительный просмотр презентации перед выводом на печать, возможность создания XForm-документов и поддержка Connector в редакторе документов.
По сравнению с прошлой версией в Lotus Symphony 3.0 внесено более сотни важных улучшений. Наиболее интересные из новшеств:
Поддержка выполнения VBA-скриптов;
Поддержка стандарта ODF 1.2;
Поддержка OLE-объектов Office 2007;
Полностью переработанная боковая панель инструментов, содержащая расширенный набор секций и панелей, поддерживающая гибкие средства настройки содержимого;
Поддержка настройки содержимого и формата панели инструментов;
Возможность создания новых визитных карт и этикеток;
Возможность интеграции в документ OLE-объектов, аудио и видео файлов;
Поддержка режима Live Text, позволяющего распознавать типовые шаблоны в тексте и выполнять с текстом определенные действия (например, указывать адрес на карте, выводить данные из адресной книги и т.п.);
Поддержка зашифрованных и защищенных паролем файлов Microsoft Word и Excel;
Новая галерея клипарта и расширенный набор шаблонов;
Поддержка VML-изображений в файлах OOXML;
Поддержка в VBA API расширенных параметров для защиты электронных таблиц;
Автоматическая проверка наличия обновления пакета в сети;
Редактор документов
Поддержка вложенных таблиц;
Режим многостраничного просмотра макета документа;
Поддержка режима Auto Text, при котором редактор автоматически подбирает варианты завершения фразы по первым буквам;
Поддержка задания пользовательских свойств;
Несколько уровней начертания абзцев;
Редактор электронных таблиц
Максимальное число столбцов расширено с 256 до 1024;
Поддержка масштабирования, характерного для электронных таблиц;
Поддержка преобразования текста в значения столбцов;
Возможность решения уравнений;
Функция "What if";
Поддержка вставки массива констант в формулу;
Поддержка динамических диапазонов в списках проверки;
Поддержка дополнительных формул.
Система создания презентаций
Поддержка отображения на нескольких мониторах;
Расширение числа анимационных эффектов для презентаций;
Расширения числа макетов страниц, графических объектов и шрифтов;
Поддержка копирования и вставки страниц и объектов, вместе со связанными с ними анимационными эффектами.
Прекращена поддержка возможностей, ранее доступных в версии 1.3: импорт SmartSuite-файлов, поддержка Freehand-таблиц, предварительный просмотр презентации перед выводом на печать, возможность создания XForm-документов и поддержка Connector в редакторе документов.
Ярлыки:
Lotus Symphony
12 октября 2010 г.
Java class по работе связки Notes&SQL
Класс представляет собой связку Notes и SQL. Агент запускается при активировании ссылки [http://host/db.nsf/agent?OpenAgent&id=111111]. Далее происходит обработка запроса к SQL по полученному праметру id=111111, затем в базе Domino создается notes-документ с параметрами выбранными из запроса.
import lotus.domino.*;
import java.util.Vector;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.net.*;
import java.io.*;
import java.util.*;
public class JavaAgent extends AgentBase {
public static java.util.Hashtable parseQueryString(String queryString) {
StringTokenizer tokens = new StringTokenizer(queryString, "&");
Hashtable params = new Hashtable();
while (tokens.hasMoreTokens()){
String token = tokens.nextToken();
int equalIdx = token.indexOf('=');
if (equalIdx != -1 && !token.equalsIgnoreCase("OpenAgent")){
String name = token.substring(0, equalIdx);
System.out.println("name " + name);
String value = token.substring(equalIdx + 1);
System.out.println("value " + value);
params.put(name, value);
}
}
return params;
}
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Document webdoc = agentContext.getDocumentContext();
PrintWriter pw = getAgentOutput();
String qs = webdoc.getItemValueString("Query_String");
java.util.Hashtable ht = parseQueryString(qs);
String id = (String) ht.get( "id" );
// pw.println("ID : " + id);
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
// System.out.println("сессии инициировались");
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
// Class.forName("org.postgresql.Driver").newInstance(); //для случая postgresql
System.out.println("Драйвер загружен");
}
catch (Exception ex)
{
System.out.println("SQLException: " + ex.getMessage());
}
try {
conn = DriverManager.getConnection("jdbc:mysql://conect);
// conn = DriverManager.getConnection("jdbc:postgresql://conect); //для случая postgresql
System.out.println("Подключение установлено");
}
catch (SQLException ex)
{
System.out.println("On connect SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
try {
stmt = conn.createStatement();
System.out.println("id " + id);
String Query = "SELECT * FROM pr_data WHERE auth = " + '"'+id+ '"';// + " ORDER BY id";
//String Query = "SELECT * FROM pr_data";
System.out.println("Запрос " + Query);
try {
rs = stmt.executeQuery(Query);
System.out.println("Запрос выполняется");
}
catch(SQLException ex)
{
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
Database db = agentContext.getCurrentDatabase();
Document doc = db.createDocument();
while (rs.next()) {
int theid= rs.getInt("id");
String fname = rs.getString("fname");
String mname = rs.getString("mname");
String lname = rs.getString("lname");
String message = rs.getString("message");
String email = rs.getString("email");
String auth = rs.getString("auth");
String pindex = rs.getString("pindex");
String pregion = rs.getString("pregion");
String plocality = rs.getString("plocality");
String pstreet = rs.getString("pstreet");
String phome = rs.getString("phome");
String pcorps = rs.getString("pcorps");
String pflat = rs.getString("pflat");
System.out.println("Переменные присвоены");
System.out.println("auth_code= " + auth );
System.out.println("id= " + theid + " ---> ФИО = " + fname + " " + mname +" "+ lname);
System.out.println("id= " + theid + " ---> Почтовый адрес = " + pindex +" "+ pregion +" "+ plocality +" "+ pstreet +" "+ phome +" "+ pcorps +" "+ pflat);
System.out.println("id= " + theid + " ---> Электронныйый адрес = " + email);
System.out.println("id= " + theid + " ---> Текст обращения = " + message );
System.out.println("_________________________________");
doc.replaceItemValue("Form", "rlo");
doc.replaceItemValue("auth", id);
doc.replaceItemValue("FIO", fname + " " + mname +" "+ lname);
doc.replaceItemValue("Address", pindex +" "+ pregion +" "+ plocality +" ул."+ pstreet +" д."+ phome +" корп."+ pcorps +" кв."+ pflat);
doc.replaceItemValue("email", email);
doc.replaceItemValue("Annotation", message);
doc.computeWithForm(false, false);
doc.save();
}
} finally {
if (rs != null) {
try {
rs.close();
} catch(SQLException ex) {}
rs = null;
} //if
if (stmt != null) {
try {
stmt.close();
} catch(SQLException ex) {}
stmt = null;
} //if
} //finally
} catch(Exception e) {
e.printStackTrace();
}
}
}
import lotus.domino.*;
import java.util.Vector;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.net.*;
import java.io.*;
import java.util.*;
public class JavaAgent extends AgentBase {
public static java.util.Hashtable parseQueryString(String queryString) {
StringTokenizer tokens = new StringTokenizer(queryString, "&");
Hashtable params = new Hashtable();
while (tokens.hasMoreTokens()){
String token = tokens.nextToken();
int equalIdx = token.indexOf('=');
if (equalIdx != -1 && !token.equalsIgnoreCase("OpenAgent")){
String name = token.substring(0, equalIdx);
System.out.println("name " + name);
String value = token.substring(equalIdx + 1);
System.out.println("value " + value);
params.put(name, value);
}
}
return params;
}
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Document webdoc = agentContext.getDocumentContext();
PrintWriter pw = getAgentOutput();
String qs = webdoc.getItemValueString("Query_String");
java.util.Hashtable ht = parseQueryString(qs);
String id = (String) ht.get( "id" );
// pw.println("ID : " + id);
Statement stmt = null;
ResultSet rs = null;
Connection conn = null;
// System.out.println("сессии инициировались");
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
// Class.forName("org.postgresql.Driver").newInstance(); //для случая postgresql
System.out.println("Драйвер загружен");
}
catch (Exception ex)
{
System.out.println("SQLException: " + ex.getMessage());
}
try {
conn = DriverManager.getConnection("jdbc:mysql://conect);
// conn = DriverManager.getConnection("jdbc:postgresql://conect); //для случая postgresql
System.out.println("Подключение установлено");
}
catch (SQLException ex)
{
System.out.println("On connect SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
try {
stmt = conn.createStatement();
System.out.println("id " + id);
String Query = "SELECT * FROM pr_data WHERE auth = " + '"'+id+ '"';// + " ORDER BY id";
//String Query = "SELECT * FROM pr_data";
System.out.println("Запрос " + Query);
try {
rs = stmt.executeQuery(Query);
System.out.println("Запрос выполняется");
}
catch(SQLException ex)
{
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
Database db = agentContext.getCurrentDatabase();
Document doc = db.createDocument();
while (rs.next()) {
int theid= rs.getInt("id");
String fname = rs.getString("fname");
String mname = rs.getString("mname");
String lname = rs.getString("lname");
String message = rs.getString("message");
String email = rs.getString("email");
String auth = rs.getString("auth");
String pindex = rs.getString("pindex");
String pregion = rs.getString("pregion");
String plocality = rs.getString("plocality");
String pstreet = rs.getString("pstreet");
String phome = rs.getString("phome");
String pcorps = rs.getString("pcorps");
String pflat = rs.getString("pflat");
System.out.println("Переменные присвоены");
System.out.println("auth_code= " + auth );
System.out.println("id= " + theid + " ---> ФИО = " + fname + " " + mname +" "+ lname);
System.out.println("id= " + theid + " ---> Почтовый адрес = " + pindex +" "+ pregion +" "+ plocality +" "+ pstreet +" "+ phome +" "+ pcorps +" "+ pflat);
System.out.println("id= " + theid + " ---> Электронныйый адрес = " + email);
System.out.println("id= " + theid + " ---> Текст обращения = " + message );
System.out.println("_________________________________");
doc.replaceItemValue("Form", "rlo");
doc.replaceItemValue("auth", id);
doc.replaceItemValue("FIO", fname + " " + mname +" "+ lname);
doc.replaceItemValue("Address", pindex +" "+ pregion +" "+ plocality +" ул."+ pstreet +" д."+ phome +" корп."+ pcorps +" кв."+ pflat);
doc.replaceItemValue("email", email);
doc.replaceItemValue("Annotation", message);
doc.computeWithForm(false, false);
doc.save();
}
} finally {
if (rs != null) {
try {
rs.close();
} catch(SQLException ex) {}
rs = null;
} //if
if (stmt != null) {
try {
stmt.close();
} catch(SQLException ex) {}
stmt = null;
} //if
} //finally
} catch(Exception e) {
e.printStackTrace();
}
}
}
6 октября 2010 г.
Новоиспеченный проект по ведению Реестра муниципальных служащих

Недавно поступило задание сделать такой Реестр муниципальных служащих, в котором бы отображалась информация о последних. Сказано сделано! Посидев несколько вечеров написал вот такое приложение.
Из возможностей отмечу следующее.
* ведение Регистра в любом регионе, с последующей репликацией данных в единое хранилище.
* подготовка списка муниципальных служащих как внутри своего муниципального образования, так и в любом из имеющихся в базе данных.
* переопределение одного и более муниципальных служащих из других муниципальных образованиq в своё муниципальное образование
* вычисление стажа работы муниципального служащего на должности в муниципальном образовании
* автоматический пересчет стажа работы муниципального служащего на должности в муниципальном образовании
Видео с презентацией работы.
Ярлыки:
проекты,
OpenOffice
Подписаться на:
Сообщения (Atom)