La Web del Programador: Comunidad de Programadores
 
    Pregunta:  29323 - COMO CONECTAR PHP CON INFORMIX
Autor:  Sandra Latigano
Como puedo conectar PHP4 que se encuentra bajo WIN98 a Informix ver. 7
Utilicé la función ifx_connect(), sin exito. Tendría que agregar alguna librería??

Muchas Gracias !!!

  Respuesta:  Ruben Pineda
Tu problema es qu para que corra tu php con informix debes de hacerlo desde un servidor apache en linux.

Lo primero que debes de hacer es bajas el SDK de informix para linux la version sdk2.81UC3.tar,lo puedes conseguir en www.informix.com, que es la que no tiene problema y debes de crear un uauario en linux con el perfil de tu servidor UNIX(informix) y bueno hay muchas cosas que hacer, yo estoy en ese proceso...

Bye

  Respuesta:  JULIAN MAMANI
Propiedades Personalizadas en una Base de Datos
Como Administrar y Usar PropiedadesPersonalizadas en Una Base de Datos

--------------------------------------------------------------------------------

Preámbulo de una base de datos de lujo

Si aun no ha experimentado la capacidad de crear sus propias propiedades en una bases de datos, se esta perdiendo de algo realmente poderoso. Este articulo explica como iniciarse en esto, y es un fundamento previo a «Formularios de Datos en Tiempos de Ejecución».

¿Porque usar Propiedades Personalizadas?

Las capacidades de los objetos se miden en sus propiedades y métodos. Una de las grandes innovaciones de Access 2.0 fueron una serie de propiedades adicionales en las tablas y campos que no eran estándares, y aun en programación Visual Basic eran bastante extrañas, me refiero por ejemplo a las propiedades ValidationRule, ValidationText, Format, y otras. Hoy, Access97, explícitamente DAO 3.5 reconoce algunas de estas propiedades como estándar (incorporadas). -No todo termina aquí, lo más importante es que el programador Visual Basic puede crear y usar propiedades personalizadas a su gusto.

Las propiedades personalizadas se usan para dar información adicional a un objeto en particular, por ejemplo en Ingeriría es deseable tener una propiedad en los campos de datos que indique las Unidades de medida, es decir, tengo un Campo con nombre Meassured Depth, las unidades pueden variar entre Pies, Metros, Centímetros, etc. Así, creo una propiedad Units, la asigno y puedo referirme a ella en informes y formularios de manera organizada, práctica, y con buena presentación. Personalmente he usado propiedades personalizadas en objetos Field para implementar un enlace a una lista de datos que proviene de una base de datos de catálogos, con el fin de automatizar una interfaz de entrada de datos. Esto ultimo puede sonar muy complicado, pero hace parte de un articulo futuro de VeXPERT: «Formularios de Datos en Tiempos de Ejecución».

La Colección « Properties »

Todos los objetos de acceso de datos contienen una colección Properties, la cual apunta a objetos Property. Estos objetos Property (propiedades) caracterizan de forma exclusiva a esa instancia del objeto. Una propiedad definida por el usuario sólo está asociada a la instancia específica del objeto. La propiedad no se define para todas las instancias de objetos del tipo seleccionado. Es decir, si creo una propiedad personalizada, no existirá en todos los campos hasta que no se cree y explícitamente y se le asigne su valor. Como una particularidad de esta discusión, esto sucede con algunas propiedades de la plantilla de diseño de tabla que muestra Access; por ejemplo, la propiedad Format que se muestra en la plantilla de propiedades de Access no es reconocida como incorporada hasta que no se le asigne un Valor en dicha plantilla o con código Visual Basic (más adelante se muestra un procedimiento útil).

Después de creada la propiedad y asignado su valor, esta se guarda en la Bases de Datos y queda lista para usar.

Para reconocer que propiedades existentes en objetos de acceso a datos, se puede recorrer al colección Properties con un código como el siguiente:

'// ---------------------------------------------------------------
'// Coloca la lista de propiedades de un objeto Field en un ListBox
'// de nombre lst_Properties
'// ---------------------------------------------------------------
Dim p As Property
Dim f As Field

Set f = db.TableDefs("miTabla").Fields("miCampo")
lst_Properties.Clear
For Each p In f.Properties
lst_Properties.AddItem p.Name
Next p

La variable db es un objeto Database previamente definido. Salga de dudas y ejecute el procedimiento a varios campos de su base de datos. Quizá se sorprenda de la cantidad de propiedades que están disponibles. Las propiedades varían según el tipo de dato del campo.

Se obtiene o asigna el valor de una propiedad personalizada a través de la colección Properties con la siguiente sintaxis: objeto.Properties("NombreDePropiedad").

Ejemplos:

Propiedad Description de un Campo: objetoField. Properties("Description")
Propiedad ValidationText de un campo: objetoField. Properties("ValidationText")

Como una particularidad, puede leer una propiedad desde un Control Data, sin crear un objeto Field, con la siguiente sintaxis: x = miData.Recordset.Fields("miCampo").Properties("Description")

