Usando mi Macbook Blanco Intel dual core 1.83Ghz, Ubuntu 10.10, Eclipse 3.5.2 y openGL (lenguaje C++):
- Instalar el plugin para eclipse de C/C++
- Instalar los paquetes freeglut3 y freeglut3-dev desde el repositorio
- Crear un proyecto nuevo
- En propiedades del proyecto -> C/C++ Build -> Settings -> GCC C++ Linker -> Libraries hay que añadir GLU y glut.
miércoles, 2 de marzo de 2011
miércoles, 19 de enero de 2011
VISUAL BASIC 6: Trabajar con Strings
Function Len (s as string) as integer
----> Devuelve la longitud del string
Function Mid (s as string, posicionInicio as integer [, longitud as integer]) as string
----> Devuelve una subcadena
Function Left (s as string, longitud as integer) as string
----> Devuelve la subcadena empezando por la izquierda de longitud especificada
Function Right (s as string, longitud as integer) as string
----> Devuelve la subcadena empezando por la derecha de longitud especificada
Function Ucase (s as string) as string
----> Devuelve una cadena en mayúsculas
Function Lcase (s as string) as string
----> Devuelve una cadena en minúsculas
Function Instr ([inicio as integer,] s1 as string, s2 as string)
----> Devuelve la posición de s2 en s1, 0 si no existe.
Function InstrRev (s1 as string, s2 as string [,inicio as integer] )
----> Devuelve la posición de s2 en s1, 0 si no existe, empezando por el final.
Sub Replace (s1 as string, s2 as string, s3 as string)
----> Reemplaza en s1 todas las ocurrencias de s2 por s3.
Function StrReverse (s as string) as string
----> Devuelve s al revés.
Function LTrim(s as string) as string
----> Devuelve s sin los espacios del principio.
Function RTrim(s as string) as string
----> Devuelve s sin los espacios del final.
Function Trim(s as string) as string
----> Devuelve s sin los espacios del final y del principio.
Function asc(s as string) as integer
----> Devuelve el valor ascii del primer carácter de s.
Function Chr (i as integer) as char
----> Devuelve el carácter que corresponde a un valor ascii.
----> Devuelve la longitud del string
Function Mid (s as string, posicionInicio as integer [, longitud as integer]) as string
----> Devuelve una subcadena
Function Left (s as string, longitud as integer) as string
----> Devuelve la subcadena empezando por la izquierda de longitud especificada
Function Right (s as string, longitud as integer) as string
----> Devuelve la subcadena empezando por la derecha de longitud especificada
Function Ucase (s as string) as string
----> Devuelve una cadena en mayúsculas
Function Lcase (s as string) as string
----> Devuelve una cadena en minúsculas
Function Instr ([inicio as integer,] s1 as string, s2 as string)
----> Devuelve la posición de s2 en s1, 0 si no existe.
Function InstrRev (s1 as string, s2 as string [,inicio as integer] )
----> Devuelve la posición de s2 en s1, 0 si no existe, empezando por el final.
Sub Replace (s1 as string, s2 as string, s3 as string)
----> Reemplaza en s1 todas las ocurrencias de s2 por s3.
Function StrReverse (s as string) as string
----> Devuelve s al revés.
Function LTrim(s as string) as string
----> Devuelve s sin los espacios del principio.
Function RTrim(s as string) as string
----> Devuelve s sin los espacios del final.
Function Trim(s as string) as string
----> Devuelve s sin los espacios del final y del principio.
Function asc(s as string) as integer
----> Devuelve el valor ascii del primer carácter de s.
Function Chr (i as integer) as char
----> Devuelve el carácter que corresponde a un valor ascii.
jueves, 28 de octubre de 2010
MYSQL: Modificar el tipo de datos de un campo
ALTER TABLE tabla
CHANGE COLUMN nombre_columna nombre_nuevo_columna tipo_datos atributos;
CHANGE COLUMN nombre_columna nombre_nuevo_columna tipo_datos atributos;
jueves, 14 de octubre de 2010
VISUAL BASIC 6: Leer de un archivo Excel 2003
Primero añadimos la referencia al Microsoft Excel 11.0 Object Library en Proyecto -> Referencias.
A continuación con el siguiente código abrimos la ruta a un fichero excel y leemos o escribimos en él con:
'Variable de tipo Aplicación de Excel
Dim objExcel As Excel.Application
'Una variable de tipo Libro de Excel
Dim xLibro As Excel.Workbook
Dim Col As Integer, Fila As Integer
'creamos un nuevo objeto excel
Set objExcel = New Excel.Application
'Usamos el método open para abrir el archivo que está en el directorio del programa llamado archivo.xls
Set xLibro = objExcel.Workbooks.Open(Path)
'Hacemos referencia a la Hoja
Dim i As Integer
Fila = 5
Col = 3
MsgBox xLibro.Sheets("Hoja1").Cells(Fila, Col)
xLibro.Close (True)
A continuación con el siguiente código abrimos la ruta a un fichero excel y leemos o escribimos en él con:
'Variable de tipo Aplicación de Excel
Dim objExcel As Excel.Application
'Una variable de tipo Libro de Excel
Dim xLibro As Excel.Workbook
Dim Col As Integer, Fila As Integer
'creamos un nuevo objeto excel
Set objExcel = New Excel.Application
'Usamos el método open para abrir el archivo que está en el directorio del programa llamado archivo.xls
Set xLibro = objExcel.Workbooks.Open(Path)
'Hacemos referencia a la Hoja
Dim i As Integer
Fila = 5
Col = 3
MsgBox xLibro.Sheets("Hoja1").Cells(Fila, Col)
xLibro.Close (True)
VISUAL BASIC 6: interfaz para elegir un archivo.
En nuestro proyecto Visual Basic 6 debemos añadir en Project -> Components el Microsoft Common Dialog Control 6.0 que nos permitirá abrir diálogos para elegir archivos. Veremos que aparece un botón nuevo en nuestra barra de componentes y arrastramos uno hasta nuestro form. El nombre por defecto es CommonDialog1.
Una vez añadido, el siguiente código nos abre una ventana para seleccionar un archivo con un filtro determinado:
'Añadir un filtro al dialog de elegir archivo
Private Sub AddFilter(ByVal dlg As CommonDialog, ByVal _
filter_title As String, ByVal filter_value As String)
Dim txt As String
txt = dlg.Filter
If Len(txt) > 0 Then txt = txt & "|"
txt = txt & filter_title & " (" & filter_value & ")|" & _
filter_value
dlg.Filter = txt
End Sub
Después, asociamos a un evento el siguiente código:
AddFilter CommonDialog1, "Excel files", "*.xls"
CommonDialog1.ShowOpen
Path = CommonDialog1.FileName
En la variable path tendremos la ruta al archivo.
Una vez añadido, el siguiente código nos abre una ventana para seleccionar un archivo con un filtro determinado:
'Añadir un filtro al dialog de elegir archivo
Private Sub AddFilter(ByVal dlg As CommonDialog, ByVal _
filter_title As String, ByVal filter_value As String)
Dim txt As String
txt = dlg.Filter
If Len(txt) > 0 Then txt = txt & "|"
txt = txt & filter_title & " (" & filter_value & ")|" & _
filter_value
dlg.Filter = txt
End Sub
Después, asociamos a un evento el siguiente código:
AddFilter CommonDialog1, "Excel files", "*.xls"
CommonDialog1.ShowOpen
Path = CommonDialog1.FileName
En la variable path tendremos la ruta al archivo.
Etiquetas:
common dialog,
seleccionar archivo,
visual basic
lunes, 27 de septiembre de 2010
MS SQL 2005: Crear un disparador (TRIGGER) sobre una vista (VIEW) que mande un e-mail al DBA
Supongamos que queremos que nuestro gestor de bases de datos nos avise cuando se modifiquen ciertos datos. En este caso concreto, quiero recibir un email a mi cuenta cuando los datos de una tabla no concuerden con los datos de otra (es decir, que la cantidad de un artículo que hay en una tabla sea diferente a la cantidad de ese mismo artículo en otra tabla). Parece lioso, pero se ve rápido con un ejemplo:
TABLA datos_almacen
Codigo_articulo varchar(16)
Cantidad decimal(12,3)
TABLA datos_almacen_2
Codigo_articulo varchar(16)
Cantidad decimal(12,3)
Entonces, si la cantidad del mismo artículo es diferente para las dos tablas, quiero que me avise. Supongamos que tengo la siguiente vista que muestra todos los artículos con diferencias:
CREATE VIEW mi_vista AS
SELECT *
FROM datos_almacen a inner join datos_almacen_2 b
on a.codigo_articulo = b.codigo_articulo
and a.cantidad <> b.cantidad
Correcto, esta vista muestra las diferencias (recuerda que estamos suponiendo que ambas tablas tienen los mismos códigos de artículo, si en uno hubiese más que en otro habría que hacer un JOIN lateral). Ahora el trigger para que salte cuando aparezca alguna diferencia:
TABLA datos_almacen
Codigo_articulo varchar(16)
Cantidad decimal(12,3)
TABLA datos_almacen_2
Codigo_articulo varchar(16)
Cantidad decimal(12,3)
Entonces, si la cantidad del mismo artículo es diferente para las dos tablas, quiero que me avise. Supongamos que tengo la siguiente vista que muestra todos los artículos con diferencias:
CREATE VIEW mi_vista AS
SELECT *
FROM datos_almacen a inner join datos_almacen_2 b
on a.codigo_articulo = b.codigo_articulo
and a.cantidad <> b.cantidad
Correcto, esta vista muestra las diferencias (recuerda que estamos suponiendo que ambas tablas tienen los mismos códigos de artículo, si en uno hubiese más que en otro habría que hacer un JOIN lateral). Ahora el trigger para que salte cuando aparezca alguna diferencia:
MS SQL 2005: Crear una vista
Lo que hace una vista es devolver el resultado de una consulta de selección como si se tratase de un select, pero de forma que podemos impedir al usuario el acceso a las tablas sobre las que se ejecuta la consulta.
Un ejemplo:
CREATE VIEW mi_vista AS
select *
from mi_tabla
Ahora podemos quitarle permisos a un usuario sobre la tabla 'mi_tabla' pero darle permisos sobre la vista 'mi_vista' y el usuario podría consultar los datos de la tabla (los que nosotros, DBAs, queramos, jeje) sin tener acceso directo a la misma.
Un ejemplo:
CREATE VIEW mi_vista AS
select *
from mi_tabla
Ahora podemos quitarle permisos a un usuario sobre la tabla 'mi_tabla' pero darle permisos sobre la vista 'mi_vista' y el usuario podría consultar los datos de la tabla (los que nosotros, DBAs, queramos, jeje) sin tener acceso directo a la misma.
Suscribirse a:
Entradas (Atom)