Jump to content

Argel

Warianos
  • Posts

    14
  • Joined

  • Last visited

Everything posted by Argel

  1. en este link el socio lee un excel a través de oledb http://codehill.com/2009/01/reading-excel-...es-using-oledb/ si te fijas en la segunda funcion del articulo, la lectura del excel es un vil select por lo tanto podrias poner como condicion que algunas columnas no estuvieran vacias y sería, de todas formas creo que si te aparecen valores vacios al usar oledb igual no te los pesca.
  2. java.lang.ClassNotFoundException: com.mysql.jdbc.Driver este error indica que no pudo hallar el driver jdbc de mysql, este problema generalmente se da debido a que el driver no se encuentra en el servidor de aplicaciones. por lo tanto este último no es capaz de cargarlo. Lo que tendrías que hacer es copiar el jar correspondiente a la carpeta donde se realiza el despliegue de la aplicación, eso depende de que servidor de apps uses (Tomcat, Jboss, weblogic, etc.). Con un poco más de info sobre el contexto de tu app podriamos ayudarte.
  3. Puedes ver la pag 12 meses 12 katas, el mes de enero publicaron el string calculator, ese hace justo lo que necesitas y en el repositorio de codigo fuente del proyecto se encuentran codigos en multiples lenguages...Ademas de varios videos de como desarrollan cada kata los que saen.
  4. El DataReader es un objeto que recorre solo hacia adelante y fila a fila un conjunto de resultados de una llamada SQL, manteniendo la conexion correspondiente tomada mientras opera con cada fila. El problema que tienes es eso, no puedes devolver un DataReader si cierras la conexion, esta debe quedar abierta. Por lo tanto para estos casos creo yo es mas reconmendable utilizar un DataSet ya que te permite operar sobre los datos de manera offline
  5. Si le pones array_forms.GetUpperBounds(0) Obtendrias el tamaño de la dimension 0 de la matriz, le cambias el parametro y obtienes el tamaño de la otra dimension
  6. Te recomiendo que busques informacion sobre WPF y el patron MVVM, google creo es tu mejor amigo en estos casos, tambien tienes paginas como codeproject, csharpcorner, lostechies y para recursos importantes hay unas VAN's en español en la comunidad altnethispano.org muy muy buenas sobre el tema
  7. No he trabajado nunka con gringos ni argentinos pero no sera mucho 100 personas?. Yo creo que como en casi todo lo referente a informatica la respuesta seria depende, de que depende, del tamaño del proyecto, de las lukas de la empresa del nivel tecnico de los encargados, del tiempo...etc...
  8. Sep, es que el metodo SuperSalir toma 2 parametros el Form y el FormClosingEventArgs. My Mistake...
  9. El constructor vacío lo que va a hacer es crear una nueva instancia del objeto sin setear ninguno de los valores de los atributos, es decir, va a reservar un espacio en memoria para que tu objeto se almacene mientras lo utilices. Los constructores en general tienen como proposito crear una instancia de la clase (objeto) en memoria, para su uso. La diferencia entre uno con parametros y uno sin parametros son los valores que asignas u operaciones que podrias realizar al momento de crear una referencia en memoria de tu clase. Como concepto los constructores vacios vs los constructores con parametros no tienen que ver con herencia sino más bien con polimorfismo. La herencia en tu ejemplo aparece al utilizar el constructor de persona vs el constructor de estudiante y la relacion de herencia responde a la pregunta "es un(a)", es decir, Estudiante -> es una -> Persona Eso....espero ayudar de alguna forma
  10. un poco tarde la respuesta pero, bueno, por lo visto te faltaría cancelar el evento cerrar cuando la opcion es NO, me explico, el Evento FormClosing tiene como parametros el "FormClosingEventArgs e" este debe tener la propiedad e.cancel que debes setear en true para que el evento cerrar no gatille efectivamente el cierre del formulario. la clase la podrias dejar así public bool SuperSalir(Form Salida, FormClosingEventArgs ev){ bool retorno = false; DialogResult opcion; opcion = MessageBox.Show("Desea Salir de la Aplicación", //Pregunta "Salir de la aplicación", //Nombre formulario MessageBoxButtons.YesNo, //Opciones MessageBoxIcon.Question); if (opcion == DialogResult.Yes) //Toma de desiciones { Salida.Dispose(); retorno = true; } return retorno; } private void Formulario_FormClosing(object sender, FormClosingEventArgs e) { Salir objsalir = new Salir(); if ( !objsalir.SuperSalir(this) ) e.cancel = true; }
  11. Si la consulta no tiene errores puedes considerar como no exitoso un ResulSet vacío, es decir, no econtro ningun usuario con ese login o contraseña.... En resumen....si la consulta te devuelve valores, significa que existe un wn con ese usuario y contraseña, sino te devuelve valores entonces el wn no está en la base de datos lo cual puede haber sido por poner mal el nombre o la contraseña o simplemente porque no aplica pal sistema.
  12. Te dejo un script de un PA, que hice hace algunos añitos ya para SQL 2000, el cual está encargado de respaldar todas las bases de datos de un server X, creando respaldos completos, diferenciales y del registro de transacciones (log), ademas borraba los archivos de respaldo cada Y tiempo. Todo se configuraba en base a una tabla creada para este proposito. No he probado nada en 2008 pero me imagino que no debe cambiar tanto tanto la cosa... ALTER PROCEDURE BackupAllBasesDatos @Ruta VARCHAR(128), @Tipo VARCHAR(4) = 'FULL' --FULL / DIFF / LOG AS /* El Formato de los Archivos de Backup corresponde a NombreBD_Tipo_yyyymmdd_hhmmss.bu Ejemplo nombre Archivo: EMPRESA_FULL_20070913_130850.bu Ejemplo Ejecucion del Procedimiento: EXEC BackupAllBasesDatos 'C:\BACKUP\', 'FULL' */ SET NOCOUNT ON DECLARE @sql VARCHAR(1000) --Crea la Tabla BackupBaseDatos si es que no existe en la base de datos en uso. IF NOT EXISTS ( SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[BackupBaseDatos]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1 ) BEGIN CREATE TABLE BackupBaseDatos ( Nombre VARCHAR(128) PRIMARY KEY NONCLUSTERED, BackupFlagFull VARCHAR(1) NOT NULL CHECK (BackupFlagFull IN ('Y','N')), RetainPeriodNumberFull INT NOT NULL, RetainPeriodTypeFull VARCHAR(2) NOT NULL CHECK (RetainPeriodTypeFull IN ('mi', 'hh', 'dd', 'wk', 'mm')), BackupFlagDiff VARCHAR(1) NOT NULL CHECK (BackupFlagDiff IN ('Y','N')), RetainPeriodNumberDiff INT NOT NULL, RetainPeriodTypeDiff VARCHAR(2) NOT NULL CHECK (RetainPeriodTypeDiff IN ('mi', 'hh', 'dd', 'wk', 'mm')), BackupFlagLog VARCHAR(1) NOT NULL CHECK (BackupFlagLog IN ('Y','N')), RetainPeriodNumberLog INT NOT NULL, RetainPeriodTypeLog VARCHAR(2) NOT NULL CHECK (RetainPeriodTypeLog IN ('mi', 'hh', 'dd', 'wk', 'mm')) ) END --Obtengo todos los nombres correspondientes de todas las bases de datos del servidor. CREATE TABLE #DBNames ( ID INT IDENTITY(1,1), Nombre VARCHAR(128) NOT NULL, RetainPeriodNumber INT NULL, RetainPeriodType VARCHAR(2) NULL CHECK(RetainPeriodType IN ('mi', 'hh', 'dd', 'wk', 'mm')) ) INSERT #DBNames (Nombre) SELECT name FROM master..sysdatabases --Incluyo las bases de datos nuevas en la tabla de backups, por defecto no se realizan backups. INSERT BackupBaseDatos ( Nombre, BackupFlagFull, RetainPeriodNumberFull, RetainPeriodTypeFull, BackupFlagDiff, RetainPeriodNumberDiff, RetainPeriodTypeDiff, BackupFlagLog, RetainPeriodNumberLog, RetainPeriodTypeLog ) SELECT #DBNames.Nombre, 'N', 4, -- 4 Semanas para copias Full 'wk', 'N', 7, -- 7 Dias para copias Diff 'dd', 'N', 24, -- 24 horas para Logs 'hh' FROM #DBNames LEFT OUTER JOIN BackupBaseDatos ON BackupBaseDatos.Nombre = #DBNames.Nombre WHERE BackupBaseDatos.Nombre IS NULL AND LOWER(#DBNames.Nombre) <> 'tempdb' --Quito los backups para las bases de datos que no existen. DELETE BackupBaseDatos WHERE NOT EXISTS ( SELECT * FROM #DBNames WHERE #DBNames.Nombre = BackupBaseDatos.Nombre ) DELETE #DBNames --Chequeo cuales son los backups que existen. CREATE TABLE #ExistingBackups ( Nombre VARCHAR(128), ID INT IDENTITY(1,1) ) DECLARE @Nombre VARCHAR(128), @RetainPeriodNumber INT, @RetainPeriodType VARCHAR(2), @UltimoBackupAMantener VARCHAR(8), @ID INT, @MaxID INT INSERT #DBNames (Nombre, RetainPeriodNumber, RetainPeriodType) SELECT Nombre, CASE WHEN @Tipo = 'FULL' THEN RetainPeriodNumberFull ELSE CASE WHEN @Tipo = 'DIFF' THEN RetainPeriodNumberDiff ELSE RetainPeriodNumberLog END END, CASE WHEN @Tipo = 'FULL' THEN RetainPeriodTypeFull ELSE CASE WHEN @Tipo = 'DIFF' THEN RetainPeriodTypeDiff ELSE RetainPeriodTypeLog END END FROM BackupBaseDatos WHERE ( @Tipo = 'FULL' AND BackupFlagFull = 'Y') OR ( @Tipo = 'DIFF' AND BackupFlagDiff = 'Y') OR ( @Tipo = 'LOG' AND BackupFlagLog = 'Y') SELECT @MaxID = MAX(ID), @ID = 0 FROM #DBNames WHILE @ID < @MaxID BEGIN SELECT @ID = MIN(ID) FROM #DBNames WHERE ID > @ID SELECT @Nombre = Nombre, @RetainPeriodNumber = RetainPeriodNumber, @RetainPeriodType = RetainPeriodType FROM #DBNames WHERE ID = @ID DELETE #ExistingBackups SELECT @sql = 'dir /B ' + @Ruta SELECT @sql = @sql + '"' + @Nombre + '_' + @Tipo + '*.*"' INSERT #ExistingBackups EXEC master..xp_cmdshell @sql IF EXISTS ( SELECT * FROM #ExistingBackups WHERE Nombre Like '%File Not Found%' OR Nombre Like '%No Se Encuentra el archivo%' ) DELETE #ExistingBackups CREATE TABLE #UltimoBackupAMantener ( UltimoBackupAMantener VARCHAR(8) NOT NULL ) INSERT #UltimoBackupAMantener EXEC ('SELECT CONVERT(VARCHAR(8), GETDATE() - DATEADD(' + @RetainPeriodType + ', ' + @RetainPeriodNumber + ', ' + '''19000101''' + '), 112)') SELECT @UltimoBackupAMantener = UltimoBackUpAMantener FROM #UltimoBackupAMantener DELETE #ExistingBackups WHERE Nombre > @Nombre + '_' + @Tipo + '_' + @UltimoBackupAMantener DECLARE @eID INT, @eMaxID INT, @eName VARCHAR(128) SELECT @eID = 0, @eMaxID = COALESCE(MAX(ID),0) FROM #ExistingBackups WHILE @eID < @eMaxID BEGIN SELECT @eID = MIN(ID) FROM #ExistingBackups WHERE ID > @eID SELECT @eName = Nombre FROM #ExistingBackups WHERE ID = @eID SELECT @sql = 'del ' + @Ruta + '"' + @eName + '"' EXEC master..xp_cmdshell @sql, no_output END DELETE #ExistingBackups SELECT @sql = @Ruta + @Nombre + '_' + @Tipo + '_' + CONVERT(VARCHAR(8),GETDATE(),112) + '_' + REPLACE(CONVERT(VARCHAR(8),GETDATE(),108),':','') + '.bu' IF @Tipo = 'FULL' BACKUP DATABASE @Nombre TO DISK = @sql ELSE IF @Tipo = 'DIFF' BACKUP DATABASE @Nombre TO DISK = @sql WITH DIFFERENTIAL ELSE BACKUP LOG @Nombre TO DISK = @sql END El uso de toda esta paja molida, era si bien me acuerdo, de la siguiente forma: 1.- Ejecutas el PA inicialmente, con esto se crea la tabla "BackupBaseDatos" 2.- Dentro de los campos de la tabla se pueden setear los distintos tipos de respaldo permitidos para la bd (FULL, DIFF, LOG) y la duracion de los archivos fisicos en la carpeta de respaldos dada 3.- agregar como JOB's de SQL una llamada segun cada tipo de respaldo a utilizar, es decir si quieres respaldos completos diarios agregabas un job, que ejecutaba el procedimiento alamcenado como EXEC BackupAllBasesDatos 'C:\BACKUP\', 'FULL' con calendarizacion diaria.... NOTA: sobre como agregar el JOB al Agent del SQL 2008, mira por acá NOTA2: La teoría detras de toda la paja de los respaldos y tipos de respaldos acá
  13. Puedes subir una imagen mejor que no tengo el datamodeler (y cual seria? ERwin o TOAD)...con eso podria ayudar....
×
×
  • Create New...