Generalmente, deberá preceder la solicitud a una propiedad con un On Error Resume Next, ya que si no existe la propiedad se produce un error interceptable. Por ejemplo si no asigna la propiedad Description en la plantilla Access e intenta usar x = miCampo.Properties("Description") se produce un error. Aclaro nuevamente la propiedad no existe hasta crearla y asignarle un valor. A modo de discusión, esto es correcto, ya que no todos los campos requieren tal o cual propiedad, por ejemplo un campo de tipo Autonumérico (Contador), no tiene sentido disponer de Format o InputMask. Esto preserva la sub-utilización del espacio en la base de datos.

Por último, puede utilizar el método Delete para eliminar propiedades definidas por el usuario de la colección Properties.

Crear, Obtener y Editar una Propiedad Personalizada

1. Crear o modificar una Propiedad Personalizada

Sin delación, es crea o modifica una propiedad de un objeto de una base de datos con una rutina simple. El siguiente trozo de código, eminentemente didáctico, muestra cómo. En un contexto práctico se usarían parámetros para el nombre de propiedad, campo y tabla:

'// ----------------------------------------------------------------
'// Crea o edita una propiedad personalizada de nombre "miPropiedad"
'// de tipo Text en el campo "miCampo" de la tabla "miTabla", y
'// asigna wl valor "Algun Valor".
'// ----------------------------------------------------------------
Private Sub AsignePropiedad()

Dim s As String
Dim f As Field
Dim pp As Property

On Error Resume Next
Set f = db.TableDefs("miTabla").Fields("miCampo")
s = f.Properties("miPropiedad")
On Error GoTo 0

If s = "" Then
'//Create
Set pp = f.CreateProperty()
pp.Name = "miPropiedad"
pp.Type = dbText
pp.Value = "AlgunValor"
f.Properties.Append pp
Else
'//Actualiza
f.Properties("miPropiedad") = "Algun Valor"
End If
End Sub

Los parámetros para una función generalizada serán NombreDeTabla, NombreDeCampo, NombreDePropiedad, TipoDePropiedad, y ValorDePropiedad (Variant). Respecto a TipoDePropiedad es correcto usar las constantes de tipos de datos que suministra Visual Basic, p.e. dbText, dbSingle, dbLong. Una documentación de estas constantes se encuentra en la ayuda de contexto de Visual Basic (F1).

2. Obtener una Propiedad Personalizada

Se obtiene o asigna el valor de una propiedad personalizada a través de la colección Properties con la siguiente sintaxis: objeto.Properties("NombreDePropiedad")

Siempre precederemos la obtención de una propiedad con On Error Resume Next, ya que si no existe se produce un error interceptable.

Por ejemplo si quisiera colocar las descripciones de los Campos, de un formulario de datos, en un arreglo String para usarlos en una Línea de Estado, puede seguir esta líneas:

'// ----------------------------------------------------------------
'// Entrega las Descripciones de los campos especificadas en la
'// propiedad Description.
'// ----------------------------------------------------------------
Public Sub ObtenerDescripciones(dat As Data, Descripción() As String)
Dim cn As Recordset
Dim f As Field
Dim i As Integer
Dim s As String

Set cn = dat.Recordset.Clone

ReDim Descripción(0 To cn.Fields.Count - 1)
i = 0
On Error Resume Next
For Each f In cn.Fields
s = f.Properties("Description")
If Len(s) Then
Descripción(i) = s
End If
s = ""
i = i + 1
Next f
End Sub

Una rutina como la anterior aplica como modelo para recuperar las propiedades personalizadas. Use libremente propiedades como Format, InputMask, DecimalPlace, y todas aquellas que Usted haya creado. Por ejemplo imagínese configurar un control InputMask enlazado al campo con los datos que suministra el mismo campo.

Propiedades en Cualquier Objeto de la Base de Datos

Como comente anteriormente, se pueden crear propiedades en cualquier objeto de accesos a datos. Comúnmente uno creará propiedades en tablas y campos. -¿Propiedades en las tablas?, ciertamente, por ejemplo se desea crear una propiedad que almacene un icono (o su nombre de imagen) para representar a la tabla, de manera que en una interfaz gráfica guíen al usuario de manera intuitiva (caso de iconos en un TabStrip o en un TreeView). Otro caso de una propiedad en una tabla seria una clave (palabra) para una validación compleja en un procedimiento Visual Basic. Es decir, los limites los impone la creatividad del programador.

Dificultades

Si acaso la principal dificultad de crear propiedades personalizadas, es que no existen editores para tal tarea, todo se debe hacer con código. No obstante, el código no es complicado; supongo que los ejemplos que puse a disposición en este articulo son suficientes.

Utilización Avanzada

El empleo inteligente de las propiedades incorporadas y creadas, es el preámbulo para crear una aplicación (de administración de datos), realmente automatizada y con una interfaz a muy alto nivel. Come he comentado, esto será tema de un articulo futuro de este Web Site.