Hola, tengo un problema que no puedo solucionar. Me arroja error al tratar de pasar un registro como parámetro a un método.
Error:
CitarError 1 Incoherencia de accesibilidad: el tipo de parámetro 'registro' es menos accesible que el método 'método'
Código donde me arroja el error:
public partial class Form1 : Form
{
struct registro
{
public String nombre;
public String apellido;
public String dias;
public String horario;
}
public void ObtenerAlumno(registro alumno, int d)
{
char hora = ObtenerHorario(alumno.horario, alumno.dias, d);
String horario = HoraACadena(hora);
richTextBox1.Text = alumno.nombre + " " + alumno.apellido + " ";
}
public Form1()
{
InitializeComponent();
registro alumno;
int nd = 0;
ObtenerAlumno(alumno, nd);
}
Eso se debe a que la estructura es privada y el método es público. Verás el propósito de hacer público un método es hacerlo accesible fuera de la clase en que es declarado. Si tu método es llamado desde otra clase entonces debes hacer pública también la estructura. Si tu método no va ser llamado desde otra clase, entonces declara el método cómo privado.
Dinos si con esto se resolvió tu problema.
Primero que todo, me parece que tienes que inicializar
registro alumno
O sea, algo como:
registro alumno = new registro();
sino, te va a saltar un error también.
Ahora, en cuanto al error al que te refieres, te explico. Como el método ObtenerAlumno es public, tu lo puedes llamar desde fuera de la clase del formulario. En este caso, como el
struct registro
debes hacerlo público, public struct registro
o puedes también hacer el método ObtenerAlumno que sea private
Lo puedes hacer de acuerdo a tus necesidades. Lo que pasa es que si el método es público y el struct no lo es, como se supone que vas a pasarle un "registro" al método desde afuera de la clase si no puedes acceder al struct para definirlo porque es privado.
Espero haberte ayudado.
Saludos
Ahora me arroja error al ejecutar, pero no al cambiar.
CitarSintaxis incorrecta cerca de ','.
SqlCommand Comando = new SqlCommand(string.Format("Select (Nombre, Apellido, Dias, Horario) from chicos where Dias like '%{0}%'", nd.ToString()), db);
SqlDataReader reader = Comando.ExecuteReader();
bump
Creo que ese error se debe a que la cadena que devuelve nd.ToString() debería estar encerrada entre comillas. Es decir algo así:
SqlCommand Comando = new SqlCommand(string.Format("Select (Nombre, Apellido, Dias, Horario) from chicos where Dias like '%{0}%'", "\"" + nd.ToString() + "\""), db);
SqlDataReader reader = Comando.ExecuteReader();
No, sigue el mismo error :S
Intenta lo mismo con las comillas sencillas, es decir ponerlas de la forma \'
Nop, sigue el mismo problema :(
Bueno, busqué la solución por mi mismo.
La coloco aquí por si otro tiene el mismo problema. El problema es la consulta al select, le saque los paréntesis de lo que quería obtener, y se solucionó.
La consulta quedaría así:
SqlCommand Comando = new SqlCommand(string.Format("Select Nombre, Apellido, Dias, Horario from chicos where Dias like '%{0}%'", snd), db);