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.

Novato en MySQL

SQL databases
Responder
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Novato en MySQL

Mensaje por Xevi »

Bien, pus casi que me decido a hacer una pequena aplicación que me han
encargado en MySQL, por lo que necesito de vuestra ayuda...
La consulta mediante SELECT... creo que lo voy entendiendo, ahora bien...
Necesito borrar TODOS los registros de una tabla... para ello he probado ...
WITH OBJECT oAdoDataSource1 := TAdoDataSource():New()
:cConnect := "ODBC;DATABASE=bristol2000;DRIVER=MySQL ODBC 3.51
Driver;PORT=3306;SERVER=xevicomas.dyndns.org;UID=Usuario;PWD =Password "
:lConnected := .T.
:Create()
END
WITH OBJECT oSQLQuery1 := TSQLQuery():New()
:oDataSource := oAdoDataSource1
:cProcess := "GENERAL"
:cSelect := "DELETE * FROM perfils"
:lOpen := .T.
:Create()
END
Pero como suponía NO ME FUNCIONA.
Gracias.
Un Saludo,
Xevi.
miguel
Mensajes: 364
Registrado: Jue Jul 02, 2009 1:09 pm

Novato en MySQL

Mensaje por miguel »

Hola,
oAdoDataSource1:execute( 'DELETE FROM perfils')
Borrara todas las lineas de la tabla perfils
oAdoDataSource1:execute( 'DELETE FROM perfils WHERE columna = valor')
Borrara solamente las lineas que coincidad con la clausula WHERE
Yo lo haria asi
WITH OBJECT oAdoDatasource
:BeginTrans()
if :execute( 'DELETE FROM perfils' )
:CommitTrans()
else
:RollBackTrans()
endif
ENDWITH
Fijate que lo hago con el Datasource y no con TsqlQuery
Si te apetece hacerlo con TSqlQuery, pues nada un bucle como si de un
dbf se tratara.
¿Veamos que dicen los maestros de SQL?
Saludos. Miguel A. Torrellas
Xevi escribió:
> Bien, pus casi que me decido a hacer una pequena aplicación que me han
> encargado en MySQL, por lo que necesito de vuestra ayuda...
>
> La consulta mediante SELECT... creo que lo voy entendiendo, ahora bien...
>
> Necesito borrar TODOS los registros de una tabla... para ello he probado ...
>
> WITH OBJECT oAdoDataSource1 := TAdoDataSource():New()
> :cConnect := "ODBC;DATABASE=bristol2000;DRIVER=MySQL ODBC 3.51
> Driver;PORT=3306;SERVER=xevicomas.dyndns.org;UID=Usuario;PWD =Password "
> :lConnected := .T.
> :Create()
> END
>
> WITH OBJECT oSQLQuery1 := TSQLQuery():New()
> :oDataSource := oAdoDataSource1
> :cProcess := "GENERAL"
> :cSelect := "DELETE * FROM perfils"
> :lOpen := .T.
> :Create()
> END
>
>
> Pero como suponí­a NO ME FUNCIONA.
>
> Gracias.
>
> Un Saludo,
> Xevi.
>
>
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Novato en MySQL

Mensaje por Xevi »

