Cuando se conecte a mysql y pretenda utilizar un procedimiento almacenado, debe pasar un especial Flag para MySQL a través del comando connect, de lo contrario no obtendrá los resultados devueltos, y dará lugar a este error:
Error 1312 (0A000): PROCEDURE x can't return a result set in the given context.
Para corregir esto, cambie su cadena de conexion, adicionando ",false,131072", o ",false,65536" en los últimos 2 campos en:
$this->con = mysql_connect(host,user,password,false,65536);
según la documentación de mysql, se debe activar CLIENT_MULTI_RESULTS, sin embargo, al activar CLIENT_MULTI_STATEMENTS automáticamente se activa el primero.
ver en php.net o php.net y en dev.mysql.com
miércoles, 27 de abril de 2011
lunes, 25 de abril de 2011
Crear backup automáticos de bases de datos MySQL
Tutorial: Crear backup automáticos de bases de datos MySQL
set FECHA=%date%
set FECHA=%FECHA:/=%
set FECHA=%FECHA: =%
set FECHA=%FECHA::=%
set FECHA=%FECHA:,=%
set FILE=C:\\Backups\\Backup_%FECHA%.sql
C:/mysql/bin/mysqldump.exe -h SERVER -uUSER -pPASSWORD -r %FILE% DBNAME
En la última linea ubicar la ruta a mysqldump.exe, el resto dejarlo tal cual reemplazando SERVER USER PASSWORD y DBNAME.
Funciona perfecto
Traido de techdays
set FECHA=%date%
set FECHA=%FECHA:/=%
set FECHA=%FECHA: =%
set FECHA=%FECHA::=%
set FECHA=%FECHA:,=%
set FILE=C:\\Backups\\Backup_%FECHA%.sql
C:/mysql/bin/mysqldump.exe -h SERVER -uUSER -pPASSWORD -r %FILE% DBNAME
En la última linea ubicar la ruta a mysqldump.exe, el resto dejarlo tal cual reemplazando SERVER USER PASSWORD y DBNAME.
Funciona perfecto
Traido de techdays
Etiquetas:
mysql
miércoles, 13 de abril de 2011
Error: 1045 Mysql Access denied for xxxx@xxxxxx using password: yes, (acceso remoto)
Bueno este error se presenta, bien por que el nombre de usuario esta mal escrito, o el password, pero también puede ser por resctricciones de acceso establecidas en la tabla user en la bd mysql, particularmente en el campo Host, en donde podemos establecer desde cual o cuales direcciones IP o nombres de maquina nos podemos conectar, principalmente este problema se presenta con el acceso a un servidor remoto, se puede consultar la documentación de este suceso, aqui
El script para mysql quedaría asi:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'david'@'192.58.197.5
' IDENTIFIED BY 'esparragos' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
De esta forma solo basta con acceder al servidor directamente y modificar los permisos, o consultar las IP y cambiar la mascara de la IP en nuestra maquina.
sds.
GRANT ALL PRIVILEGES ON db.* TO david@'192.58.197.0/255.255.255.0';
{acceso a david desde cualquier ip en el rango}
GRANT ALL PRIVILEGES ON db.* TO david@'192.58.197.5';
{acceso a david únicamente desde 192.58.197.5}
GRANT ALL PRIVILEGES ON db.* TO ''@%;
{acceso a cualquier persona desde cualquier lugar}
El script para mysql quedaría asi:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'david'@'192.58.197.5
' IDENTIFIED BY 'esparragos' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
De esta forma solo basta con acceder al servidor directamente y modificar los permisos, o consultar las IP y cambiar la mascara de la IP en nuestra maquina.
sds.
Etiquetas:
mysql
sábado, 2 de abril de 2011
Heredar permisos en subcarpetas (CHMOD)
Con ayuda de este sitio
me dí a la tarea de revisar un poco y esta linea me ha resuelto el problema de asignar los mismos permisos a la carpeta public y a todo su contenido, cabe recordar que en ubuntu server el super usuario se accede mediante sudo
sudo chown -R nombredepropietario.nombredegrupo /home/public/
saludos ... :)
me dí a la tarea de revisar un poco y esta linea me ha resuelto el problema de asignar los mismos permisos a la carpeta public y a todo su contenido, cabe recordar que en ubuntu server el super usuario se accede mediante sudo
sudo chown -R nombredepropietario.nombredegrupo /home/public/
saludos ... :)
Etiquetas:
chmod,
chown,
linux,
ubuntu server
jueves, 31 de marzo de 2011
Pasar array de PHP a JavaScript
Bueno primero que todo describiré un poco el entorno para entrar en materia,
Entorno
Entonces tenemos una página en php base.php en la cual mediante javascript, envío parametros por GET para abrir otra pagina resultado.php
El problema
Desde base.php, tengo un select múltiple así:
{script language="java script" src="...reporte.js"}{/script}...
...{span id="selMultiple"}Sitio: {/span}
{select multiple size=2 name="site[]" }
{option value="0"}[Todas]{/option}
{option value=B}B{/option}
{option value=J}J{/option}
{option value=V}V{/option}{/select}
La idea es realizar una selección múltiple desde la página base.php y a partir de ésta generar una consulta SQL que me permíta construir una clausula "IN", entonces tengo la función
{div}{input type="button" onClick="abre('$site');" value="Consultar"}{/div}
que envía los parámetros a...
{function abre(site){
url="resultado.php?site="+site+";
window.open(url,"Reporte","");
}
Aquí el problema, pues la selección múltiple de "selMultiple" crea en php un arreglo con los valores seleccionados, y no es posible pasar este arreglo "directamente" a javascript para enviarlo a resultado.php, entonces...
Mi Solución
Para realizar la consulta desde base.php y que la muestre...
Capturamos la variable con...
$site=$_GET['site'];
Luego creamos un string compatible con la sintaxis de SQL para la clausula "IN" así:
foreach ($site as $data){
$tmp.="'".$data."',";
}
$tmp=substr($tmp, 0, -1);
//resultado de $tmp para la selección de B y J será algo así 'B','J'
$sql="select * from tabla t where t.site in (".$tmp.")";
//resultado para $sql sería: "select * from tabla t where t.site in ('B','J')"
Con ésto queda lista la consulta para ver el reporte en base.php...
pero debo imprimirlo en resultado.php con Excel utilizando las etiquetas
header ("Content-type: application/x-msexcel");
$filename="Reporte.xls";
header("Content-Disposition: filename=\"$filename\";");
Entonces... lo fundamental... pasar la info del arreglo a la función de JavasCript abre()
para esto entonces utilizamos
$tmp=implode(":",$site);
//donde el resultado para $tmp será B:J
{?php
{div}{input type="button" onClick="abre('$tmp');" value="Consultar"}{/div}
?}
//donde el html quedará {div}{input type="button" onClick="abre('B:J');" value="Consultar"}{/div}
De esta forma los valores son pasados a la función... sin ningún problema, y solo restaría añadir en resultado.php
$site=$_GET['site'];
{?php
$site=explode(":",$site);
foreach ($site as $data)
{
$tmp.="'".$data."',";
}
$tmp=substr ($tmp, 0, -1);// quita la última "," para construir la sentencia adecuada
?}
//resultado de $tmp para la selección de B y J será algo así 'B','J'
$sql="select * from tabla t where t.site in (".$tmp.")";
//resultado para $sql sería: "select * from tabla t where t.site in ('B','J')"
Entorno
Entonces tenemos una página en php base.php en la cual mediante javascript, envío parametros por GET para abrir otra pagina resultado.php
El problema
Desde base.php, tengo un select múltiple así:
{script language="java script" src="...reporte.js"}{/script}...
...{span id="selMultiple"}Sitio: {/span}
{select multiple size=2 name="site[]" }
{option value="0"}[Todas]{/option}
{option value=B}B{/option}
{option value=J}J{/option}
{option value=V}V{/option}{/select}
La idea es realizar una selección múltiple desde la página base.php y a partir de ésta generar una consulta SQL que me permíta construir una clausula "IN", entonces tengo la función
{div}{input type="button" onClick="abre('$site');" value="Consultar"}{/div}
que envía los parámetros a...
{function abre(site){
url="resultado.php?site="+site+";
window.open(url,"Reporte","");
}
Aquí el problema, pues la selección múltiple de "selMultiple" crea en php un arreglo con los valores seleccionados, y no es posible pasar este arreglo "directamente" a javascript para enviarlo a resultado.php, entonces...
Mi Solución
Para realizar la consulta desde base.php y que la muestre...
Capturamos la variable con...
$site=$_GET['site'];
Luego creamos un string compatible con la sintaxis de SQL para la clausula "IN" así:
foreach ($site as $data){
$tmp.="'".$data."',";
}
$tmp=substr($tmp, 0, -1);
//resultado de $tmp para la selección de B y J será algo así 'B','J'
$sql="select * from tabla t where t.site in (".$tmp.")";
//resultado para $sql sería: "select * from tabla t where t.site in ('B','J')"
Con ésto queda lista la consulta para ver el reporte en base.php...
pero debo imprimirlo en resultado.php con Excel utilizando las etiquetas
header ("Content-type: application/x-msexcel");
$filename="Reporte.xls";
header("Content-Disposition: filename=\"$filename\";");
Entonces... lo fundamental... pasar la info del arreglo a la función de JavasCript abre()
para esto entonces utilizamos
$tmp=implode(":",$site);
//donde el resultado para $tmp será B:J
{?php
{div}{input type="button" onClick="abre('$tmp');" value="Consultar"}{/div}
?}
//donde el html quedará {div}{input type="button" onClick="abre('B:J');" value="Consultar"}{/div}
De esta forma los valores son pasados a la función... sin ningún problema, y solo restaría añadir en resultado.php
$site=$_GET['site'];
{?php
$site=explode(":",$site);
foreach ($site as $data)
{
$tmp.="'".$data."',";
}
$tmp=substr ($tmp, 0, -1);// quita la última "," para construir la sentencia adecuada
?}
//resultado de $tmp para la selección de B y J será algo así 'B','J'
$sql="select * from tabla t where t.site in (".$tmp.")";
//resultado para $sql sería: "select * from tabla t where t.site in ('B','J')"
Etiquetas:
Javascript,
PHP,
Programación
jueves, 12 de agosto de 2010
Funciones de la calculadora de ArcGis
Bueno... esto es algo que tenía guardadito y no lo había utilizado pero resulta bastante útil... conocerlo... estas funciones no muestran su documentación en ArcGis... y por tanto resulta algo fastidioso de desenmarañar, pues acá esta el resultado para las siguientes funciones:
Ejemplo del uso de las funciones, aveces necesitamos separar alguna cadema de caracteres que tenemos en un campo desde ArcGis, pues bien para evitarnos pasar nuesta tabla a (dbase) .dbf con la consecuente perdida de acentos debido al encoding, y con el problema que tenemos al abrir esta nueva tabla desde el Excel con sus limitaciones en cuanto a la carga de registros, vamos a realizarlo utilizando las funciones básicas de la calculadora de ArcGis:
pues bien:
si tenemos un campo
y queremos pasarlo a:
podemos usar la siguiente formula de la calculadora del ArcGis:
desde el campo Nombre1 calculamos:
Trim(Mid(NombreC, 1,InStr(1,NombreC, " ")-1))
para obtener:
Luego desde el campo Nombre2 calculamos:
Trim(Mid(NombreC, InStr( InStr(1,NombreC, " ")+1,NombreC, " "),InStr(InStr(1,NombreC, " ")+1,NombreC, " ")-1)
para obtener:
y así se continúa hasta completar, este ejemplo se muestra a modo de ilustración comenten si les da resultado y Bienvenidos todos los aportes.
Saludos
TIPO | FUNCIÓN | DESCRIPCIÓN | SINTAXIS | ARGUMENTO |
NUMÉRICA | Abs | Devuelve un valor del mismo tipo que el que se pasó como parámetro y que especifica el valor absoluto de un número. | Abs(número) | Número Puede ser cualquier expresión numérica válida. Si número contiene Null, la función devolverá Null; si es una variable no inicializada, devolverá cero. |
Atn | Devuelve el arcotangente de un número en un tipo Double. | Atn(número) | Número Es de tipo Double o cualquier expresión numérica válida. | |
Cos | Devuelve el coseno de un ángulo en tipo Double. | Cos(número) | Número Es de tipo Double o cualquier expresión numérica válida que expresa un ángulo en radianes. | |
Exp | Devuelve un tipo Double que especifica e (la base de los logaritmos naturales) elevado a una potencia. | Exp(número) | Número Es de tipo Double o cualquier expresión numérica válida. | |
Fix | Devuelve la parte entera de un número.(A diferencia del INT, la función FIX() devuelve el primer entero negativo mayor o igual a número en el caso en que el argumento sea negativo) | Fix(número) | Número Es de tipo Double o cualquier expresión numérica válida. Si número contiene Null, la función devolverá Null. | |
Int | Devuelve la parte entera de un número.(A diferencia del FIX, la función INT() devuelve el primer entero negativo menor o igual a número en el caso en que el argumento sea negativo) | Int(número) | Número Es de tipo Double o cualquier expresión numérica válida. Si número contiene Null, la función devolverá Null. | |
Log | Devuelve el logaritmo natural de un número en tipo Double. | Log(número) | Número Es de tipo Double o cualquier expresión numérica válida mayor que cero |
TIPO | FUNCIÓN | DESCRIPCIÓN | SINTAXIS | ARGUMENTO |
NUMBER | Sin | Devuelve el seno de un ángulo en tipo Double. | Sin(número) | Número Es de tipo Double o cualquier expresión numérica válida que expresa un ángulo en radianes. |
Sqr | Devuelve la raíz cuadrada de un número en tipo Double. | Sqr(número) | Número Es de tipo Double o cualquier expresión numérica válida mayor o igual a cero. | |
Tan | Devuelve la tangente de un ángulo en tipo Double. | Tan(número) | Número Es de tipo Double o cualquier expresión numérica válida que expresa un ángulo en radianes. | |
STRING | Asc | Devuelve el código de carácter correspondiente a la primera letra de una cadena, en tipo Integer que representa. NOTA: Cambia de String a ASCII | Asc(cadena) | Cadena Debe ser una expresión de cadena válida. Si cadena no contiene caracteres, se produce un error en tiempo de ejecución |
Chr | Devuelve un tipo String que contiene el carácter asociado con el código de carácter especificado. NOTA: Cambia de ASCII a String | Chr(códigocar) | Códigocar Es un tipo Long que identifica a un carácter. | |
Int | Devuelve un tipo Variant (String) que contiene una expresión formateada de acuerdo a las instrucciones contenidas en una expresión de formato. | Format(expresión[, formato[, primerdíadesemana[, primerdíadeaño]]]) | Expresión: Requerido. Cualquier expresión válida. Formato: Opcional. Una expresión de formato definida por el usuario o con nombre válido. Primerdíadesemana: Opcional. Una constante que especifica el primer día de la semana. Primerdíadeaño: Opcional. Una constante que especifica la primera semana del año. |
TIPO | FUNCIÓN | DESCRIPCIÓN | SINTAXIS | ARGUMENTO |
STRING | InStr | Devuelve un tipo Variant (Long) que especifica la posición de la primera aparición de una cadena en otra. | InStr([start, ]string1, string2[, compare]) | Start: Opcional. Expresión numérica que establece la posición inicial para cada búsqueda. Si se omite, la búsqueda comienza en la posición del primer carácter. Si inicio contiene un valor Null, se produce un error. El argumento inicio se requiere si se especifica compare. String1: Requerido. Expresión de cadena en la que se busca. String2: Requerido. Expresión de cadena buscada. Compare: Opcional. Especifica el tipo de comparación de cadena. Si compare es Null, ocurre un error. Si se omite compare, el valor Option Compare determina el tipo de comparación. Especifica un LCID (LocaleID) válido para usar reglas específicas de configuración regional en la comparación. |
LCase | Devuelve un tipo String que se ha convertido a minúsculas. | LCase(cadena) | Cadena Es cualquier expresión de cadena válida. Si string contiene Null, se devuelve Null. | |
Left | Devuelve un tipo Variant (String) que contiene un número especificado de caracteres del lado izquierdo de una cadena. | Left(string, length) | String: Requerido. Expresión de cadena de la cual se devuelven los caracteres que están más a la izquierda. Si string contiene Null, se devuelve Null. Length: Requerido, un tipo Variant (Long). Expresión numérica que indica cuántos caracteres se van a devolver. Si es 0, devuelve una cadena de longitud cero (""). Si es mayor o igual al número de caracteres en string, se devuelve la cadena entera. | |
Len | Devuelve un tipo Long que contiene el número de caracteres en una cadena o el número de bytes necesarios para almacenar una variable. | Len(cadena | nombrevar) | Cadena: Cualquier expresión de cadena válida. Si la cadena contiene Null, se devuelve Null. Nombrevar: Cualquier nombre de variable válido. Si nombrevar contiene Null, se devuelve Null. Si nombrevar es un tipo Variant, Len actúa igual que con un tipo String y siempre devuelve el número de caracteres que contiene. |
TIPO | FUNCIÓN | DESCRIPCIÓN | SINTAXIS | ARGUMENTO | |||||||||||||||||||||||||||||||
STRING | LTrim | Devuelve un tipo Variant (String) que contiene una copia de una cadena determinada sin espacios a la izquierda (LTrim). | LTrim(cadena) | Cadena El argumento cadena obligatorio es cualquier expresión de cadena válida. Si cadena contiene Null, se devuelve Null. | |||||||||||||||||||||||||||||||
Mid | Devuelve un tipo Variant (String) que contiene un número especificado de caracteres de una cadena. | Mid(string, start[, length]) | String: Requerido. Expresión de cadena de la cual se devuelven los caracteres. Si el string contiene Null, se devuelve Null. Start: Requerido; un tipo Long. Posición de carácter en string en la cual comienza la parte que se quiere tomar. Si start es mayor que el número de caracteres en la string, Mid devuelve una cadena de longitud cero (""). Length: Requerido; un tipo Variant (Long). Número de caracteres que se van a devolver. Si se omite o en el texto hay menos de length caracteres (incluyendo el carácter de start), se devuelven todos los caracteres desde la posición de start hasta el final de la cadena. | ||||||||||||||||||||||||||||||||
QBColor | Devuelve un tipo Long que representa el código de color RGB correspondiente al número de color especificado. | QBColor(color) | Color El argumento color toma los siguientes valores
|
TIPO | FUNCIÓN | DESCRIPCIÓN | SINTAXIS | ARGUMENTO |
STRING | Right | Devuelve un tipo Variant (String) que contiene un número especificado de caracteres del lado derecho de una cadena. | Right(string, lenght) | String: Requerido. Expresión de cadena desde la cual se devuelven los caracteres que están más a la derecha. Si string contiene Null, se devuelve Null. Lenght: Requerido, un tipo Variant (Long). Expresión numérica que indica cuántos caracteres se van a devolver. Si es 0, se devuelve una cadena de longitud cero (""). Si es mayor o igual al número de caracteres en string, se devuelve la cadena completa. |
RTrim | Devuelve un tipo Variant (String) que contiene una copia de una cadena determinada sin espacios a la derecha (RTrim). | RTrim(cadena) | Cadena El argumento cadena obligatorio es cualquier expresión de cadena válida. Si cadena contiene Null, se devuelve Null. | |
Space | Devuelve un tipo Variant (String) que consiste en un número especificado de espacios. | Space(número) | Número Es el número de espacios que se desea incluir en la cadena. |
TIPO | FUNCIÓN | DESCRIPCIÓN | SINTAXIS | ARGUMENTO | |||||||||||||||||||||||||||
STRING | StrConv | Devuelve un tipo Variant (String) que se convierte como se especifica. | StrConv(string, conversion, LCID) | String: Requerido. Expresión de cadena que se va a convertir. Conversión: Requerido. Un tipo Integer. La suma de los valores que especifica el tipo de conversión que se va a realizar. LCID: Opcional. La LocaleID, si es diferente de la LocaleID del sistema. (La LocaleID del sistema es la predeterminada.). Los valores del argumento conversion son:
|
TIPO | FUNCIÓN | DESCRIPCIÓN | SINTAXIS | ARGUMENTO |
STRING | String | Devuelve un tipo Variant (String) que contiene una cadena de caracteres que se repite de la longitud especificada. | String(number, character) | Number: Requerido; un tipo Long. Longitud de la cadena devuelta. Si número contiene Null, se devuelve Null. Carácter: Requerido; un tipo Variant. Código de carácter que especifica el carácter o la expresión de cadena cuyo primer carácter se utiliza para construir la cadena devuelta. Si character contiene Null, se devuelve Null. |
Trim | Devuelve un tipo Variant (String) que contiene una copia de una cadena determinada sin espacios ni a la derecha ni a la izquierda (Trim). | Trim(cadena) | Cadena El argumento cadena obligatorio es cualquier expresión de cadena válida. Si cadena contiene Null, se devuelve Null. | |
UCase | Devuelve un tipo Variant (String) que contiene una cadena especificada que se ha convertido a mayúsculas. | UCase(cadena) | Cadena Es cualquier expresión de cadena válida. Si cadena contiene Null, se devuelve Null. | |
DATE | Date | Devuelve un tipo Variant (Date) que contiene la fecha actual del sistema. | Date | - |
DateAdd | Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado. | DateAdd(intervalo, número, fecha) | Intervalo: Requerido. Expresión de cadena que contiene el intervalo de tiempo que se desea agregar. Número: Requerido. Expresión numérica con el número de intervalos que se desea agregar. Puede ser positiva (para obtener fechas futuras) o negativa (para obtener fechas pasadas). Fecha: Requerido. Valor de tipo Variant (Date) o literal que representa la fecha en la que se agregó el intervalo. |
TIPO | FUNCIÓN | DESCRIPCIÓN | SINTAXIS | ARGUMENTO | ||||||||||||||||||||||
DATE | DateAdd | DateAdd(intervalo, número, fecha) | El argumento intervalo tiene los siguientes valores:
| |||||||||||||||||||||||
DateDiff | Devuelve un valor de tipo Variant (Long) que especifica el número de intervalos de tiempo entre dos fechas determinadas. | DateDiff(intervalo, fecha1, fecha2[, primerdíasemana[, primerasemanaaño]]) | Intervalo: Requerido. Expresión de cadena con el intervalo de tiempo utilizado para calcular la diferencia entre fecha1 y fecha2. Fecha1, fecha2: Requerido; Variant (Date). Las dos fechas que se van a utilizar en el cálculo. Primerdíasemana: Opcional. Constante que especifica el primer día de la semana. Si no se especifica, se asume que es el domingo. Primerasemanaaño: Opcional. Constante, que especifica la primera semana del año. Si no se especifica, se asume que es aquélla en la que se encuentre el 1 de enero. |
TIPO | FUNCIÓN | DESCRIPCIÓN | SINTAXIS | ARGUMENTO | ||||||||||||||||||||||
DATE | DateDiff | DateDiff(intervalo, fecha1, fecha2[, primerdíasemana[, primerasemanaaño]]) | El argumento intervalo tiene los siguientes valores:
| |||||||||||||||||||||||
DatePart | Devuelve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada. | DatePart(intervalo, fecha[,primerdíasemana[, primerasemanaaño]]) | Intervalo: Requerido. Expresión de cadena con el intervalo de tiempo que desea devolver. Fecha: Requerido. Tipo de valor Variant (Date) que se desea evaluar. Primerdíasemana: Opcional. Una constante que especifica el primer día de la semana. Si no se especifica, se asume que es el domingo. Primerasemanaaño: Opcional. Una constante que especifica la primera semana del año. Si no se especifica, se asume que es aquélla en la que se encuentre el 1 de enero. |
TIPO | FUNCIÓN | DESCRIPCIÓN | SINTAXIS | ARGUMENTO | ||||||||||||||||||||||
DATE | DatePart | DatePart(intervalo, fecha[,primerdíasemana[, primerasemanaaño]]) | El argumento intervalo tiene los siguientes valores:
| |||||||||||||||||||||||
Now | Devuelve un valor de tipo Variant (Date) que especifica la fecha y hora actuales de acuerdo con la configuración de la fecha y la hora del sistema de su equipo. | Now | - |
Ejemplo del uso de las funciones, aveces necesitamos separar alguna cadema de caracteres que tenemos en un campo desde ArcGis, pues bien para evitarnos pasar nuesta tabla a (dbase) .dbf con la consecuente perdida de acentos debido al encoding, y con el problema que tenemos al abrir esta nueva tabla desde el Excel con sus limitaciones en cuanto a la carga de registros, vamos a realizarlo utilizando las funciones básicas de la calculadora de ArcGis:
pues bien:
si tenemos un campo
NombreC |
Pedro Plinio Perez Plazas |
Nombre1 | Nombre2 | Apellido1 | Apellido2 |
Pedro | Plinio | Perez | Plazas |
podemos usar la siguiente formula de la calculadora del ArcGis:
desde el campo Nombre1 calculamos:
Trim(Mid(NombreC, 1,InStr(1,NombreC, " ")-1))
para obtener:
Nombre1 | Nombre2 | Apellido1 | Apellido2 |
Pedro |
Luego desde el campo Nombre2 calculamos:
Trim(Mid(NombreC, InStr( InStr(1,NombreC, " ")+1,NombreC, " "),InStr(InStr(1,NombreC, " ")+1,NombreC, " ")-1)
para obtener:
Nombre1 | Nombre2 | Apellido1 | Apellido2 |
Pedro | Plinio |
y así se continúa hasta completar, este ejemplo se muestra a modo de ilustración comenten si les da resultado y Bienvenidos todos los aportes.
Saludos
Etiquetas:
SIG
Suscribirse a:
Entradas (Atom)