sábado, 23 de mayo de 2015

Hacer funcionar programas hechos con delphi 7 32 bits en Windows 7 64 bits

 windows 7 64 bits  -> instalar oracle 11 y  delphi 7


Al final he podido instalando en win7 64bits,   oracle 11 32 bits con compatibilidad
Creo odbc de la carpeta syswow67/odbcad32.exe que son los de 32 bits
y he conectado con BDE que era con lo que tenia hecho los programas en windows xp


Pasos para que funcionen en  windows 7 64 bits programas de delphi7 32 bits hacer lo siguiente

a) en servidor

oracle 11g 32bits, instalar con compatibilidad
caracteres WE8ISO8859P1

(se instala 2 veces, la segunda vez funciona)

(poner a ese ordenador como ip fija la que tenga en ese momento, se pone en panel de control conexiones de redes, sino al apagarlo y volver a encender coge otra ip y ya no funciona oracle)

192.168.1.129:1158/em
listener 192.168.1.29  puerto 1522

tablespace  
usuario  dba cuota ilimitada tablespace  <- pasar los datos

exp usuario/clave@bdgeneral file=c:\based.dmp owner=usuario
imp usuario/clave@bdgeneral file=c:\based.dmp fromuser=usuario  touser=usuario

si delphi se conecta a oracle por odbc crear en

odbc  c:\windows\syswow64\odbcad32.exe

servicios que se inician al reiniciar
oracledbconsoleBD1
oracleoradb11g_home2tnslistener
oracleserviceBD1

b) en cliente

cliente oracle 11g 32 bits, instalar con opcion "permisos adicionales"
administrador
configuracion de red
configuracion nombre servicio red local
BD1  192.168.1.29 (ip servidor)  puerto 1522 (del listener)

BDE  instalar con problemas de compatibilidad

Si nos les funciona escriban un comentario




miércoles, 20 de mayo de 2015

SQL ORACLE 11, Concatenar campo cadenas de la misma columna

sql oracle 11


Concatenar campo cadenas de la misma columna

tabla
1  hola
2  hola2
3  hola3

resultado de la consulta

hola, hola2, hola3







funcion de planetacodigo.com

CREATE OR REPLACE FUNCTION rowconcat(q IN VARCHAR2) RETURN VARCHAR2 IS
  ret  VARCHAR2(4000);
  hold VARCHAR2(4000);
  cur  sys_refcursor;
BEGIN
  OPEN cur FOR q;
  LOOP
    FETCH cur INTO hold;
    EXIT WHEN cur%NOTFOUND;
    IF ret IS NULL THEN
      ret := hold;
    ELSE
      ret := ret || ',' || hold;
    END IF;
  END LOOP;
  RETURN ret;
END;


consulta para usarla

select AR_CODIGO, OBS
from ARTICULO LEFT JOIN
  ( SELECT rowconcat('select trim(ods_tx1) from ordartsi where ods_codart LIKE 13029017 and (length(ods_tx1)>1)') OBS, '13029017' ART FROM DUAL) ON ART=AR_CODIGO
WHERE AR_CODIGO='13029017';


otra consulta mas sencilla

SELECT rowconcat('select trim(ods_tx1) from ordartsi where ods_codart LIKE 13029017 and (length(ods_tx1)>1)')  FROM DUAL