Jueves 14 de Noviembre de 2024, 16:55
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Visual FoxPro
(Moderador:
arielb
) »
Crear Tabla Desde Otra
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Crear Tabla Desde Otra (Leído 3780 veces)
Widark
Miembro MUY activo
Mensajes: 246
Crear Tabla Desde Otra
«
en:
Martes 20 de Septiembre de 2005, 15:26 »
0
Hola a tod@s!
Me pasa lo siguiente, en una tabla tengo como registros los nombres de las columnas, tamaño y tipo, quiero que apartir de estos registros poder crear una tabla, como quien dice los registros pasaran a ser las columnas de otra tabla. Lo pense hacer con vector pero no se como ejecutar la instruccion CREATE con el vector. Muchas gracias por sus comentarios.
Tweet
[:], Yo si se lo que es trabajar duro, por que lo he visto.
http]
programacion
,
c
,
c++
,
C#
,
java
,
linux
,
videojuegos
,
directX
,
.NET
,
allegro
,
asm
,
codigo
NoSolocodigo
--> Blog de Articulos
DrakerDG
Miembro activo
Mensajes: 72
Re: Crear Tabla Desde Otra
«
Respuesta #1 en:
Jueves 22 de Septiembre de 2005, 15:20 »
0
Puedes usar el macro & para ejecutar la instruccion desde un string, de la siguiente manera:
Código: Text
LOCAL ARRAY copia(2) && Arreglo donde se almacenará la tabla original
LOCAL xStg as String && Variable donde se almacenará la instruccion, en este caso CREATE...
* Para efectos del ejemplo crea una tabla con un campo llamado Registro.
CREATE TABLE Tabla1;
(Registro c(50))
SELECT Tabla1 && Selecciona la tabla
APPEND BLANK && Crea un registro
replace Registro WITH "Tamaño" && Lo llena con el nombre Tamaño (relativo a tu consulta)
APPEND BLANK && Crea un registro
replace Registro WITH "Tipo" && Lo llena con el nombre Tipo (relativo a tu consulta)
USE && Cierra la tabla
* Consulta la tabla para almacenarla en el arreglo "copia"
SELECT *;
FROM Tabla1;
INTO ARRAY copia
SELECT tabla1
USE && cierra el cursor de la Tabla1 (abierto por la consulta)
* Crea la instrucción para crear la Tabla2 en un string
xStr = "CREATE TABLE Tabla2 (" + ALLTRIM(copia(1)) + " i," + ALLTRIM(copia(2)) + " c(50))"
&xStr && Ejecuta el macro (Este ejecuta lo que esta almacenado en xStr)
SELECT Tabla2 && Selecciona la tabla
USE && Cierra la tabla
*NOTA: Las tablas fueron creadas en el directorio actual por defecto.
Espero te sirva.
Saludos desde Guatemala, C. A.
Electrobotics
Widark
Miembro MUY activo
Mensajes: 246
Re: Crear Tabla Desde Otra
«
Respuesta #2 en:
Jueves 22 de Septiembre de 2005, 17:59 »
0
Gracias, por tu respuesta DrakerDG!
El codigo quedo así:
Código: Text
LOCAL loCarpeta as String, loCrear as Boolean, loEjecutaCrear as String
DIMENSION GeneraTabla(1,1)
IF EMPTY(strTablaActiva)
MESSAGEBOX("No hay ninguna tabla activa.",64,"Generar Tabla")
ELSE
IF BOF() AND EOF()
MESSAGEBOX("No hay registros para crear la Tabla.",64,"Generar Tabla")
ELSE
loCarpeta = GETFILE('DBF','','Crear',1,'Crear tabla')
IF NOT EMPTY(loCarpeta)
loCrear = .T.
IF FILE(loCarpeta) = .T.
Result = MESSAGEBOX("¿Este archivo ya existe desea remplazarlo?",4 + 32)
IF Result = 6
loCrear = .T.
ELSE
loCrear = .F.
EndIf
EndIf
IF loCrear = .T.
PosicionB = RATC("\",loCarpeta) && Posicion del primer backslash de derecha a izquierda
Extencion = LEN(ALLTRIM(loCarpeta)) - (PosicionB + 4) && Para quitar la extencion con s
strEspacio = SUBSTR(loCarpeta,PosicionB + 1,Extencion)
IF AT(" ",strEspacio) > 0
MESSAGEBOX("El nombre de la Tabla no puede contener espacios.",64)
ELSE
DIMENSION GeneraTabla(RECCOUNT(),3) && Dimensiono el Vector para los Campos
Bmk = RECNO()
GO TOP
loEjecutaCrear = "Create Table " + loCarpeta + "("
I = 1
DO WHILE NOT EOF()
loEjecutaCrear = loEjecutaCrear + "'" + ALLTRIM(nomcampo) + "'";
+ SPACE(1) + ALLTRIM(tipocampo) + "(" + ALLTRIM(tamcampo) + ")"
IF I < RECCOUNT()
loEjecutaCrear = loEjecutaCrear + ", "
I = I + 1
EndIf
Skip
EndDo
loEjecutaCrear = loEjecutaCrear + ")"
&loEjecutaCrear
EndIf
EndIf
EndIf
EndIf
EndIf
[:], Yo si se lo que es trabajar duro, por que lo he visto.
http]
programacion
,
c
,
c++
,
C#
,
java
,
linux
,
videojuegos
,
directX
,
.NET
,
allegro
,
asm
,
codigo
NoSolocodigo
--> Blog de Articulos
Cyclop
Miembro MUY activo
Mensajes: 323
Re: Crear Tabla Desde Otra
«
Respuesta #3 en:
Jueves 22 de Septiembre de 2005, 23:31 »
0
Prueba esto
Código: Text
Use TablaOrigen In 0 Alias Origen
Select Origen
Copy Struc To C:\TablaDestino Production
Salu2
Cyclopz
Icotext Evolution v0.5 para los amantes del ASCII Art
http]
Widark
Miembro MUY activo
Mensajes: 246
Re: Crear Tabla Desde Otra
«
Respuesta #4 en:
Viernes 23 de Septiembre de 2005, 01:31 »
0
Gracias Cyclop!
lo que pasa es en la Tabla de origen guardo la estructura de la tabla que voy a generar ej:
Etiqueta
|
Nomcampo
|
Tipcampo
|
Tamcampo
Alguna | campo1 | C | 20
Varias | campo2 | L | 01
La tabla que se generará en resumen seria así: Create Table (Nomcampo Tipcampo(tamcampo)), lo cual quiere decir que seria así: Create Table ('campo1' C(20), 'campo2' L(01)). DrakerDG me sugirio que guardara eso en un string y si no estoy mal el tipo de dato string almacena 255 caracteres.
[:], Yo si se lo que es trabajar duro, por que lo he visto.
http]
programacion
,
c
,
c++
,
C#
,
java
,
linux
,
videojuegos
,
directX
,
.NET
,
allegro
,
asm
,
codigo
NoSolocodigo
--> Blog de Articulos
DrakerDG
Miembro activo
Mensajes: 72
Re: Crear Tabla Desde Otra
«
Respuesta #5 en:
Viernes 23 de Septiembre de 2005, 09:12 »
0
El tipo de variable que almacena solo 255 caracteres es la tipo Character. La variable tipo String puede almacenar miles, creo que la limitante es tu memoria RAM. Para comprobar que si soporta grandes tamaños declare una variable tipo string en el evento Load de un form, es decir
Código: Text
* En el evento Load del form
PUBLIC sVariable as String && Declara la variable tipo string
sVariable = "" && Inicializa la variable con una cadena vacía
Agregue un EditBox, un par de Labels, un CommandButton y un Timer en el Form.
El eneto Timer de Timer1 escribí el siguiente código:
Código: Text
* En el evento Timer del Timer1
sVariable = sVariable + "0123456789" && Agrega 10 caracteres cada vez.
thisform.edit1.Value = sVariable && Estable la propiedad Value del EditBox con el contenido de la variable.
thisform.label2.Caption = STR(LEN(sVariable)) + " Caracteres" && Muestra el tamaño de la variable (Cantidad de caracteres)
Establecí la propiedad enabled de Timer1 a .F. (False), para que no ejecutara el evento Timer al correr el Form.
En el evento Click del CommandButton escribí el código para habilidar y deshabilitar el Timer1.
Código: Text
* En el evento Click del CommandButton
IF thisform.timer1.Enabled
this.Caption = "Iniciar..."
thisform.timer1.Enabled = .F.
ELSE
this.Caption = "Parar..."
thisform.timer1.Enabled = .T.
ENDIF
Puedes utilizar una variable tipo string para almacenar la cantidad de caracteres que necesites.
Adjunte el formulario que te comento (Zip file), revisalo y me cuentas.
El mensaje contiene
1 archivo adjunto
. Debes
ingresar
o
registrarte
para poder verlo y descargarlo.
Saludos desde Guatemala, C. A.
Electrobotics
Widark
Miembro MUY activo
Mensajes: 246
Re: Crear Tabla Desde Otra
«
Respuesta #6 en:
Viernes 23 de Septiembre de 2005, 15:25 »
0
, gracias DrakerDG!
solo hize el comentario por que me lo hicieron y no encontre en la ayuda la capacidad de el tipo de variable String, ya lo probe y me deja mucho más tranquilo, gracias por tu respuesta.
[:], Yo si se lo que es trabajar duro, por que lo he visto.
http]
programacion
,
c
,
c++
,
C#
,
java
,
linux
,
videojuegos
,
directX
,
.NET
,
allegro
,
asm
,
codigo
NoSolocodigo
--> Blog de Articulos
DrakerDG
Miembro activo
Mensajes: 72
Re: Crear Tabla Desde Otra
«
Respuesta #7 en:
Viernes 23 de Septiembre de 2005, 20:28 »
0
No hay problema, de hecho hice el ejemplo porque tambien dude y quize asegurarme.
Saludos desde Guatemala, C. A.
Electrobotics
Cyclop
Miembro MUY activo
Mensajes: 323
Re: Crear Tabla Desde Otra
«
Respuesta #8 en:
Lunes 26 de Septiembre de 2005, 20:43 »
0
Yo tengo un ejemplo bien chevere te lo envio luego
Icotext Evolution v0.5 para los amantes del ASCII Art
http]
Widark
Miembro MUY activo
Mensajes: 246
Re: Crear Tabla Desde Otra
«
Respuesta #9 en:
Martes 27 de Septiembre de 2005, 23:19 »
0
Listo, Cyclop as estare esperando
[:], Yo si se lo que es trabajar duro, por que lo he visto.
http]
programacion
,
c
,
c++
,
C#
,
java
,
linux
,
videojuegos
,
directX
,
.NET
,
allegro
,
asm
,
codigo
NoSolocodigo
--> Blog de Articulos
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Visual FoxPro
(Moderador:
arielb
) »
Crear Tabla Desde Otra