Cómo implementar consultas de múltiples condiciones conectándose a la base de datos mysql en C#
Permítanme mostrarles una consulta un poco más compleja que diseñé
Mire la imagen de arriba, nombré el control detrás de la etiqueta en la primera columna como normal, como el cuadro de texto. detrás de la fábrica de planes está "Planning Factory t", Exapt se llama "Planning Factory c" y hay un cuadro de lista oculto detrás del cuadro de lista, llamado "Planning Factory l".
¿Planeando una fábrica? El nombre en sí es un campo contenido en la tabla que estoy consultando.
Al utilizar dicha interfaz, quiero completar algunas consultas complejas: señale el pequeño botón de icono en el cuadro de texto, aparecerá una herramienta y se pueden ingresar múltiples condiciones. Las condiciones se pueden establecer como. condiciones difusas (* reemplaza la parte no reconocida), también se pueden establecer como condición de veto.
Seleccione Exapt para negar todas las condiciones establecidas; haga clic en el botón Ejecutar para establecer condiciones condicionalmente y no para establecer condiciones incondicionalmente.
Así que no puedo implementar este tipo de cosas una por una a través del software. Solo puedo escribir un archivo de clase:
public?class?conditionset
{<. /p>
p>
public?void?load_condit(Panel?p)
{
foreach?(Control?ctl?in?p.Controls)
{
if?(ctl?is?SkinTextBox)
{
SkinTextBox?sktxt?=?(SkinTextBox)p.Controles [ctl.Name];
ListBox?list?=?(ListBox)p.Controls[sktxt.Name.Substring(0,?sktxt.Name.Length?-?1)? "];
sktxt.IconClick?+=?(Object?sen,?EventArgs?ed)? =>
{
ctl.condition?toolform ?=?new?ctl .condition();
if?(list.Items.Count?>?0)
{
sktxt.Text? =?" ... ";
sktxt.ReadOnly?=?true?ReadOnly?=?true;
}
foreach(var?sm? in?list.Items)
{
toolform.dv.Rows.Add(sm.ToString());
}
toolform.Show() ;
toolform.cleari?+=?(Object?send,?EventArgs?er)? => { sktxt.Text?=?"" ; false; }; p>
toolform.subm?+=?(Object?send,?EventArgs?er)?=>
{
list.Items. Clear(); p>
foreach?(DataGridViewRow?dvr?in?toolform.dv.Rows)
{
if?(Convert.ToString (dvr. Celdas[0].Valor ?! =?"")
{
list.Items.Add(Convert.ToString (dvr.Cells[0].Value));
}
}}
sktxt.Text?=?" .";
sktxt.ReadOnly?=?true;
};
};
}
}
}
}
public?string?condit(Panel?p)
{
string?master_condition?=?"" ;
foreach?( Control?ctl?in? p.Controls)
{
// Recorrer las condiciones de búsqueda en el panel
#region?
string?condition?=? "" )
if?(ctl?is?SkinTextBox)
{
//Combinación de condiciones de cuadro de texto
#region
SkinTextBox?sktxt?=?(SkinTextBox)p.Controls[ctl.Name];
string?ziduan_name?=?sktxt.Name.Substring(0 ,?sktxt.Name.Length?-?1);
SkinCheckBox?skck?=?(SkinCheckBox)p.Controls[ctl.Name.Substring(0,?ctl.Name.Length?-? 1)? +?" c"];
ListBox?(ListBox)p.Controls[ctl.Name.Substring(0,?ctl.Name.Length?-?1)?1)? ?" l"];
si?(sktxt.Text! =?"")
{
si?(sktxt.Text?==? "" .")
{
string?blur_str?=?"" ,?blur?=?"" )
foreach?(var?itm ?in?list.Items)
{
if?(itm.ToString().Contains("*"))
{
si?(skck.Checked?==?true)
{
¿desenfoque?+=?y "?+?ziduan_name?+?"" ?no?me gusta ?+?itm.ToString().Replace("*", ?")?%")?+?"'" )
}
else
{
¿desenfoque?+=?"o?"?+?ziduan_name?+?" ??me gusta?'"?+?itm.ToString().Replace("*",?" )?%")?+?ziduanname?+?me gusta'" ;
}
}
else
{
blur_str?+=?+?Convert.ToString(itm)?+?"',";
}
}
string?blur_sql?=?(blur?==?"")" ? :?blur.Substring(4,?blur.Length?-?4).Trim();
string?in_condition? =?"" ,?like_condition?=?"" ;
if?(skck.Checked?==?true)
{
en_condición?= ?ziduan_name?+?"" ;
si?no está entre ellos? ";
¿como_condición=?";
}
else
{
en_condición?= ?ziduan_name?+?" ?¿Estás ahí?";
like_condition?=?"?o?";
}
cadena?contains_sql?= ? (blur_str?==?"")" ? :?en_condición?+?"" ("?+?blur_str.Substring(0,?blur_str.Length?-?1)?+?")" ;
condición?=?contiene_sql?+?blur_sql;
si?(blur_sql! =?"" ? &&
;?contiene_sql! =?"")
{
condición?=?contiene_sql?+?like_condition?+?blur_sql;
}
else
{
condición?=?contiene_sql?+? blur_sql;
}
}
else
{
si?(!sktxt.Text.Contains("*"))
{
si? (skck.Checked?==?true)
{
condición?=?ziduan_name?+?" <>'"?+?sktxt.Text?+ ?"'"
}
otro
{
¿condición?=?ziduan_name?+?" ='"?+ ?sktxt.Text?+?"'" )
}
}
else
{
if?(skck.Checked?==?true)
{
condición?=?ziduan_name?+?"?Dislike''"?+?sktxt.Text.Replace ( "*", ?"")?+?me gusta?"'" ;
}
otra
{
condición? =?ziduan_name?+?Me gusta'"?+?sktxt.Text.Replace("*", ?"")?+?"'" )
}
}
}
}
#endregion
}
si?(ctl es?SkinDateTimePicker)
p>{
//Combinación condicional de fecha
# región
if?(ctl.Name.Substring(ctl.Name.Length? - ?=?" t")
{
SkinDateTimePicker?skdate_sta?=?(SkinDateTimePicker)p.Controls[ctl.Name];
SkinDateTimePicker? skdate_end ?=?(SkinDateTimePicker)p.Controls[ctl.Name?+?" t"];
if?(skdate_sta.text?! =?"")
{
if?(skdate_end.text?==?"")
{
condición?=?skdate_sta.Name?+?" ='"? + ?skdate_sta.text?+?"'" ;
}
else
{
condición?=?skdate_sta.Name ? +?" >='"?+?skdate_sta.Text?+?and?"?+?skdate_sta.Name?+?" <='"?+?skdate_end.text?+?"' )
}
}
}
}
#endregion
}
master_condition?+=?(condición?==?"")" ? :?"
("? +?condición?+?") ?y?";
#endregion?//Atravesar el panel para encontrar la condición
}
cadena? condition_sql?=?(master_condition?==?"")" ? :?master_condition.Substring(0,?master_condition.Length?-?5);
return?condition_sql;
}
}
La herramienta lo reemplaza con el formulario:
público?partial?clase?condición?:?Form
{
público?condición()
{
InitializeComponent();
}
evento público ?EventHandler?submit;
público?eventHandler?cleari;
privado?void?submit_Click(object?sender,?EventArgs?e)
{ p>
p>
subm(remitente,?e);
this.Dispose();
}
privado?Dispose( );
dv.Rows.Clear();
cleari(remitente,?e);
}
} p>
}
Cuando realizamos una multicondicional es lo mismo que empalmar una condición