2
The grid displays only the first character of the "ID"
For example: if the ID is 16 it displays 1; If it’s 20 displays 2;
However from 1 to 9 displays correctly...
Code that selects the data...
private void lixeiraDialog_Load(object sender, EventArgs e)
{
//carrega do banco todos os registros excluidos (status = 0)
MySqlCommand sql = this.conexaoBanco.criaComandoSQL("sp_select_lixeira");
sql.Parameters.Add(new MySqlParameter("nome_tabela", this.tabela));
sql.Parameters.Add(new MySqlParameter("id_tabela", this.pk));
sql.Parameters.Add(new MySqlParameter("campo_tabela", this.campo));
//preenche o dataset
MySqlDataAdapter mda = new MySqlDataAdapter(sql);
mda.Fill(this.dadosTabela);
//carrega o datagrid com os dados do dataset
this.gridRegistrosDeletados.DataSource = this.dadosTabela.Tables[0];
this.gridRegistrosDeletados.Columns[0].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
}
Procedure:
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_select_lixeira`(
IN nome_tabela VARCHAR(255),
IN id_tabela VARCHAR(10),
IN campo_tabela VARCHAR(255)
)
DETERMINISTIC
BEGIN
DECLARE maxDigitos varchar(11);
DECLARE comandoSQL VARCHAR(255);
-- pega o tamanho do campo codigo e atribui o valor na variavel maxDigitos --
SET @comandoSQL = CONCAT("SELECT (" ,id_tabela, ") FROM ", nome_tabela," LIMIT 1 INTO @maxDigitos");
PREPARE consulta FROM @comandoSQL;
EXECUTE consulta;
deallocate prepare consulta;
SET @comandoSQL = CONCAT("SELECT LPAD(",id_tabela,", ",@maxDigitos,", 0) AS ",id_tabela,", ", campo_tabela," AS descricao FROM ", nome_tabela," WHERE status = 0");
PREPARE consulta FROM @comandoSQL;
EXECUTE consulta;
deallocate prepare consulta;
END
for q the command with lpad with maxdigits ?! I just passed the eye, but that seems to be it
– Rovann Linhalis