PREGUNTAS CONTESTADAS - C sharp

 Hay un total de 95 Preguntas.<<  >> 

    Pregunta:  64714 - C# CON PROCEDIMIENTO ORACLE CON PARAMETROS
Autor:  Luz Stella Cuervo Restrepo
Ayuda por favor:

Tengo el siguiente error y el procedimiento si me funciona en oracle.

ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'HONORARIONOC'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

Mi código en C# es:
public DataSet InformeMensual(string TipoHonorario)

{
string[] nomParam =
{
"In_TipoHonorario"
};

object[] vlrParam =
{
TipoHonorario
};
return getDataSet("HonorarioNoc_PKG.HonorarioNoc", nomParam, vlrParam);
}


public DataSet getDataset(string strSQL, string[] NombreParametros, object[] ValoresParametros)
{
DataSet ds = new DataSet();

try
{
if (strTipo_Conexion == TipoCnn.Oracle)
{
cmdo = cnno.CreateCommand();
cmdo.CommandText = strSQL;
cmdo.CommandType = CommandType.StoredProcedure;
this.setParametrosOracle(cmdo, getParamertosOracle(NombreParametros, ValoresParametros));
OracleDataAdapter da = new OracleDataAdapter(cmdo);
da.Fill(ds);
}
else
{
cmd = cnn.CreateCommand();
cmd.CommandText = strSQL;
cmd.CommandTimeout = 99999999;
cmd.CommandType = CommandType.StoredProcedure;
this.setParametros(cmd, getParamertos(NombreParametros, ValoresParametros));
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
}

return ds;
}
catch (Exception ex)
{
EscribirError(ex.ToString());
return (null);
}
}


private OracleParameter[] getParamertosOracle(string[] NombreParametros, object[] ValoresParametros)
{
OracleParameter[] arrParametros = new OracleParameter[NombreParametros.Length];

for (int ic = 0; ic <= NombreParametros.Length - 1; ic++)
{
OracleParameter Parametro = new OracleParameter();
Parametro.ParameterName = NombreParametros[ic];
Parametro.Value = ValoresParametros[ic];
arrParametros[ic] = Parametro;
Parametro = null;
}
return arrParametros;
}


private void setParametrosOracle(OracleCommand setCmd, OracleParameter[] setParameter)
{
if (setParameter != null)
{
for (int ic = 0; ic <= setParameter.Length - 1; ic++)
{
setCmd.Parameters.Add(setParameter[ic]);
}

}

}

EL PROCEDIMIENTO EN ORACLE ES:

CREATE OR REPLACE PACKAGE Body ADMSALUD.HonorarioNoc_PKG AS
TYPE mes_arr IS TABLE OF VARchar2(10)
INDEX BY BINARY_INTEGER;
TYPE NOrden_arr IS TABLE OF VARCHAR2(10)
INDEX BY BINARY_INTEGER;
TYPE FecCirugia_arr IS TABLE OF date
INDEX BY BINARY_INTEGER;
TYPE HoraCirugia_arr IS TABLE OF VARCHAR2(5)
INDEX BY BINARY_INTEGER;
TYPE IdPaciente_arr IS TABLE OF VARCHAR2(13)
INDEX BY BINARY_INTEGER;
TYPE Paciente_arr IS TABLE OF VARCHAR2(83)
INDEX BY BINARY_INTEGER;
TYPE IdCirugia_arr IS TABLE OF VARCHAR2(13)
INDEX BY BINARY_INTEGER;
TYPE Cirujano_arr IS TABLE OF VARCHAR2(83)
INDEX BY BINARY_INTEGER;
TYPE CodPresta_arr IS TABLE OF VARCHAR2(8)
INDEX BY BINARY_INTEGER;
TYPE NPrestacion_arr IS TABLE OF VARCHAR2(255)
INDEX BY BINARY_INTEGER;
TYPE PHonorario_arr IS TABLE OF VARCHAR2(7)
INDEX BY BINARY_INTEGER;
TYPE Monto_arr IS TABLE OF NUMBER(11,2)
INDEX BY BINARY_INTEGER;
TYPE Sociedad_arr IS TABLE OF VARCHAR2(4)
INDEX BY BINARY_INTEGER;
TYPE HoraIni_arr IS TABLE OF VARCHAR2(5)
INDEX BY BINARY_INTEGER;
TYPE HoraFin_arr IS TABLE OF VARCHAR2(2)
INDEX BY BINARY_INTEGER;
TYPE HoraCompFin_arr IS TABLE OF VARCHAR2(5)
INDEX BY BINARY_INTEGER;
TYPE Servicio_arr IS TABLE OF VARCHAR2(8)
INDEX BY BINARY_INTEGER;

