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
Xevi
Posts: 1706
Joined: Thu Sep 08, 2005 12:58 pm

Novato en MySQL

Postby Xevi » Thu Jun 28, 2007 5:24 pm

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
Posts: 364
Joined: Thu Jul 02, 2009 1:09 pm

Novato en MySQL

Postby miguel » Thu Jun 28, 2007 5:57 pm

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
Posts: 1706
Joined: Thu Sep 08, 2005 12:58 pm

Novato en MySQL

Postby Xevi » Thu Jun 28, 2007 8:20 pm

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:4683da73@ozsrv2.ozlan.local...
> 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
Posts: 1706
Joined: Thu Sep 08, 2005 12:58 pm

Novato en MySQL

Postby Xevi » Thu Jun 28, 2007 8:54 pm

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$1@ozsrv2.ozlan.local...
> 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:4683da73@ozsrv2.ozlan.local...
>> 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
Posts: 1831
Joined: Tue Oct 11, 2005 9:53 am

Novato en MySQL

Postby zeasoftware » Thu Jun 28, 2007 10:14 pm

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
Posts: 1633
Joined: Fri Oct 14, 2005 10:56 pm

Novato en MySQL

Postby jose.luis » Fri Jun 29, 2007 9:15 am

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$1@ozsrv2.ozlan.local...
> 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:4683da73@ozsrv2.ozlan.local...
>> 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
Posts: 70
Joined: Mon Oct 11, 2004 4:44 pm

Novato en MySQL

Postby Thefull » Fri Jun 29, 2007 9:24 am

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

Novato en MySQL

Postby Thefull » Fri Jun 29, 2007 9:26 am

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
Posts: 70
Joined: Mon Oct 11, 2004 4:44 pm

Novato en MySQL

Postby Thefull » Fri Jun 29, 2007 9:29 am

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

Novato en MySQL

Postby Pedro Amaro » Fri Jun 29, 2007 9:45 am

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
Posts: 1706
Joined: Thu Sep 08, 2005 12:58 pm

Novato en MySQL

Postby Xevi » Fri Jun 29, 2007 10:04 am

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

Novato en MySQL

Postby zeasoftware » Fri Jun 29, 2007 11:36 am

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

Novato en MySQL

Postby Thefull » Fri Jun 29, 2007 11:59 am

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

Return to “SQL”