Gracias, Miguel.
Funciona perfecto.
Ahora... para añadir registros desde un Array...
¿debo crear un bucle???
For n:=1 to Len(MiArray)
....
....¿Que instrucción necesito???
Next
¿Puedo hacerlo directamente con un APPEND FROM... ???
Un Saludo,
Xevi.
"Miguel A. Torrellas" <miguel@torrellas.net> escribió en el mensaje
news:[email=4683da73@ozsrv2.ozlan.local...]4683da73@ozsrv2.ozlan.local...[/email]
> Hola,
>
> oAdoDataSource1:execute( 'DELETE FROM perfils')
>
> Borrara todas las lineas de la tabla perfils
>
> oAdoDataSource1:execute( 'DELETE FROM perfils WHERE columna = valor')
>
> Borrara solamente las lineas que coincidad con la clausula WHERE
>
> Yo lo haria asi
>
> WITH OBJECT oAdoDatasource
> :BeginTrans()
> if :execute( 'DELETE FROM perfils' )
> :CommitTrans()
> else
> :RollBackTrans()
> endif
> ENDWITH
>
>
> Fijate que lo hago con el Datasource y no con TsqlQuery
>
> Si te apetece hacerlo con TSqlQuery, pues nada un bucle como si de un dbf
> se tratara.
>
> ¿Veamos que dicen los maestros de SQL?
>
> Saludos. Miguel A. Torrellas
>
> Xevi escribió:
>> Bien, pus casi que me decido a hacer una pequena aplicación que me han
>> encargado en MySQL, por lo que necesito de vuestra ayuda...
>>
>> La consulta mediante SELECT... creo que lo voy entendiendo, ahora bien...
>>
>> Necesito borrar TODOS los registros de una tabla... para ello he probado
>> ...
>>
>> WITH OBJECT oAdoDataSource1 := TAdoDataSource():New()
>> :cConnect := "ODBC;DATABASE=bristol2000;DRIVER=MySQL ODBC 3.51
>> Driver;PORT=3306;SERVER=xevicomas.dyndns.org;UID=Usuario;PWD =Password "
>> :lConnected := .T.
>> :Create()
>> END
>>
>> WITH OBJECT oSQLQuery1 := TSQLQuery():New()
>> :oDataSource := oAdoDataSource1
>> :cProcess := "GENERAL"
>> :cSelect := "DELETE * FROM perfils"
>> :lOpen := .T.
>> :Create()
>> END
>>
>>
>> Pero como suponía NO ME FUNCIONA.
>>
>> Gracias.
>>
>> Un Saludo,
>> Xevi.
>>
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Novato en MySQL

Mensaje por Xevi »

Hecho con...
WITH OBJECT ::oArrayBrowse1
For n:=1 to Len( :aArrayData )
oAdoDataSource1:Execute( "INSERT perfils SET MIDES='"+
:aArrayData[n,1] +"',"+;
"C4 = "+
Str(:aArrayData[n,2]) +","+;
"C3 = "+
Str(:aArrayData[n,3]) +","+;
"C2 = "+
Str(:aArrayData[n,4]) +","+;
"C1 = "+
Str(:aArrayData[n,5]) +","+;
"P4 = "+
Str(:aArrayData[n,6]) +","+;
"P3 = "+
Str(:aArrayData[n,7]) +","+;
"P2 = "+
Str(:aArrayData[n,8]) +","+;
"P1 = "+
Str(:aArrayData[n,9]) +","+;
"M2TL = "+
Str(:aArrayData[n,10]) +","+;
"KGM = "+
Str(:aArrayData[n,11]) )
Next
Es esa una forma correcta???
Un Saludo,
Xevi.
"Xevi" <xevicomas@gmail.com> escribió en el mensaje
news:4683fbb5$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Gracias, Miguel.
> Funciona perfecto.
>
> Ahora... para añadir registros desde un Array...
> ¿debo crear un bucle???
> For n:=1 to Len(MiArray)
> ...
> ...¿Que instrucción necesito???
> Next
>
>
> ¿Puedo hacerlo directamente con un APPEND FROM... ???
>
> Un Saludo,
> Xevi.
>
>
> "Miguel A. Torrellas" <miguel@torrellas.net> escribió en el mensaje
> news:[email=4683da73@ozsrv2.ozlan.local...]4683da73@ozsrv2.ozlan.local...[/email]
>> Hola,
>>
>> oAdoDataSource1:execute( 'DELETE FROM perfils')
>>
>> Borrara todas las lineas de la tabla perfils
>>
>> oAdoDataSource1:execute( 'DELETE FROM perfils WHERE columna = valor')
>>
>> Borrara solamente las lineas que coincidad con la clausula WHERE
>>
>> Yo lo haria asi
>>
>> WITH OBJECT oAdoDatasource
>> :BeginTrans()
>> if :execute( 'DELETE FROM perfils' )
>> :CommitTrans()
>> else
>> :RollBackTrans()
>> endif
>> ENDWITH
>>
>>
>> Fijate que lo hago con el Datasource y no con TsqlQuery
>>
>> Si te apetece hacerlo con TSqlQuery, pues nada un bucle como si de un dbf
>> se tratara.
>>
>> ¿Veamos que dicen los maestros de SQL?
>>
>> Saludos. Miguel A. Torrellas
>>
>> Xevi escribió:
>>> Bien, pus casi que me decido a hacer una pequena aplicación que me han
>>> encargado en MySQL, por lo que necesito de vuestra ayuda...
>>>
>>> La consulta mediante SELECT... creo que lo voy entendiendo, ahora
>>> bien...
>>>
>>> Necesito borrar TODOS los registros de una tabla... para ello he probado
>>> ...
>>>
>>> WITH OBJECT oAdoDataSource1 := TAdoDataSource():New()
>>> :cConnect := "ODBC;DATABASE=bristol2000;DRIVER=MySQL ODBC 3.51
>>> Driver;PORT=3306;SERVER=xevicomas.dyndns.org;UID=Usuario;PWD =Password "
>>> :lConnected := .T.
>>> :Create()
>>> END
>>>
>>> WITH OBJECT oSQLQuery1 := TSQLQuery():New()
>>> :oDataSource := oAdoDataSource1
>>> :cProcess := "GENERAL"
>>> :cSelect := "DELETE * FROM perfils"
>>> :lOpen := .T.
>>> :Create()
>>> END
>>>
>>>
>>> Pero como suponía NO ME FUNCIONA.
>>>
>>> Gracias.
>>>
>>> Un Saludo,
>>> Xevi.
>>>
>
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Novato en MySQL

