Página 1 de 1

Novato en MySQL

Publicado: Jue Jun 28, 2007 5:24 pm
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.

Novato en MySQL

Publicado: Jue Jun 28, 2007 5:57 pm
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.
>
>

Novato en MySQL

Publicado: Jue Jun 28, 2007 8:20 pm
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.
>>

Novato en MySQL

Publicado: Jue Jun 28, 2007 8:54 pm
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.
>>>
>

Novato en MySQL

Publicado: Jue Jun 28, 2007 10:14 pm
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
--

Novato en MySQL

Publicado: Vie Jun 29, 2007 9:15 am
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.
>>>
>

Novato en MySQL

Publicado: Vie Jun 29, 2007 9:24 am
por Thefull
Mi duda
> cSelect := SubStr(cSelect, 1, Len(cSelect)-1) + ")"
>
No es lo mismo que ;
cSelect += ")"
?
Saludos
Rafa Carmona

Novato en MySQL

Publicado: Vie Jun 29, 2007 9:26 am
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

Novato en MySQL

Publicado: Vie Jun 29, 2007 9:29 am
por Thefull
Este esta muy bien para aprender
http://mysql.conclase.net/
Saludos
Rafa Carmona

Novato en MySQL

Publicado: Vie Jun 29, 2007 9:45 am
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

Novato en MySQL

Publicado: Vie Jun 29, 2007 10:04 am
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

Novato en MySQL

Publicado: Vie Jun 29, 2007 11:36 am
por zeasoftware
No, por que la cadena termina con una coma, la cual tengo que elliminar.
Saludos

Novato en MySQL

Publicado: Vie Jun 29, 2007 11:59 am
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