Foro Oficial de C#

Buenas a todos, soy nuevo en este foro.
, he visto que ayudais mucho a la gente y eso es lo que realmente necesito porque si no voy a suspender programación...:( se me ha dado todo bien menos una cosa.. ahora os lo cuento.

Tengo un problema que no consigo solucionar, tengo que entregar un codigo en C# sobre una farmacia.

La farmacia tiene un almacen donde le introduzco los productos, puedo listar esos productos, puedo listar las ventas, compras y saldo, genero ficheros xml, y poder leer fichero de ejecucciones.

Hasta ahi todo correcto pero también necesito implementar la venta de esos productos, para los otros casos he seguido una pauta que dio la profesora pero la implementación no dio nada y no consigo sacarlo por más que lo intento.

Os dejo el codigo y incluso un .exe de lo que tengo hasta ahora, si me pudieseis ayudar con la implementación de la venta estaria bien, solo tengo que introducir el codigo del producto a comprar, la cantidad y si tiene receta o no ( lo de la receta tampoco importa mucho).


Aqui os dejo el link con todo el codigo que tengo.

http://www.filefactory.com/file/agd887h/n/Farmacia_zip

Gracias de antemanoo!!
 
hola Expertos.:) necesito su ayuda urgente
como parte del proyecto final de asignatura, tengo que presentar en C# la ejecucion del codigo en conjunto con Oracle Forms 10g. me explico:

necesito presentar en una sola pantalla, que me haga el prestamo de un libro, haciendo conexion con la base de datos donde tengo las tablas y el codigo.


gracias.
 
hola Expertos.:) necesito su ayuda urgente
como parte del proyecto final de asignatura, tengo que presentar en C# la ejecucion del codigo en conjunto con Oracle Forms 10g. me explico:

necesito presentar en una sola pantalla, que me haga el prestamo de un libro, haciendo conexion con la base de datos donde tengo las tablas y el codigo.


gracias.


bajate el Oracle .NET Provider ya con ello lo accederas normal a traves de DataSets, DataTables etc...


http://www.oracle.com/technology/tech/windows/odpnet/index.html
http://www.oracle.com/technology/software/tech/windows/odpnet/index.html

ejemplos:

http://www.oracle.com/technology/sample_code/tech/windows/odpnet/odpbasic.html
 
Pero no se supone que en el System.Data hay controladores para acceder bases de datos Oracle???

Por que hay que bajarse eso juank?
 
Pero no se supone que en el System.Data hay controladores para acceder bases de datos Oracle???

Por que hay que bajarse eso juank?


parta bajar la version mas actualizada :p

sin contar que puedes bajar otras heramientas que se integran con visual studio para poder hacer el diseño dela app y de la db desde visual studio.

Hay varias clases nuevas personalizadas para oracle , de ehcho es como tener un cliente oracle mas robusto lo quete facilitara trabajar con varios tipos de datos propios de la base de datos etc.
 
Ahh carajo... yo no sabia que eso lo actualizaban por fuera del framework... yo pense que como lo sacaban quedaba hasta el proximo framework... :S

Y lo actualizan son los de oracle?? xD
 
Eso esta bien, pero para un proyecto como este, no creo que sea necesario eso, creo que con el cliente de oracle que tiene el framework de .net es suficiente
 
hola


tengo una duda como puedo pasar el resultado de esta consulta
que seria TotalA a una variable en C#

sql = ("SELECT COUNT (vchMatricula) AS TotalA FROM tblAlumnos WHERE(vchGeneracion = '" + gen+ "') AND (chrClvCarrera = '" + car + "')");
 
pues, no se que base de datos estas utilizando, pero suponiendo que sea Sql Server, seria algo como asi.
Código:
//Declaramos la Conexion a la Base de Datos
      SqlConnection SqlCon = new SqlConnection();
      //Le asignamos la Cadena de Conexion necesaria para SQL Server
      SqlCon.ConnectionString = "Cadena de Conexion";
      //Si la Conexion no esta abierta (obvio que no) la Abrimos
      if (SqlCon.State != ConnectionState.Open)
        SqlCon.Open();
      //Creamos el Query
      string CadenaSql = "Comando Select que tienes";
      
      //Creo Un Command con la contula y la conexion
      SqlCommand comando = new SqlCommand(CadenaSql, SqlCon);
      //Creo un datareader para traer los datos de la base de datos
      SqlDataReader dr = comando.ExecuteReader();
      int TotalA = 0;
      //lo Abro, tambien podemos hacer la validacion para ver si trae datos con 
      //dr.HasRows, pero para mi como solo es un solo valor, creo que no es necesario
      if (dr.Read())
      {
        //Cuando leo el datareader me crea una coleccion 
        //y puedo llamar esos valores ya sea por el indice
        //o por el nombre de la columna
        //el Indice se refiera a un numero en base 0 correspondiente a 
        //la posicion de la columna en la consulta.
        TotalA = int.Parse(dr["Nombre columna"].ToString());
      }
      //Es importante cerrar el datareader y la conexion cuando ya no los necesitemos.
      dr.Close();
      SqlCon.Close();