Mensaje por zeasoftware »

Mi experiencia es poca, e igual estoy haciendo pruebas, pero, lo hice asi:
cSelect := "INSERT perfils VALUES ("
WITH OBJECT ::oArrayBrowse1
For n:=1 to Len( :aArrayData )
For l := 1 To Len(:aArrayData[n])
cSelect += "'" + :aArrayData[n, l] + "',"
Next
Next
cSelect := SubStr(cSelect, 1, Len(cSelect)-1) + ")"
oAdoDataSource1:Execute( cSelect )
Esto tomando en cuenta que todos los datos son cadenas, pero si son de distintos tipos hay que validarlos.
Si gustas posteo el bloque de validacion, y si algun guru lo mejora, mejor, asi igual yo aprendo mas.
Saludos.
Ramón Zea
--
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Novato en MySQL

Mensaje por jose.luis »

Xevi,
Otra manera puede ser crear un recordset vacío e ir añadiendo registros.
Saludos,
José Luis Capel
"Xevi" <xevicomas@gmail.com> escribió en el mensaje
news:4683fbb5$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Gracias, Miguel.
> Funciona perfecto.
>
> Ahora... para añadir registros desde un Array...
> ¿debo crear un bucle???
> For n:=1 to Len(MiArray)
> ...
> ...¿Que instrucción necesito???
> Next
>
>
> ¿Puedo hacerlo directamente con un APPEND FROM... ???
>
> Un Saludo,
> Xevi.
>
>
> "Miguel A. Torrellas" <miguel@torrellas.net> escribió en el mensaje
> news:[email=4683da73@ozsrv2.ozlan.local...]4683da73@ozsrv2.ozlan.local...[/email]
>> Hola,
>>
>> oAdoDataSource1:execute( 'DELETE FROM perfils')
>>
>> Borrara todas las lineas de la tabla perfils
>>
>> oAdoDataSource1:execute( 'DELETE FROM perfils WHERE columna = valor')
>>
>> Borrara solamente las lineas que coincidad con la clausula WHERE
>>
>> Yo lo haria asi
>>
>> WITH OBJECT oAdoDatasource
>> :BeginTrans()
>> if :execute( 'DELETE FROM perfils' )
>> :CommitTrans()
>> else
>> :RollBackTrans()
>> endif
>> ENDWITH
>>
>>
>> Fijate que lo hago con el Datasource y no con TsqlQuery
>>
>> Si te apetece hacerlo con TSqlQuery, pues nada un bucle como si de un dbf
>> se tratara.
>>
>> ¿Veamos que dicen los maestros de SQL?
>>
>> Saludos. Miguel A. Torrellas
>>
>> Xevi escribió:
>>> Bien, pus casi que me decido a hacer una pequena aplicación que me han
>>> encargado en MySQL, por lo que necesito de vuestra ayuda...
>>>
>>> La consulta mediante SELECT... creo que lo voy entendiendo, ahora
>>> bien...
>>>
>>> Necesito borrar TODOS los registros de una tabla... para ello he probado
>>> ...
>>>
>>> WITH OBJECT oAdoDataSource1 := TAdoDataSource():New()
>>> :cConnect := "ODBC;DATABASE=bristol2000;DRIVER=MySQL ODBC 3.51
>>> Driver;PORT=3306;SERVER=xevicomas.dyndns.org;UID=Usuario;PWD =Password "
>>> :lConnected := .T.
>>> :Create()
>>> END
>>>
>>> WITH OBJECT oSQLQuery1 := TSQLQuery():New()
>>> :oDataSource := oAdoDataSource1
>>> :cProcess := "GENERAL"
>>> :cSelect := "DELETE * FROM perfils"
>>> :lOpen := .T.
>>> :Create()
>>> END
>>>
>>>
>>> Pero como suponía NO ME FUNCIONA.
>>>
>>> Gracias.
>>>
>>> Un Saludo,
>>> Xevi.
>>>
>
Thefull
Mensajes: 70
Registrado: Lun Oct 11, 2004 4:44 pm

