In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
TMemDataSet Vacio
-
- Mensajes: 420
- Registrado: Sab Ago 16, 2008 9:06 pm
TMemDataSet Vacio
Hola,
Necesito crear MemDataSet vacío al que en determinado momento le tengo
que añadir datos.
Después de crearlo de esta forma:
::oParaP := TMemDataSet():Create()
WITH OBJECT ::oParaP
WITH OBJECT :AddField( "Nombre" )
:cType := "C"
:nLen := 25
END WITH
WITH OBJECT :AddField( "Telefono" )
:cType := "C"
:nLen := 12
END WITH
END WITH
intento añadir datos usando
WITH OBJECT ::oParaP
:Open()
IF :AddNew()
:Nombre := "Pepe"
:Telefono := "123456789"
:UpDate()
END IF
:Close()
END WITH
Compruebo que los datos NO se han añadido. Para que funcione, tengo que
inventarme esto:
WITH OBJECT ::oParaP
:Open( { { "", "" } } ) // Al abrir pongo un registro fantasma.
IF :AddNew()
:Nombre := "Pepe"
:Telefono := "123456789"
:UpDate()
END IF
:GoTop() // Despues de añadir y guardar el registro, voy al primero
:Delete() // y lo borro
:Close()
END WITH
Esto es un apaño que me vale en algunos casos pero no para todos.
No se si este funcionamiento es el correcto, pero necesito poder crear
un MemDataSet vacío para añadir cuando lo requiera el programa.
Gracias y un saludo,
Alf+.
Necesito crear MemDataSet vacío al que en determinado momento le tengo
que añadir datos.
Después de crearlo de esta forma:
::oParaP := TMemDataSet():Create()
WITH OBJECT ::oParaP
WITH OBJECT :AddField( "Nombre" )
:cType := "C"
:nLen := 25
END WITH
WITH OBJECT :AddField( "Telefono" )
:cType := "C"
:nLen := 12
END WITH
END WITH
intento añadir datos usando
WITH OBJECT ::oParaP
:Open()
IF :AddNew()
:Nombre := "Pepe"
:Telefono := "123456789"
:UpDate()
END IF
:Close()
END WITH
Compruebo que los datos NO se han añadido. Para que funcione, tengo que
inventarme esto:
WITH OBJECT ::oParaP
:Open( { { "", "" } } ) // Al abrir pongo un registro fantasma.
IF :AddNew()
:Nombre := "Pepe"
:Telefono := "123456789"
:UpDate()
END IF
:GoTop() // Despues de añadir y guardar el registro, voy al primero
:Delete() // y lo borro
:Close()
END WITH
Esto es un apaño que me vale en algunos casos pero no para todos.
No se si este funcionamiento es el correcto, pero necesito poder crear
un MemDataSet vacío para añadir cuando lo requiera el programa.
Gracias y un saludo,
Alf+.
-
- Mensajes: 420
- Registrado: Sab Ago 16, 2008 9:06 pm
TMemDataSet Vacio
Versión de Xailer: 2.0.18
El 28/11/2010 23:13, José Alfonso Suárez Moreno escribió:
> Hola,
>
> Necesito crear MemDataSet vacío al que en determinado momento le tengo
> que añadir datos.
>
> Después de crearlo de esta forma:
>
> ::oParaP := TMemDataSet():Create()
> WITH OBJECT ::oParaP
> WITH OBJECT :AddField( "Nombre" )
> :cType := "C"
> :nLen := 25
> END WITH
> WITH OBJECT :AddField( "Telefono" )
> :cType := "C"
> :nLen := 12
> END WITH
> END WITH
>
> intento añadir datos usando
>
> WITH OBJECT ::oParaP
> :Open()
> IF :AddNew()
> :Nombre := "Pepe"
> :Telefono := "123456789"
> :UpDate()
> END IF
> :Close()
> END WITH
>
> Compruebo que los datos NO se han añadido. Para que funcione, tengo que
> inventarme esto:
>
> WITH OBJECT ::oParaP
> :Open( { { "", "" } } ) // Al abrir pongo un registro fantasma.
> IF :AddNew()
> :Nombre := "Pepe"
> :Telefono := "123456789"
> :UpDate()
> END IF
> :GoTop() // Despues de añadir y guardar el registro, voy al primero
> :Delete() // y lo borro
> :Close()
> END WITH
>
> Esto es un apaño que me vale en algunos casos pero no para todos.
>
> No se si este funcionamiento es el correcto, pero necesito poder crear
> un MemDataSet vacío para añadir cuando lo requiera el programa.
>
> Gracias y un saludo,
>
> Alf+.
El 28/11/2010 23:13, José Alfonso Suárez Moreno escribió:
> Hola,
>
> Necesito crear MemDataSet vacío al que en determinado momento le tengo
> que añadir datos.
>
> Después de crearlo de esta forma:
>
> ::oParaP := TMemDataSet():Create()
> WITH OBJECT ::oParaP
> WITH OBJECT :AddField( "Nombre" )
> :cType := "C"
> :nLen := 25
> END WITH
> WITH OBJECT :AddField( "Telefono" )
> :cType := "C"
> :nLen := 12
> END WITH
> END WITH
>
> intento añadir datos usando
>
> WITH OBJECT ::oParaP
> :Open()
> IF :AddNew()
> :Nombre := "Pepe"
> :Telefono := "123456789"
> :UpDate()
> END IF
> :Close()
> END WITH
>
> Compruebo que los datos NO se han añadido. Para que funcione, tengo que
> inventarme esto:
>
> WITH OBJECT ::oParaP
> :Open( { { "", "" } } ) // Al abrir pongo un registro fantasma.
> IF :AddNew()
> :Nombre := "Pepe"
> :Telefono := "123456789"
> :UpDate()
> END IF
> :GoTop() // Despues de añadir y guardar el registro, voy al primero
> :Delete() // y lo borro
> :Close()
> END WITH
>
> Esto es un apaño que me vale en algunos casos pero no para todos.
>
> No se si este funcionamiento es el correcto, pero necesito poder crear
> un MemDataSet vacío para añadir cuando lo requiera el programa.
>
> Gracias y un saludo,
>
> Alf+.
-
- Mensajes: 1831
- Registrado: Mar Oct 11, 2005 9:53 am
TMemDataSet Vacio
Yo hago esto:
Tengo el MemDataSet Hecho en la propiedad ::oDataSet, luego lo destruyo y lo
vuelvo a crear...
____________________________________________________________ ______________________
WITH OBJECT ::oDataSet
:Open( { { "", "", 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } }, ;
{ "Codigo", "Descrip", "Costo", "Existencia", "Exist_Ini",
"Entradas", "Salidas", "Exist_Fin", "StockMin", "StockMax" } )
:Zap()
END WITH
____________________________________________________________ ______________
//relleno a Campos y aDatos....
::oDataSet:Destroy()
WITH OBJECT ::oDataSet := TMemDataSet():Create( Self )
:Open( aDatos, aCampos )
END WITH
::oDBBrowse1:oDataSet := ::oDataSet
ME ha funcionado bien, espero te sirva.
Saludos.
--
Ramón Zea
01.993.231-62-29
http://www.paginasprodigy.com/zeasoftware/
zeasoftware@prodigy.net.mx
zeasoftware@hotmail.com
ramonzea@yahoo.com
zeasoft.movil@hotmail.com
Tengo el MemDataSet Hecho en la propiedad ::oDataSet, luego lo destruyo y lo
vuelvo a crear...
____________________________________________________________ ______________________
WITH OBJECT ::oDataSet
:Open( { { "", "", 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } }, ;
{ "Codigo", "Descrip", "Costo", "Existencia", "Exist_Ini",
"Entradas", "Salidas", "Exist_Fin", "StockMin", "StockMax" } )
:Zap()
END WITH
____________________________________________________________ ______________
//relleno a Campos y aDatos....
::oDataSet:Destroy()
WITH OBJECT ::oDataSet := TMemDataSet():Create( Self )
:Open( aDatos, aCampos )
END WITH
::oDBBrowse1:oDataSet := ::oDataSet
ME ha funcionado bien, espero te sirva.
Saludos.
--
Ramón Zea
01.993.231-62-29
http://www.paginasprodigy.com/zeasoftware/
zeasoftware@prodigy.net.mx
zeasoftware@hotmail.com
ramonzea@yahoo.com
zeasoft.movil@hotmail.com
Ramón Zea
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
-
- Mensajes: 1310
- Registrado: Mié Sep 26, 2007 7:12 pm
TMemDataSet Vacio
Hola compañero, yo lo que hago es crear el memdatatset con estructura
pero de la siguiente manera:
::oMem:GetStructFrom(xxxxxxxx)
pero los parámetros que has de meterle son en formato xBase por ejemplo
::oMem:GetStructFrom ({{"cFile","C",500,0},{"attach","C",500,0}})
asi que para que te valga para una tabla MySql preparé esto:
::oMemForm:GetStructFrom(ListaCampos("demandantes_formacion "))
Donde ListaCampos es:
// Devuelve un array con una lista de los campos de una tabla SqLite o MySql
Function ListaCampos(cFrom)
Local aCampos :={}, nItem:=1
If AppData:cSQLMotor == "SQLITE"
AppData:oSqlSource:Execute("pragma table_info("+cFrom+")",,aCampos)
For nItem:=1 to len(aCampos)
aCampos[nItem,1]:=Lower(aCampos[nItem,2])
aCampos[nItem,2]:=Alltrim(Lower(aCampos[nItem,3]))
Next
Else
AppData:oSqlSource:Execute("show columns from "+Lower(cFrom)
,,aCampos)
Endif
For nItem:=1 to Len(aCampos)
//Longitudes
aCampos[nItem,3]:=Val(SubStr(aCampos[nItem,2],At("(",aCampos[nItem,2])+1))
aCampos[nItem,3]:=If(aCampos[nItem,2]="date",8,aCampos[nItem,3])
aCampos[nItem,3]:=If(aCampos[nItem,2]="tinyint(1)" .Or.
aCampos[nItem,2]="boolean",1,aCampos[nItem,3])
aCampos[nItem,3]:=If(aCampos[nItem,2]="integer" ,10,aCampos[nItem,3])
aCampos[nItem,3]:=If(aCampos[nItem,2]="longtext",10,aCampos[nItem,3])
//Decimales
aCampos[nItem,4]:=If(At(",",aCampos[nItem,2])>0,
Val(SubStr(aCampos[nItem,2],At(",",aCampos[nItem,2])+1)), 0)
//Tipos
Do Case
Case At("char",aCampos[nItem,2])>0
aCampos[nItem,2]:="C"
Case At("date",aCampos[nItem,2])>0
aCampos[nItem,2]:="D"
Case At("tinyint(1)",aCampos[nItem,2])>0 .Or.
At("boolean",aCampos[nItem,2])>0
aCampos[nItem,2]:="L"
Case At("longtext",aCampos[nItem,2])>0
aCampos[nItem,2]:="M"
Case At("longblob",aCampos[nItem,2])>0
aCampos[nItem,2]:="M"
Case At("int",aCampos[nItem,2])>0 .Or.
At("double",aCampos[nItem,2])>0.Or. At("float",aCampos[nItem,2])>0
aCampos[nItem,2]:="N"
Otherwise
MsgStop("Function ListaCampos() campo "+aCampos[nItem,1]+"
de tipo SQL "+aCampos[nItem,2]+" no procesado" )
EndCase
Next
Return aCampos
Que te servirá si sustituyes AppData:cSQLMotor y AppData:oSqlSource:
Salu2
pero de la siguiente manera:
::oMem:GetStructFrom(xxxxxxxx)
pero los parámetros que has de meterle son en formato xBase por ejemplo
::oMem:GetStructFrom ({{"cFile","C",500,0},{"attach","C",500,0}})
asi que para que te valga para una tabla MySql preparé esto:
::oMemForm:GetStructFrom(ListaCampos("demandantes_formacion "))
Donde ListaCampos es:
// Devuelve un array con una lista de los campos de una tabla SqLite o MySql
Function ListaCampos(cFrom)
Local aCampos :={}, nItem:=1
If AppData:cSQLMotor == "SQLITE"
AppData:oSqlSource:Execute("pragma table_info("+cFrom+")",,aCampos)
For nItem:=1 to len(aCampos)
aCampos[nItem,1]:=Lower(aCampos[nItem,2])
aCampos[nItem,2]:=Alltrim(Lower(aCampos[nItem,3]))
Next
Else
AppData:oSqlSource:Execute("show columns from "+Lower(cFrom)
,,aCampos)
Endif
For nItem:=1 to Len(aCampos)
//Longitudes
aCampos[nItem,3]:=Val(SubStr(aCampos[nItem,2],At("(",aCampos[nItem,2])+1))
aCampos[nItem,3]:=If(aCampos[nItem,2]="date",8,aCampos[nItem,3])
aCampos[nItem,3]:=If(aCampos[nItem,2]="tinyint(1)" .Or.
aCampos[nItem,2]="boolean",1,aCampos[nItem,3])
aCampos[nItem,3]:=If(aCampos[nItem,2]="integer" ,10,aCampos[nItem,3])
aCampos[nItem,3]:=If(aCampos[nItem,2]="longtext",10,aCampos[nItem,3])
//Decimales
aCampos[nItem,4]:=If(At(",",aCampos[nItem,2])>0,
Val(SubStr(aCampos[nItem,2],At(",",aCampos[nItem,2])+1)), 0)
//Tipos
Do Case
Case At("char",aCampos[nItem,2])>0
aCampos[nItem,2]:="C"
Case At("date",aCampos[nItem,2])>0
aCampos[nItem,2]:="D"
Case At("tinyint(1)",aCampos[nItem,2])>0 .Or.
At("boolean",aCampos[nItem,2])>0
aCampos[nItem,2]:="L"
Case At("longtext",aCampos[nItem,2])>0
aCampos[nItem,2]:="M"
Case At("longblob",aCampos[nItem,2])>0
aCampos[nItem,2]:="M"
Case At("int",aCampos[nItem,2])>0 .Or.
At("double",aCampos[nItem,2])>0.Or. At("float",aCampos[nItem,2])>0
aCampos[nItem,2]:="N"
Otherwise
MsgStop("Function ListaCampos() campo "+aCampos[nItem,1]+"
de tipo SQL "+aCampos[nItem,2]+" no procesado" )
EndCase
Next
Return aCampos
Que te servirá si sustituyes AppData:cSQLMotor y AppData:oSqlSource:
Salu2
-
- Mensajes: 420
- Registrado: Sab Ago 16, 2008 9:06 pm
TMemDataSet Vacio
Gracias Ramon y Bingen,
Ninguno de los dos soluciones que me aportáis me vale. El MemDataSet se
crea perfertamente, mi cuestión es dejar la estructura del MemDataSet
creada SIN pasarle datos ninguno para posteriormente, el determinada
parte del programa, abrirlo y meterle datos, pero SIN tener que pasarle
datos desde el método Open.
Saludos,
Alf+.
El 28/11/2010 23:13, José Alfonso Suárez Moreno escribió:
> Hola,
>
> Necesito crear MemDataSet vacío al que en determinado momento le tengo
> que añadir datos.
>
> Después de crearlo de esta forma:
>
> ::oParaP := TMemDataSet():Create()
> WITH OBJECT ::oParaP
> WITH OBJECT :AddField( "Nombre" )
> :cType := "C"
> :nLen := 25
> END WITH
> WITH OBJECT :AddField( "Telefono" )
> :cType := "C"
> :nLen := 12
> END WITH
> END WITH
>
> intento añadir datos usando
>
> WITH OBJECT ::oParaP
> :Open()
> IF :AddNew()
> :Nombre := "Pepe"
> :Telefono := "123456789"
> :UpDate()
> END IF
> :Close()
> END WITH
>
> Compruebo que los datos NO se han añadido. Para que funcione, tengo que
> inventarme esto:
>
> WITH OBJECT ::oParaP
> :Open( { { "", "" } } ) // Al abrir pongo un registro fantasma.
> IF :AddNew()
> :Nombre := "Pepe"
> :Telefono := "123456789"
> :UpDate()
> END IF
> :GoTop() // Despues de añadir y guardar el registro, voy al primero
> :Delete() // y lo borro
> :Close()
> END WITH
>
> Esto es un apaño que me vale en algunos casos pero no para todos.
>
> No se si este funcionamiento es el correcto, pero necesito poder crear
> un MemDataSet vacío para añadir cuando lo requiera el programa.
>
> Gracias y un saludo,
>
> Alf+.
Ninguno de los dos soluciones que me aportáis me vale. El MemDataSet se
crea perfertamente, mi cuestión es dejar la estructura del MemDataSet
creada SIN pasarle datos ninguno para posteriormente, el determinada
parte del programa, abrirlo y meterle datos, pero SIN tener que pasarle
datos desde el método Open.
Saludos,
Alf+.
El 28/11/2010 23:13, José Alfonso Suárez Moreno escribió:
> Hola,
>
> Necesito crear MemDataSet vacío al que en determinado momento le tengo
> que añadir datos.
>
> Después de crearlo de esta forma:
>
> ::oParaP := TMemDataSet():Create()
> WITH OBJECT ::oParaP
> WITH OBJECT :AddField( "Nombre" )
> :cType := "C"
> :nLen := 25
> END WITH
> WITH OBJECT :AddField( "Telefono" )
> :cType := "C"
> :nLen := 12
> END WITH
> END WITH
>
> intento añadir datos usando
>
> WITH OBJECT ::oParaP
> :Open()
> IF :AddNew()
> :Nombre := "Pepe"
> :Telefono := "123456789"
> :UpDate()
> END IF
> :Close()
> END WITH
>
> Compruebo que los datos NO se han añadido. Para que funcione, tengo que
> inventarme esto:
>
> WITH OBJECT ::oParaP
> :Open( { { "", "" } } ) // Al abrir pongo un registro fantasma.
> IF :AddNew()
> :Nombre := "Pepe"
> :Telefono := "123456789"
> :UpDate()
> END IF
> :GoTop() // Despues de añadir y guardar el registro, voy al primero
> :Delete() // y lo borro
> :Close()
> END WITH
>
> Esto es un apaño que me vale en algunos casos pero no para todos.
>
> No se si este funcionamiento es el correcto, pero necesito poder crear
> un MemDataSet vacío para añadir cuando lo requiera el programa.
>
> Gracias y un saludo,
>
> Alf+.
-
- Mensajes: 420
- Registrado: Sab Ago 16, 2008 9:06 pm
TMemDataSet Vacio
Es que no entiendo por que motivo hay que pasarle necesariamente datos
desde el método Open.
Según lo veo, el método Open es para abrir el MemDataSet, esta bien que
como opción se le pueda pasar un array de datos, pero no tiene por que
ser obligatorio.
Yo necesito que en determinado momento se produzca un Open del
MemDataSet, y en otro momento, se le añadan valores, pero si no he
añadido nada desde el Open, desde el AddNew - Update no funciona.
Esta tarde subo un ejemplo para que se vea más claro.
Saludos
Alf+.
El 29/11/2010 9:03, José Alfonso Suárez Moreno escribió:
> Gracias Ramon y Bingen,
>
> Ninguno de los dos soluciones que me aportáis me vale. El MemDataSet se
> crea perfertamente, mi cuestión es dejar la estructura del MemDataSet
> creada SIN pasarle datos ninguno para posteriormente, el determinada
> parte del programa, abrirlo y meterle datos, pero SIN tener que pasarle
> datos desde el método Open.
>
> Saludos,
>
> Alf+.
>
> El 28/11/2010 23:13, José Alfonso Suárez Moreno escribió:
>> Hola,
>>
>> Necesito crear MemDataSet vacío al que en determinado momento le tengo
>> que añadir datos.
>>
>> Después de crearlo de esta forma:
>>
>> ::oParaP := TMemDataSet():Create()
>> WITH OBJECT ::oParaP
>> WITH OBJECT :AddField( "Nombre" )
>> :cType := "C"
>> :nLen := 25
>> END WITH
>> WITH OBJECT :AddField( "Telefono" )
>> :cType := "C"
>> :nLen := 12
>> END WITH
>> END WITH
>>
>> intento añadir datos usando
>>
>> WITH OBJECT ::oParaP
>> :Open()
>> IF :AddNew()
>> :Nombre := "Pepe"
>> :Telefono := "123456789"
>> :UpDate()
>> END IF
>> :Close()
>> END WITH
>>
>> Compruebo que los datos NO se han añadido. Para que funcione, tengo que
>> inventarme esto:
>>
>> WITH OBJECT ::oParaP
>> :Open( { { "", "" } } ) // Al abrir pongo un registro fantasma.
>> IF :AddNew()
>> :Nombre := "Pepe"
>> :Telefono := "123456789"
>> :UpDate()
>> END IF
>> :GoTop() // Despues de añadir y guardar el registro, voy al primero
>> :Delete() // y lo borro
>> :Close()
>> END WITH
>>
>> Esto es un apaño que me vale en algunos casos pero no para todos.
>>
>> No se si este funcionamiento es el correcto, pero necesito poder crear
>> un MemDataSet vacío para añadir cuando lo requiera el programa.
>>
>> Gracias y un saludo,
>>
>> Alf+.
>
desde el método Open.
Según lo veo, el método Open es para abrir el MemDataSet, esta bien que
como opción se le pueda pasar un array de datos, pero no tiene por que
ser obligatorio.
Yo necesito que en determinado momento se produzca un Open del
MemDataSet, y en otro momento, se le añadan valores, pero si no he
añadido nada desde el Open, desde el AddNew - Update no funciona.
Esta tarde subo un ejemplo para que se vea más claro.
Saludos
Alf+.
El 29/11/2010 9:03, José Alfonso Suárez Moreno escribió:
> Gracias Ramon y Bingen,
>
> Ninguno de los dos soluciones que me aportáis me vale. El MemDataSet se
> crea perfertamente, mi cuestión es dejar la estructura del MemDataSet
> creada SIN pasarle datos ninguno para posteriormente, el determinada
> parte del programa, abrirlo y meterle datos, pero SIN tener que pasarle
> datos desde el método Open.
>
> Saludos,
>
> Alf+.
>
> El 28/11/2010 23:13, José Alfonso Suárez Moreno escribió:
>> Hola,
>>
>> Necesito crear MemDataSet vacío al que en determinado momento le tengo
>> que añadir datos.
>>
>> Después de crearlo de esta forma:
>>
>> ::oParaP := TMemDataSet():Create()
>> WITH OBJECT ::oParaP
>> WITH OBJECT :AddField( "Nombre" )
>> :cType := "C"
>> :nLen := 25
>> END WITH
>> WITH OBJECT :AddField( "Telefono" )
>> :cType := "C"
>> :nLen := 12
>> END WITH
>> END WITH
>>
>> intento añadir datos usando
>>
>> WITH OBJECT ::oParaP
>> :Open()
>> IF :AddNew()
>> :Nombre := "Pepe"
>> :Telefono := "123456789"
>> :UpDate()
>> END IF
>> :Close()
>> END WITH
>>
>> Compruebo que los datos NO se han añadido. Para que funcione, tengo que
>> inventarme esto:
>>
>> WITH OBJECT ::oParaP
>> :Open( { { "", "" } } ) // Al abrir pongo un registro fantasma.
>> IF :AddNew()
>> :Nombre := "Pepe"
>> :Telefono := "123456789"
>> :UpDate()
>> END IF
>> :GoTop() // Despues de añadir y guardar el registro, voy al primero
>> :Delete() // y lo borro
>> :Close()
>> END WITH
>>
>> Esto es un apaño que me vale en algunos casos pero no para todos.
>>
>> No se si este funcionamiento es el correcto, pero necesito poder crear
>> un MemDataSet vacío para añadir cuando lo requiera el programa.
>>
>> Gracias y un saludo,
>>
>> Alf+.
>
TMemDataSet Vacio
Hola!
Yo también me he encontrado con el mismo problema, mi solución fue inicializarlo con un array bidimensional de tantas columnas como necesito por una fila.
Como lo muestro en un browse , aparece como si se hubiera insertado una nueva fila , la cual se edita luego al añadir nuevas no hay problema.
Aquí un fragmento de código :
datos = array(1,11)
::oDSMem:Open(datos,NomCabecera)
Yo también me he encontrado con el mismo problema, mi solución fue inicializarlo con un array bidimensional de tantas columnas como necesito por una fila.
Como lo muestro en un browse , aparece como si se hubiera insertado una nueva fila , la cual se edita luego al añadir nuevas no hay problema.
Aquí un fragmento de código :
datos = array(1,11)
::oDSMem:Open(datos,NomCabecera)
-
- Mensajes: 420
- Registrado: Sab Ago 16, 2008 9:06 pm
TMemDataSet Vacio
Hola Artur,
Gracias por responder.
Yo también he llegado a esa solución, pero no me vale. En el momento que
hago el Open no tengo datos y cuando voy a añadir no puedo hacer Open.
Además, si por cualquier motivo quiero averiguar si el MemDataSet esta
vacío usando EoF(), al añadir una fila al hacer Open(), ya no funciona bien.
Saludos
Alf+.
El 29/11/2010 17:26, artur escribió:
> Hola!
>
> Yo también me he encontrado con el mismo problema, mi
> solución fue inicializarlo con un array bidimensional de
> tantas columnas como necesito por una fila.
> Como lo muestro en un browse , aparece como si se hubiera
> insertado una nueva fila , la cual se edita luego al añadir
> nuevas no hay problema.
> Aquí un fragmento de código :
>
> datos = array(1,11)
> ::oDSMem:Open(datos,NomCabecera)
Gracias por responder.
Yo también he llegado a esa solución, pero no me vale. En el momento que
hago el Open no tengo datos y cuando voy a añadir no puedo hacer Open.
Además, si por cualquier motivo quiero averiguar si el MemDataSet esta
vacío usando EoF(), al añadir una fila al hacer Open(), ya no funciona bien.
Saludos
Alf+.
El 29/11/2010 17:26, artur escribió:
> Hola!
>
> Yo también me he encontrado con el mismo problema, mi
> solución fue inicializarlo con un array bidimensional de
> tantas columnas como necesito por una fila.
> Como lo muestro en un browse , aparece como si se hubiera
> insertado una nueva fila , la cual se edita luego al añadir
> nuevas no hay problema.
> Aquí un fragmento de código :
>
> datos = array(1,11)
> ::oDSMem:Open(datos,NomCabecera)