Creo que eso te puede servir para lo que necesitas, creo que no debe dar errores, es que hace rato no utilizo conexiones asi a la base de datos, lo mejor de todo es hacer mapeo relacinal.


Te recomiendo que no utilices concatenaciones para pasar parametros a una consulta, lo mejor es utilizar los parametros propios de los conectores.
Código:
//Los parametros se identifican en las consultas por que tienen un simbolo,
//en Sql Server el identificador de Parametros es "@", MySql es "?"
SqlCommand cmd = new SqlCommand("consulta con @parametros", SqlCon);
//Cuando se ejecuta el query, la cadena es evaluada y reemplaza los parametros por su respectivo valor
      cmd.Parameters.AddWithValue("parametros", valor);
Esto se hace para evitar la Injeccion Sql, ya que los parametros propios de los conectores evitan que se escapen caracteres no validos, claro que ese es el primer filto


Espero haberte ayudado lili_capry.

Cualquier otra duda, no dudes :) en preguntarlo
 
Hola, me gustaría que pusieras, de ser posible, los cambios básicos en sintáxis para poder migrar de VB a C#... soy aun muy pequeño en el tema de programación pero pues vamos step by step no?...

venía usando VB pero me enamoré de la simplicidad de C#... no hay que conversar tanto como con VB... esa es la razón...

Gracias!
 
venía usando VB pero me enamoré de la simplicidad de C#... no hay que conversar tanto como con VB... esa es la razón...

Gracias!
si es por eso nada mas entonces te desenamoraras pronto... ya veras :p

Hola, me gustaría que pusieras, de ser posible, los cambios básicos en sintáxis para poder migrar de VB a C#... soy aun muy pequeño en el tema de programación pero pues vamos step by step no?...

no busques aprender un lenguaje partir de equivalencias...

mira esto te sera de utilidad a no ser de que seas malisimo con el ingles:

http://cid-6550f0e4af11f537.skydriv...gramming C|3 |52nd Edition, for VS .NET|6.pdf

http://cid-6550f0e4af11f537.skydriv...8 and the NET 3.5 Platform Fourth Edition.pdf


saludos.
 
Hola, me gustaría que pusieras, de ser posible, los cambios básicos en sintáxis para poder migrar de VB a C#... soy aun muy pequeño en el tema de programación pero pues vamos step by step no?...

venía usando VB pero me enamoré de la simplicidad de C#... no hay que conversar tanto como con VB... esa es la razón...

Gracias!
Un salto de un lenguaje a otro no es algo como dar "cambios basicos"... empezate a leer libros de c# con ejemplos, o tutoriales en internet. Pero asi como pasos a seguir no creo.
 
Ejercicios sin resolver

Mijo hay que hablar con argumentos, y con criterio propio para que no vuelva a hacer el ridiculo cuando hable de algo de lo que no tiene ni idea.

Hola que tal? mi nombre es martin y estoy aprendiendo a programar.. tengo un par de ejercicios que no los puedo resolver.. si son capces de ayudarme se lo agradesco.
Saludos. (LOS NECESITO URGENTE)

Ejercicio 1
Parte a)
Escriba una función llamada metEj1 que reciba 2 números enteros y devuelva la suma de los mismos.
Parte b)
Modifique la función de la Parte a) para que además de los dos números enteros, reciba un tercer parámetro llamado oper
(también un número entero) y que en base al valor de este tercer parámetro, el método suma los números (cuando oper
sea 1) o reste los números (cuando oper sea 2). En caso que oper no sea ni 1 ni 2, el método deberá devolver 0 (cero).
Parte c)
Modifique la función de la Parte b) para permitir sumar, restar, multiplicar y dividir (dependiendo del valor del parámetro
oper). Puede asumir que cuando oper vale 3 se debe multiplicar, y cuando vale 4 se deben dividir ambos números. Notar
que en este caso también deberá cambiar el tipo de retorno de la función (¿Por qué?).