PROCEDURE HonorarioNoc(
in_tipohonorario IN VARCHAR2,
in_fechaini IN VARCHAR2,
in_fechafin IN VARCHAR2,
mes OUT mes_arr,
norden OUT norden_arr,
feccirugia OUT feccirugia_arr,
horacirugia OUT horacirugia_arr,
idpaciente OUT idpaciente_arr,
paciente OUT paciente_arr,
idcirugia OUT idcirugia_arr,
cirujano OUT cirujano_arr,
codpresta OUT codpresta_arr,
nprestacion OUT nprestacion_arr,
phonorario OUT phonorario_arr,
monto OUT monto_arr,
sociedad OUT sociedad_arr,
horaini OUT horaini_arr,
horafin OUT horafin_arr,
horacompfin OUT horacompfin_arr,
servicio OUT servicio_arr,
srv_message OUT VARCHAR2
)
AS
srv_fetchstatus NUMBER (1);
srv_totalrows NUMBER (8);
srv_rowcount NUMBER (8);

CURSOR regrecursor
IS
SELECT nombremes (EXTRACT (MONTH FROM a.fecqrf)) AS mes,
a.ordnumero AS norden, a.fecqrf AS feccirugia,
a.horqrf AS horacirugia, e.pac_pac_rut AS idpaciente,
RTRIM (e.pac_pac_apellpater)
|| ' '
|| RTRIM (e.pac_pac_apellmater)
|| ' '
|| RTRIM (e.pac_pac_nombre) AS paciente,
b.anesid AS idcirugia,
RTRIM (f.ser_pro_apellpater)
|| ' '
|| RTRIM (f.ser_pro_apellmater)
|| ' '
|| RTRIM (f.ser_pro_nombres) AS cirujano,
c.pre_pre_codigo AS codpresta,
h.pre_pre_descripcio AS nprestacion,
c.porhonpor AS phonorario, c.ate_pre_montopagar AS monto,
c.soccod AS sociedad, d.horaini AS horaini,
SUBSTR (d.horafin, 1, 2) AS horafin,
d.horafin AS horacompfin, a.ser_obj_codigo AS servicio
FROM tabprgqrf a,
tabprdrel b,
tabprdreldet c,
taborddetcir d,
pac_paciente e,
ser_profesiona f,
pre_prestacion h,
ate_prestacion k
WHERE a.ordnumero = b.ordnumero
AND a.ordnumero = c.ordnumero
AND b.ordnumero = k.ordnumero
AND b.pre_pre_codigo = k.ate_pre_codigo
AND c.cnpqrgcod = in_tipohonorario
AND b.pre_pre_codigo = c.pre_pre_codigo
AND a.ordnumero = d.ordnumero
AND a.pac_pac_numero = e.pac_pac_numero
AND b.ser_pro_rut = f.ser_pro_rut
AND h.pre_pre_codigo = c.pre_pre_codigo
AND TRUNC (a.fecqrf) BETWEEN TO_DATE (in_fechaini, 'yyyy/mm/dd')
AND TO_DATE (in_fechafin, 'yyyy/mm/dd')
AND ( d.horaini BETWEEN ('19:00') AND ('23:59')
OR d.horaini BETWEEN ('00:00') AND ('05:59')
)
AND ( d.horafin BETWEEN ('19:00') AND ('23:59')
OR d.horafin BETWEEN ('00:00') AND ('05:59')
);
BEGIN
srv_totalrows := TO_NUMBER (RTRIM (srv_message));
srv_rowcount := 0;
srv_fetchstatus := 0;
srv_message := '1000000';

/*-----------------------------------------------------------------*/
/*------------------------ Begin User Code ------------------------*/
/*-----------------------------------------------------------------*/
BEGIN
IF NOT regrecursor%ISOPEN
THEN
OPEN regrecursor;
END IF;



LOOP

