/// <summary>
/// Inicializa uma nova instância da classe <see cref="Spartacus.Utils.FileArray"/>.
/// </summary>
/// <param name="p_filenames">Lista de nomes de arquivos ou diretórios.</param>
/// <param name="p_filetype">Tipo dos nomes, se são arquivos ou diretórios.</param>
public FileArray(System.Collections.ArrayList p_filenames, Spartacus.Utils.FileType p_filetype)
{
Spartacus.Utils.File v_file;
int k;
this.v_files = new System.Collections.ArrayList();
k = 1;
foreach (string v_filename in p_filenames)
{
v_file = new Spartacus.Utils.File(k, 1, p_filetype, v_filename);
this.v_files.Add(v_file);
k++;
}
}
/// <summary>
/// Exporta as infromações da Query passada por parâmetro, para um arquivo XLSX
/// </summary>
/// <returns>The tabela para XLS.</returns>
/// <param name="Caminho">Caminho em que será salvo o arquivo, completo, já com a extenção e o nome.</param>
/// <param name="QuerySQL">Comando que será utilizado para gerar a tebela que será exportada.</param>
public static string ExportarTabelaParaXLSX(String Caminho, Spartacus.Database.Command QuerySQL)
{
Spartacus.Database.Generic database;
try
{
database = new Spartacus.Database.Sqlite(DB.GetStrConection());
database.TransferToFile(QuerySQL.GetUpdatedText(), Caminho);
return "Relatório gerado com sucesso!";
}
catch (Spartacus.Database.Exception ex)
{
return String.Format("Ocorreu um erro ao gerar o relatório: {0}", ex.v_message);
}
}
/// <summary>
/// Transfere dados de um arquivo Excel para o banco de dados atual.
/// Conexão com o banco atual precisa estar aberta.
/// Não pára a execução se der um problema num comando de inserção específico.
/// </summary>
/// <returns>Número de linhas transferidas.</returns>
/// <param name="p_filename">Nome do arquivo de origem.</param>
/// <param name="p_newtable">Nome da nova tabela a ser criada no banco de dados.</param>
/// <param name="p_progress">Evento de progresso.</param>
/// <param name="p_error">Evento de erro.</param>
public abstract uint TransferFromFile(string p_filename, string p_newtable, Spartacus.Utils.ProgressEventClass p_progress, Spartacus.Utils.ErrorEventClass p_error);
/// <summary>
/// Adiciona um relatório associado a um nome de arquivo PDF de saída.
/// </summary>
/// <param name="p_report">Relatório.</param>
/// <param name="p_filename">Nome do arquivo PDF de saída.</param>
public void Add(Spartacus.Reporting.Report p_report, string p_filename)
{
this.v_reports.Add(p_report);
this.v_filenames.Add(p_filename);
}
/// <summary>
/// Transfere dados do banco de dados atual para um banco de dados de destino.
/// Conexão com o banco de destino precisa estar aberta.
/// </summary>
/// <returns>Número de linhas transferidas.</returns>
/// <param name="p_query">Consulta SQL para buscar os dados no banco atual.</param>
/// <param name="p_insert">Comando de inserção para inserir cada linha no banco de destino.</param>
/// <param name="p_destdatabase">Conexão com o banco de destino.</param>
public override uint Transfer(string p_query, Spartacus.Database.Command p_insert, Spartacus.Database.Generic p_destdatabase)
{
uint v_transfered = 0;
if (this.v_con == null)
{
try
{
this.v_con = new MySql.Data.MySqlClient.MySqlConnection(this.v_connectionstring);
this.v_con.Open();
this.v_cmd = new MySql.Data.MySqlClient.MySqlCommand(p_query, this.v_con);
this.v_reader = this.v_cmd.ExecuteReader();
while (v_reader.Read())
{
for (int i = 0; i < v_reader.FieldCount; i++)
p_insert.SetValue(this.FixColumnName(v_reader.GetName(i)).ToLower(), v_reader[i].ToString());
p_destdatabase.Execute(p_insert.GetUpdatedText());
v_transfered++;
}
return v_transfered;
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
throw new Spartacus.Database.Exception(e);
}
finally
{
if (this.v_reader != null)
{
this.v_reader.Close();
this.v_reader = null;
}
if (this.v_cmd != null)
{
this.v_cmd.Dispose();
this.v_cmd = null;
}
if (this.v_con != null)
{
this.v_con.Close();
this.v_con = null;
}
}
}
else
{
try
{
this.v_cmd.CommandText = p_query;
this.v_reader = this.v_cmd.ExecuteReader();
while (v_reader.Read())
{
for (int i = 0; i < v_reader.FieldCount; i++)
p_insert.SetValue(this.FixColumnName(v_reader.GetName(i)).ToLower(), v_reader[i].ToString());
p_destdatabase.Execute(p_insert.GetUpdatedText());
v_transfered++;
}
return v_transfered;
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
throw new Spartacus.Database.Exception(e);
}
finally
{
if (this.v_reader != null)
{
this.v_reader.Close();
this.v_reader = null;
}
}
}
}
/// <summary>
/// Realiza uma consulta no banco de dados, armazenando os dados de retorno em um <see cref="System.Data.DataTable"/>.
/// </summary>
/// <param name='p_sql'>
/// Código SQL a ser consultado no banco de dados.
/// </param>
/// <param name='p_tablename'>
/// Nome virtual da tabela onde deve ser armazenado o resultado, para fins de cache.
/// </param>
/// <param name='p_progress'>Evento de progresso da execução da consulta.</param>
/// <returns>Retorna uma <see cref="System.Data.DataTable"/> com os dados de retorno da consulta.</returns>
public override System.Data.DataTable Query(string p_sql, string p_tablename, Spartacus.Utils.ProgressEventClass p_progress)
{
System.Data.DataTable v_table = null;
System.Data.DataRow v_row;
uint v_counter = 0;
p_progress.FireEvent(v_counter);
if (this.v_con == null)
{
try
{
this.v_con = new MySql.Data.MySqlClient.MySqlConnection(this.v_connectionstring);
this.v_con.Open();
this.v_cmd = new MySql.Data.MySqlClient.MySqlCommand(p_sql, this.v_con);
this.v_reader = this.v_cmd.ExecuteReader();
v_table = new System.Data.DataTable(p_tablename);
for (int i = 0; i < v_reader.FieldCount; i++)
v_table.Columns.Add(this.FixColumnName(this.v_reader.GetName(i)), typeof(string));
while (this.v_reader.Read())
{
v_row = v_table.NewRow();
for (int i = 0; i < this.v_reader.FieldCount; i++)
v_row[i] = this.v_reader[i].ToString();
v_table.Rows.Add(v_row);
v_counter++;
p_progress.FireEvent(v_counter);
}
return v_table;
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
throw new Spartacus.Database.Exception(e);
}
finally
{
if (this.v_reader != null)
{
this.v_reader.Close();
this.v_reader = null;
}
if (this.v_cmd != null)
{
this.v_cmd.Dispose();
this.v_cmd = null;
}
if (this.v_con != null)
{
this.v_con.Close();
this.v_con = null;
}
}
}
else
{
try
{
this.v_cmd.CommandText = p_sql;
this.v_reader = this.v_cmd.ExecuteReader();
v_table = new System.Data.DataTable(p_tablename);
for (int i = 0; i < v_reader.FieldCount; i++)
v_table.Columns.Add(this.FixColumnName(this.v_reader.GetName(i)), typeof(string));
while (this.v_reader.Read())
{
v_row = v_table.NewRow();
for (int i = 0; i < this.v_reader.FieldCount; i++)
v_row[i] = this.v_reader[i].ToString();
v_table.Rows.Add(v_row);
v_counter++;
p_progress.FireEvent(v_counter);
}
return v_table;
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
throw new Spartacus.Database.Exception(e);
}
finally
{
if (this.v_reader != null)
{
//.........这里部分代码省略.........
请发表评论