Ejercicio 2
Escriba una función que dados dos números enteros devuelva true si ambos son positivos y false en caso contrario.

Ejercicio 3
Escriba una función que reciba tres parámetros enteros que representan los lados de un triángulo. El método deberá
identificar si el triángulo es equilátero, isósceles o escaleno y devolver un string indicándolo.

Ejercicio 4
Escriba una función que reciba un número entero (que suponemos entre 0 y 9) y un string con la representación escrita
de dicho número (por ejemplo: 1, “uno”). La función deberá devolver un booleano indicando si el texto se corresponde con
el número entero (por ejemplo, en el caso anterior devolverá true, pero en el caso 1, “hola” devolverá false).

Ejercicio 7
Realizar un programa en consola que calcule el factorial de un número entero, sabiendo que se le llama factorial de un
número al resultado de multiplicar ese número por todos los enteros anteriores hasta el 1. El signo de factorial es "!" por lo
que el factorial de 6 se escribe 6! y se calcula de la siguiente manera: 6! = 6*5*4*3*2*1 = 720. Tener presente que 0! = 1.

Ejercicio 8
Realizar en consola un programa que calcule la potencia de un número entero, recibiendo el número (llamado base) y el
exponente. Se debe controlar que el exponente sea distinto de 0, y en ese caso el resultado es 1. Es decir que cualquier
número elevado a las 0 tiene por resultado 1. Ejemplo: si el número base es 2 y el exponente es 3, entonces la potencia se
escribe 2
3 y se calcula de la siguiente manera: 2
3 = 2*2*2 = 8.

Ejercicio 11
Parte a)
Realizar un programa en consola que cargue un arreglo de enteros de tamaño 101 (las posiciones o índices deben ir desde el
0 hasta el 100) con valores 0, 10, 20, 30, ..., 900, 1000 en cada celda del mismo, de la siguiente manera:
0 10 20 ....................... 1000
posición 0 posición 1 posición 2 ........................ posición 100
Parte b)
Modificar el programa anterior para recorrer el arreglo mostrando los valores ingresados.
Parte c)
Modificar el programa anterior para recorrer el arreglo de manera de mostrar los valores ingresados pero en orden inverso.


Ejercicio 12

Se desea codificar un programa C# en consola que permita partir un arreglo en dos arreglos más pequeños de la
siguiente manera;
El largo del arreglo inicial debe ser par, ya que el largo de los dos arreglos resultantes será la mitad del largo
del arreglo inicial. Es decir que si el arreglo inicial tiene 8 elementos, entonces los dos arreglos resultantes tendrán 4
elementos cada uno.
El arreglo inicial será “partido” en dos arreglos en donde el primer arreglo resultante tendrá los elementos de
los índices pares del arreglo inicial, y el segundo arreglo resultante tendrá los elementos de los índices impares del
arreglo original. Es decir que si el arreglo original es [3,1,4,8,0,9,4,5] entonces el primer arreglo resultante será
[3,4,0,4] y el segundo será [1,8,9,5].
El largo del arreglo original debe ser definido por el usuario, debiendo aceptar sólo largos pares, situación
que debe ser controlada por el programa. Es decir que no se debe permitir ingresar un largo impar. Los elementos
del arreglo original también deben ser ingresados por el usuario (números enteros). Tanto el pedido del largo como
de los elementos debe ser hecho en un mismo método, fuera del Main.
La “partición” debe realizarse en otro método, por ejemplo llamado partir(...).
Debe existir también un método para mostrar arreglos de cualquier largo, el cual recibe un arreglo como
parámetro y lo muestra en la consola.
Por tanto, el método Main sólo debe tener las declaraciones necesarias y las llamadas a los métodos de carga,
de partición y de muestra de los arreglos resultantes.
 
Hola que tal? mi nombre es martin y estoy aprendiendo a programar.. tengo un par de ejercicios que no los puedo resolver.. si son capces de ayudarme se lo agradesco.
Saludos. (LOS NECESITO URGENTE)

Ejercicio 1
Parte a)
Escriba una función llamada metEj1 que reciba 2 números enteros y devuelva la suma de los mismos.
Parte b)
Modifique la función de la Parte a) para que además de los dos números enteros, reciba un tercer parámetro llamado oper
(también un número entero) y que en base al valor de este tercer parámetro, el método suma los números (cuando oper
sea 1) o reste los números (cuando oper sea 2). En caso que oper no sea ni 1 ni 2, el método deberá devolver 0 (cero).
Parte c)
Modifique la función de la Parte b) para permitir sumar, restar, multiplicar y dividir (dependiendo del valor del parámetro
oper). Puede asumir que cuando oper vale 3 se debe multiplicar, y cuando vale 4 se deben dividir ambos números. Notar
que en este caso también deberá cambiar el tipo de retorno de la función (¿Por qué?).