Novato en MySQL

Mensaje por Thefull »

Mi duda
> cSelect := SubStr(cSelect, 1, Len(cSelect)-1) + ")"
>
No es lo mismo que ;
cSelect += ")"
?
Saludos
Rafa Carmona
Thefull
Mensajes: 70
Registrado: Lun Oct 11, 2004 4:44 pm

Novato en MySQL

Mensaje por Thefull »

Xevi, te recomiendo que compres un libro sobre Mysql.
Si quieres miro en casa uno muy bueno, por que va desde aprender
las sintaxis , pasando por la implementacion de las funciones en C,
y hasta la Administracion del Servidor, vamos todas las etapas posibles
Eso si, es un tocho de cuidado y un pelin caro, 60 Euros, pero es
el mejor que encontré.
Saludos
Rafa Carmona
Thefull
Mensajes: 70
Registrado: Lun Oct 11, 2004 4:44 pm

Novato en MySQL

Mensaje por Thefull »

Este esta muy bien para aprender
http://mysql.conclase.net/
Saludos
Rafa Carmona
Pedro Amaro
Mensajes: 157
Registrado: Jue May 18, 2006 5:10 pm

Novato en MySQL

Mensaje por Pedro Amaro »

En la reunion de Sevilla la semana pasada se hojeo un libro de Anaya
Multimedia, "Curso de SQL", que tenia muy buena pinta ya que planteaba casos
concretos con su solucion para varios SQL (MySQL, SQL Server, etc...)
Este es el link de AGAPEA para el libro
http://www.agapea.com/Curso-de-SQL-n597761i.htm
Un saludo
Pedro Amaro
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Novato en MySQL

Mensaje por Xevi »

Rafa,
Gracias.
Un Saludo,
Xevi.
"thefull" <thefull@wanadoo.es> escribió en el mensaje
news:[email=4684b4c2@ozsrv2.ozlan.local...]4684b4c2@ozsrv2.ozlan.local...[/email]
> Este esta muy bien para aprender
> http://mysql.conclase.net/
>
> Saludos
> Rafa Carmona
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

Novato en MySQL

Mensaje por zeasoftware »

No, por que la cadena termina con una coma, la cual tengo que elliminar.
Saludos
Thefull
Mensajes: 70
Registrado: Lun Oct 11, 2004 4:44 pm

Novato en MySQL

Mensaje por Thefull »

Ramon Zea escribió:
> No, por que la cadena termina con una coma, la cual tengo que elliminar.
>
Correcto, no vi la coma
Saludos
Responder