FETCH regrecursor
INTO mes (srv_rowcount + 1),
norden (srv_rowcount + 1),
feccirugia (srv_rowcount + 1),
horacirugia (srv_rowcount + 1),
idpaciente (srv_rowcount + 1),
paciente (srv_rowcount + 1),
idcirugia (srv_rowcount + 1),
cirujano (srv_rowcount + 1),
codpresta (srv_rowcount + 1),
nprestacion (srv_rowcount + 1),
phonorario (srv_rowcount + 1),
monto (srv_rowcount + 1),
sociedad (srv_rowcount + 1),
horaini (srv_rowcount + 1),
horafin (srv_rowcount + 1),
horacompfin (srv_rowcount + 1),
servicio (srv_rowcount + 1);



exit when regrecursor%notfound;

/* IF regrecursor%NOTFOUND
THEN
CLOSE regrecursor;

EXIT;
END IF;*/

srv_rowcount := srv_rowcount + 1;
srv_fetchstatus := 1;
END LOOP;

IF regrecursor%ISOPEN
THEN
CLOSE regrecursor;
END IF;

IF srv_rowcount > 0
THEN
srv_message :=
SUBSTR (srv_message, 1, 6) || '1'
|| SUBSTR (srv_message, 8);
END IF;
EXCEPTION
WHEN OTHERS
THEN
srv_message :=
SUBSTR (srv_message, 1, 1)
|| '38000'
|| srv_fetchstatus
|| 'Se produjo un ERROR';
END;

/*------------------------- End User Code -------------------------*/
/*-----------------------------------------------------------------*/
<>
NULL;


END HonorarioNoc;
end HonorarioNoc_PKG;
/
  Respuesta:  Luis Raul Barron Barraza
Te faltan parametros en la llamada del paquete:

string[] nomParam =
{
"In_TipoHonorario",
"In_fechaini",
"In_fechafin"
...
};

object[] vlrParam =
{
TipoHonorario,
valor_fechaini,
valor_fechafin
...
};

Debes tener cuidado con los valores del tipo OUT, ademas en tu codigo, haces un get, sin antes hacer el set correspondiente para los parametros.
De ser posible, trata a cada parametro por separado a la hora de hacer el set o el get, esto te dara un mejor control y podras mandar o recibir el tipo correcto de valor por ejemplo, varchar, int, float, etc.

Saludos!!!

    Pregunta:  64808 - VARIABLES DE SESSION EN C#
Autor:  Frank Sanchez
estoy trabajando precisamente en c# y tengo una web que funciona bien per la modificacion que se me ha solicitado es: que se un segundo usuario quiere entrar con la misma session en otro navegador no lo permita, ejemplo entro con mic ontraseña y pass y estoy usando firefox y si intento entrar despues con internet explore (ojo no he cerrado la session anterio) que no me deje entrar porque ya estoy una vez con calma pero sin serenidad les digo ayuda
  Respuesta:  Ulises Méndez
Hace algunos años yo hice algo parecido a lo que necesitas, faltaran algunos detalles por verificar pero creo que te serviria. Mandame un correo a [email protected] y te paso lo que tengo para que lo revises estoy seguro que te serivira. Lo pondria todo aca pero casi son las 2:30 de la mañana aca en mexico y tengo un ch... de sueño jeje

Saludos :P

    Pregunta:  64988 - C# EJECUTABLE DESDE UN PENDRIVE
Autor:  fpeg
Buenos dias, quisiera saber si es posible llevar mi C# a un pendrive y ejecutarlo en otros PCs sin necesidad de hacer ninguna instalacion.

Muchas gracias
  Respuesta:  felipe peg
Me respondo a mi mismo porque ya encontre la respuesta y puede interesar a otras personas:

un editor C# portable se puede encontrar en:

http://www.sharpdevelop.com/OpenSource/SD/Default.aspx

http://portableapps.com/node/6010

Un saludo a todos

    Pregunta:  65154 - C#; 3RA FORMA SE VA ATRÁS DE TODAS LAS VENTANAS
Autor:  Oswaldo B
¿Hola que tal?

Soy nuevo en la programación, y sí necesito ayuda.

Estoy programando en Visual C# y tengo 3 formas

- Form A (padre)
- Form B (hijo)
- Form C (nieto(?))