Ejercicio 2
Escriba una función que dados dos números enteros devuelva true si ambos son positivos y false en caso contrario.

Ejercicio 3
Escriba una función que reciba tres parámetros enteros que representan los lados de un triángulo. El método deberá
identificar si el triángulo es equilátero, isósceles o escaleno y devolver un string indicándolo.

Ejercicio 4
Escriba una función que reciba un número entero (que suponemos entre 0 y 9) y un string con la representación escrita
de dicho número (por ejemplo: 1, “uno”). La función deberá devolver un booleano indicando si el texto se corresponde con
el número entero (por ejemplo, en el caso anterior devolverá true, pero en el caso 1, “hola” devolverá false).

Ejercicio 7
Realizar un programa en consola que calcule el factorial de un número entero, sabiendo que se le llama factorial de un
número al resultado de multiplicar ese número por todos los enteros anteriores hasta el 1. El signo de factorial es "!" por lo
que el factorial de 6 se escribe 6! y se calcula de la siguiente manera: 6! = 6*5*4*3*2*1 = 720. Tener presente que 0! = 1.

Ejercicio 8
Realizar en consola un programa que calcule la potencia de un número entero, recibiendo el número (llamado base) y el
exponente. Se debe controlar que el exponente sea distinto de 0, y en ese caso el resultado es 1. Es decir que cualquier
número elevado a las 0 tiene por resultado 1. Ejemplo: si el número base es 2 y el exponente es 3, entonces la potencia se
escribe 2
3 y se calcula de la siguiente manera: 2
3 = 2*2*2 = 8.

Ejercicio 11
Parte a)
Realizar un programa en consola que cargue un arreglo de enteros de tamaño 101 (las posiciones o índices deben ir desde el
0 hasta el 100) con valores 0, 10, 20, 30, ..., 900, 1000 en cada celda del mismo, de la siguiente manera:
0 10 20 ....................... 1000
posición 0 posición 1 posición 2 ........................ posición 100
Parte b)
Modificar el programa anterior para recorrer el arreglo mostrando los valores ingresados.
Parte c)
Modificar el programa anterior para recorrer el arreglo de manera de mostrar los valores ingresados pero en orden inverso.


Ejercicio 12

Se desea codificar un programa C# en consola que permita partir un arreglo en dos arreglos más pequeños de la
siguiente manera;
El largo del arreglo inicial debe ser par, ya que el largo de los dos arreglos resultantes será la mitad del largo
del arreglo inicial. Es decir que si el arreglo inicial tiene 8 elementos, entonces los dos arreglos resultantes tendrán 4
elementos cada uno.
El arreglo inicial será “partido” en dos arreglos en donde el primer arreglo resultante tendrá los elementos de
los índices pares del arreglo inicial, y el segundo arreglo resultante tendrá los elementos de los índices impares del
arreglo original. Es decir que si el arreglo original es [3,1,4,8,0,9,4,5] entonces el primer arreglo resultante será
[3,4,0,4] y el segundo será [1,8,9,5].
El largo del arreglo original debe ser definido por el usuario, debiendo aceptar sólo largos pares, situación
que debe ser controlada por el programa. Es decir que no se debe permitir ingresar un largo impar. Los elementos
del arreglo original también deben ser ingresados por el usuario (números enteros). Tanto el pedido del largo como
de los elementos debe ser hecho en un mismo método, fuera del Main.
La “partición” debe realizarse en otro método, por ejemplo llamado partir(...).
Debe existir también un método para mostrar arreglos de cualquier largo, el cual recibe un arreglo como
parámetro y lo muestra en la consola.
Por tanto, el método Main sólo debe tener las declaraciones necesarias y las llamadas a los métodos de carga,
de partición y de muestra de los arreglos resultantes.


en mi opinion si estas aprendiendo lo ultimo que deberias hacer seria pedir ayuda para porblemas tan simples...
si te los hacen no aprenderas nada... trata de hacerlos por tu cuenta y conforme te encuentres con dudas ... publicalas... pero por demas esta decir que pedir que te hagan todo es un poco descarado.
 

Los últimos temas