Jump to content


Photo

[RESUELTO] ¿Que tipo de archivo puedo utilizar?


  • Please log in to reply
13 replies to this topic

#1 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 25 March 2010 - 09:49 AM

Hola a todos, cuerda de borrachos amigos mios  :cool:

jeje, ahora si, este es mi problema:

Yo la construcción de la BD y las actualizaciones las manejo por un archivo que yo le coloco como Diccionario de datos, inicialmente este archivo lo maneje como un INI y me funciono, la estructura era básicamente la siguiente:

[table]
[tr]
[td][TABLAS]
0001=CLIENTES
0002=PROVEEDOR
[CAMPOS]
0001;001=NOMBRE varchar(100);
0001;002=CEDULA varchar(15);
0002;001=NOMBRE varchar(100);
0002;002=RIF varchar(15);
0002;003=TELEFONO varchar(15);[/td]
[/tr]
[/table]

Hasta aqui vamos bien, ahora cuando quiero trabajar con los Procedimientos almacenado se me presenta un problema, por ejemplo:

MiProcedimiento = create storeProcedure (PROCCLIENTES) as
                              UTC = :CLIENTENOMBRE;
                                el resto de las lineas
                          end;
OtroProcedimiento = ****


En este caso debería dar dos procedimientos como resultado,

MiProcedimiento
OtroProcedimiento

pero realmente me esta dando tres:

MiProcedimiento
UTC
OtroProcedimiento

El cual es el comportamiento normal de un archivo INI, ahora se me ocurre que para evitar esto puedo trabajar con .DAT, lo que quisiera saber es si alguien tiene alguna propuesta, o por lo menos saber que tipo de datos puedo utilizar en un .DAT con mas de 255 Caracteres.

Gracias por su atencion
  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 25 March 2010 - 09:54 AM

¿y has intentado con archivos XML?.
  • 0

#3 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 25 March 2010 - 09:58 AM

¿y has intentado con archivos XML?.


no lo he hecho, dejame ver que encuentro al respecto.
  • 0

#4 kafastoforman

kafastoforman

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 277 posts
  • LocationMexico D.F.

Posted 25 March 2010 - 09:59 AM

Lo que a mi se me ocurre, es que en vez de guardar toda la consulta del stored proc en el ini, lo hagas en un archivo aparte y en el ini solo pongas el nombre del archivo al que corresponde.

ej.

archivo.ini
-------------------------------------
  MiProcedimiento=miprocedimiento.prc


miprocedimiento.prc
-------------------------------------
create storeProcedure (PROCCLIENTES) as
                              UTC = :CLIENTENOMBRE;
                                el resto de las lineas
                          end;


Eso es lo que a mi se me ocurre ;)

saludos

Kafastoforman
  • 0

#5 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 25 March 2010 - 10:04 AM