Desde A puedo abrir B, y desde B puedo abrir C.
Sucede que cuando estando en A, abro B, trabajo en ella y cierro B, A se mantiene al frente al cerrar, pero si abro B, y desde B abro C, A se va hasta atras de todas las ventanas maximizadas (B, C, carpetas del explorer de windows, navegadores de internet, el mismo visual C#).

Desde C puede o no puede volver a B, pero aun sea una u otra, A siempre se va hasta atrás.

Mi duda es ¿si existe alguna propiedad en A que permita mantenerse en donde se encuentra sin tener que poner un bringtofront() a las mas de 20 formas C que manejo?

Gracias.
  Respuesta:  Alejandro
Hola que tal Oswaldo B,

Puedes intentarlo de la siguiente manera:
A es padre y mandarías a llamar B

B formaB = new B();

formaB.ShowDialog(this);

De esta manera entrará en un estado "Modal" hasta que termines de usar B.

De esta manera empiezas a heredar ciertas propiedades, así mismo puedes aplicarla con tu forma C.

Espero que te haya servido. Saludos!

    Pregunta:  65387 - DONDE SE ALMACENAN LOS ARCHIVOS TEMPORALMENTE
Autor:  Luis Ulloa
Hola, me gustaria saber donde se almacenan los archivos cuando se intenta quemarlos, adjuntarlos al correo o al intentar comprimirlos, y si supieran como obtener la ruta de destino mejor, gracias!!
  Respuesta:  Danae Skalari
D:\Documents and Settings\MarianoConfiguración local\Archivos temporales de Internet

    Pregunta:  65597 - CREAR CODIGO DE BARRAS EN C SHARP
Autor:  cesar floriano armanza
quisiera que me ayuden estoy haciendo un programa con codigo de barras y quiero saber como convertir datos a codigo de barras en c sharp gracias
  Respuesta:  Cristian Marucci
Buenos días César,
Qué código de barras vas a usar? Los típicos de los lineas son los EAN, el 128 y el Codabar, pero hay otros. Dependiendo de cuál necesitás hay componentes que podés usar. Avisame y te digo.
Saludos!

Ing. Cristian D. Marucci
Axioma - Soluciones Informáticas Concretas
https://www.facebook.com/AxiomaSoluciones

    Pregunta:  65785 - MOVER UN LABEL EN C#
Autor:  Joel Heredia
Hola soy nuevo programando en c#, recientemente estoy haciendo una aplicación para realizar el movimiento de un label usando hilos (threads), creo el label y todo va bien hasta que creo el metodo de mover la imagen, para que se ejecute en el hilo, todo va bien entra correctamente a la función (lo revise paso a paso para ver si entraba y cambiaba los valores, cosa la cual hace), pero la imagen no se mueve, esperaba que alguien pudiese ayudarme, de antemano muchas gracias.
  Respuesta:  engell mejia
si a lo que te refieres es a cambiar la posición del label en tiempo de ejecución prueba con lo siguiente:

label1.Location = new System.Drawing.Point(coordenada_X, coordenada_Y);

si estas trabajando con hilos necesitas utilizar delegados para habilitar llamadas asincronas para cada propiedad del label para que este pueda ser accedido de manera segura desde el hilo.

ejemplo:

public void nueva_posicion(Control label1)
{
if (label1.InvokeRequired)
{
SetValueDelegate delegado = new SetValueDelegate(nueva_posicion);
label1.Invoke(delegado, new object[] { label1 });
}
else
label1.Location = new System.Drawing.Point(coordenada_X, coordenada_Y);
}

ahora dentro de tu funcion ("la que ejecutas desde el nuevo hilo"), pon lo siguiente:

nueva_posicion( label1 );

NOTA: declara las variables "coordenada_X" , "coordenada_Y" de forma global y modifica sus valores a los que tu desees antes de llamar a la función nueva_posicion( );, para q sean estos los que se tomen en cuenta a la hora de reubicar el label.

Saludos...

    Pregunta:  65829 - ¿CÓMO ORDENAR UN TLIST?
Autor:  Victor j. Garijo
Buenos días!
Yo tengo una variable de tipo TList <PersonasDeContacto> llamada listaDePersonasDeContacto, y ella tengo cargadaas a las personas de contacto que de mi base de datos cumplen na condición. Pues yo quiero saber cómo puedo ordenar el contenido de la TList listaDePersonasDeContacto para que el orden sea por el primer apellido.
Creo que es con el método Sort pero no me funciona bien.
Gracias.
  Respuesta:  William Brito Brito
if (año_de_la_pregunta > 2008) {

using System.Linq;

var lista_ordenada = lista.OrderBy(p => p.Apellido).ToList();
}

    Pregunta:  66190 - ORDENAR UN DATA GRID VIEW C#
Autor:  Felipe Roman
lo que pasa es que tengo este codigo
this.datagridview1.Sort(this.data gridview.Columns[0], ListSortDirection.Ascending);
y lo que me haces es ordenarla de la siguiente manera
1,10,11,113,2,21,22,23,etc...
mi pregunta es como hacer para que se ordene
1,2,10,11,21,22,23,113,etc...

Ademas de esto quisiera saber si es posible meter el data gridview en una lista ordenada
  Respuesta:  Rafael Yzarra
Muy sencillo:

Define el grupo de valores como números (a través de un [foreach], instrucción [for(int i=0; ...] o de otra forma que permita transformar cada valor en un int (por ejemplo, [int.parse(...)], y, al ejecutar la instrucción, te lo ordena de la manera adecuada...

Espero te sea útil lo recomendado...

    Pregunta:  66286 - OLEDB Y EXCEL
Autor:  Jonathan
Hola que tal, espero me puedan ayudar con mi problema la verdad es que ya llevo varios dias tratando de solucionarlo y no lo logro.
Tengo un proyecto de C# en visual studio 2010 con el cual agrego un dato a una celda de excel, al hacer esto se carga otro form en donde esta un datagrid que desplegara una lista afectada por el dato anterior. El problema es que no se actualizan los datos en el gridview, cuando abro el archivo de excel lo estan pero en mi programa no. Como puedo solucionar esto??

Agrego mi codigo

Para el form1

using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace Programa_7
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string cad_cnx = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:UsersLaptopDocuments6 SemestreControl NumericoPosibles programasBase_Programa_7.xlsx;Extended Properties=""Excel 8.0;HDR=NO;IMEX=0;""");
OleDbConnection Cnx = new OleDbConnection(cad_cnx);

try
{
Cnx.Open();
}

catch
{
MessageBox.Show("Imposible conectar");
}

OleDbCommand Cmd = new OleDbCommand();
Cmd.Connection = Cnx;
OleDbTransaction Trans = Cnx.BeginTransaction();
Cmd.Transaction = Trans;

try
{
string consulta = "UPDATE [Hoja2$] SET Dato = @valor";
OleDbParameter ptr = new OleDbParameter("@valor", textBox1.Text);
Cmd.CommandText = consulta;
Cmd.Parameters.Add(ptr);
Cmd.ExecuteNonQuery();

Trans.Commit();
}

catch
{
Trans.Rollback();
}

finally
{
Cnx.Close();
}

Form2 frm2 = new Form2();
frm2.Show();
}
}
}

Y este es el form 2 que me esta causando problemas

using System;

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace Programa_7
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
string cad_cnx = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:UsersLaptopDocuments6 SemestreControl NumericoPosibles programasBase_Programa_7.xlsx;Extended Properties=""Excel 8.0;HDR=NO;IMEX=0;""");
OleDbConnection Cnx = new OleDbConnection(cad_cnx);

try
{
Cnx.Open();
}

catch
{
MessageBox.Show("Imposible conectar");
}

OleDbDataAdapter DtA = new OleDbDataAdapter();
OleDbCommand Cmd = new OleDbCommand();
Cmd.Connection = Cnx;
DataSet DtSet = new DataSet();

try
{
string consulta = "select * from [Hoja1$]";
DtA = new OleDbDataAdapter(consulta, cad_cnx);
DtA.Fill(DtSet);
dataGridView1.DataSource = DtSet.Tables[0];
}

finally
{
Cnx.Close();
}
}

private void button2_Click(object sender, EventArgs e)
{
}
}
}

Espero su respuesta y muchas gracias por el tiempo que se toman en leer esto.
  Respuesta:  Rafael Yzarra
La solución se resumen en que, antes de abrir el formulario que contiene el Grid:
- Debes de crear un método que cree un grupo de registros (Data Table, por ejemplo) en los cuales realizarás una consulta de los datos existentes actualmente en la tabla de la Base de Datos u otro instrumento en donde se aloje la información.

- Tomar este contenedor de registros, llenar el DataGridView y con un poquito de suerte, se actualizará sin problemas el contendido del Grid obtenido del archivo de Excel.

Espero te sea de utilidad...

|<  <<  1 2 3 4 5 6 7 8 9 10  >>  >|