epa amigo, esa esta buenísima, pero me trae otro problema :( y es que para manejar múltiples archivos tendría que cambiar todo el actualizador, :

Si no me funciona con .DAT o XML y tengo que modificar el actualizador trabajare con esa.
  • 0

#6 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 25 March 2010 - 10:10 AM

Los archivos XML me traen el mismo problema que la dada por kafastoforman, ya que leyendo me encuentro que aparte del XML debe tener un .dtd.

Seguire investigando al respecto.
  • 0

#7 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 25 March 2010 - 10:11 AM

No amigo, no es necesario el .dtd, eso es sólo al momento de crear la estructura. Luego de eso te desprendes de ella. Sólo que tendrías que hacer dos XML, uno de los campos y tablas otra de todos los SP.
  • 0

#8 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 25 March 2010 - 10:17 AM

Utilizaría esta estructura.

[table]
[tr]
[td]Seccion                Nombre    Sentencia
TABLAS                0001        CLIENTES
TABLAS                0002        PROVEEDORES
CAMPOS              0001;001  NOMBRE varchar (100)
CAMPOS              0001;002  CEDULA  varchar (12)
PROCEDIMIENTOS  MIPROCED  XXXXX*******;[/td]
[/tr]
[/table]
  • 0

#9 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 25 March 2010 - 10:28 AM

Una DTD puede residir en un fichero externo, y quizás compartido por varios (puede que miles) de documentos. O bien, puede estar contenido en el propio documento XML, como parte de su declaración de tipo de documento.

Veamos un ejemplo

<! DOCTYPE etiqueta[
<!ELEMENT etiqueta (nombre, calle, ciudad, pais, codigo)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT calle (#PCDATA)>
<!ELEMENT ciudad (#PCDATA)>
<!ELEMENT pais (#PCDATA)>
<!ELEMENT codigo (#PCDATA)>
]>

<etiqueta>
<nombre>Fulano Mengánez</nombre>
<calle>c/ Mayor, 27</calle>
<ciudad>Valderredible</ciudad>
<pais>España</pais>
<codigo>39343</codigo>
</etiqueta>


Fuente
  • 0

#10 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 25 March 2010 - 11:12 AM

Siempre lo he dicho, Delphi es la solución a todas nuestras plegarias

ClientDataSet1.SaveToFile(miarchivo, dfXML);
  • 0

#11 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14448 posts
  • LocationMéxico

Posted 25 March 2010 - 01:27 PM

Siempre lo he dicho, Delphi es la solución a todas nuestras plegarias

ClientDataSet1.SaveToFile(miarchivo, dfXML);


Pues que bien amigo, larga vida a Delphi :)

Salud OS
  • 0

#12 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 25 March 2010 - 01:29 PM

Bueno ya estoy trabajando en las actualizaciones, doy el hilo como resuelto, gracias a todos por sus aportes

  • 0

#13 seoane

seoane

    Advanced Member

  • Administrador
  • 1259 posts
  • LocationEspaña

Posted 25 March 2010 - 02:12 PM

Parece que llego tarde, y ademas la solución me parece muy buena.

Pero yo tengo otra solución, menos elegante, pero mas rápida de implementar. Yo mismo lo use cuando me encontré con el mismo problema que eduarcol, el de guardar varias lineas en un valor de un archivo .ini

El método es sencillo, codificar el valor antes de guardarlo y decodificarlo al leerlo.

Un ejemplo:


delphi
  1. function Encode(Str: string): string;
  2. var
  3.   i: integer;
  4. begin
  5.   Result:= '';
  6.   for i:= 1 to Length(Str) do
  7.     if Str[i] in ['A'..'Z','a'..'z','0'..'9','-','_','.'] then
  8.       Result:= Result + Str[ i ]
  9.     else
  10.       Result:= Result + '%' + IntToHex(Ord(Str[ i ]),2);
  11. end;
  12.  
  13. function Decode(Str: string): string;
  14. var
  15.   i: integer;
  16. begin
  17.   Result:= '';
  18.   while Length(Str) > 0 do
  19.   begin
  20.     if Copy(Str, 1, 1) = '%' then
  21.     begin
  22.       if not TryStrToInt('$' + Copy(Str, 2, 2),i) then
  23.       begin
  24.         Result:= '';
  25.         Exit;
  26.       end;
  27.       Result:= Result + Char(i);
  28.       Delete(Str, 1, 2);
  29.     end else Result:= Result + Copy(Str, 1, 1);
  30.     Delete(Str,1,1);
  31.   end;
  32. end; 
  33.  
  34. // Para guardar un valor
  35. WriteString(Section,Ident,Encode(Valor));
  36.  
  37. // Para leer un valor
  38. Result:= Decode(ReadString(Section,Ident,Default)); 


  • 0

#14 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 25 March 2010 - 02:31 PM

Te felicito Sencillo y efectivo amigo, Sencillo y efectivo

Imagen Enviada
  • 0




IP.Board spam blocked by CleanTalk.