Busqueda SQL
-
- Posts: 159
- Joined: Fri Nov 18, 2005 7:34 pm
Busqueda SQL
Para ingresar un registro en una Tabla SQL hago:
oRecordSet:Addnew()
oRecordSet:Fields("Bill_num"):value := alltrim(Var1)
oRecordSet:Update()
Para borrar:
oRecordSet:Delete()
oRecordSet:Requery()
Como seria para buscar la Variable xRFC ??
oRecordSet:Find( xRfc, If( lContinue, 1, 0 ) ) //Asi marca error
Gracias
oRecordSet:Addnew()
oRecordSet:Fields("Bill_num"):value := alltrim(Var1)
oRecordSet:Update()
Para borrar:
oRecordSet:Delete()
oRecordSet:Requery()
Como seria para buscar la Variable xRFC ??
oRecordSet:Find( xRfc, If( lContinue, 1, 0 ) ) //Asi marca error
Gracias
Re: Busqueda SQL
Servicomver:
Con ADO puro
CLI_CLI es el campo en el recordset y nIrA es el número a localizar
Por el lContinue supongo que quieres que te muestre todos los iguales,
si es así debes utilizar FILTER
Saludos
Con ADO puro
Code: Select all
oRsCli:Find("CLI_CLI = " + "'" + STR(nIrA,5,0) + "'" )
Por el lContinue supongo que quieres que te muestre todos los iguales,
si es así debes utilizar FILTER
Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
-
- Posts: 159
- Joined: Fri Nov 18, 2005 7:34 pm
Re: Busqueda SQL
Gracias, lo intentare asi, saludos
- Rick Lipkin
- Posts: 2397
- Joined: Fri Oct 07, 2005 1:50 pm
- Location: Columbia, South Carolina USA
Re: Busqueda SQL
Generally when you use the oRs:Find ... you have to re-wind the record pointer to the top of the table .. oRs:MoveFirst(), then issue your oRs:Find... there is no need to issue a re-query if you are using the same recordset for your updates and deletions..
Rick Lipkin
Rick Lipkin
Re: Busqueda SQL
Servicomver:
Ya entrados en gastos, te recomiendo que no uses la función oRs:AddNew() + oRs:Update(), mas adelante
te puedes encontrar con pequeños problemas, en su lugar utiliza los comandos INSERT INTO y UPDATE.
Saludos
Ya entrados en gastos, te recomiendo que no uses la función oRs:AddNew() + oRs:Update(), mas adelante
te puedes encontrar con pequeños problemas, en su lugar utiliza los comandos INSERT INTO y UPDATE.
Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
-
- Posts: 159
- Joined: Fri Nov 18, 2005 7:34 pm
Re: Busqueda SQL
Gracias por su ayuda, estoy iniciando con la programación con sql, una pregunta:
Lo que intento hacer es buscar en una tabla un Valor de una variable XRFC
Como obtengo el valor de la respuesta ?
Para saber si la encontró o no ?
Si mi variable es de 14 Caracteres y en la tabla de SQL tiene 255 tengo que hacer algun TRIM al campo SQL ?
Gracias, espero haberme explicado
Lo que intento hacer es buscar en una tabla un Valor de una variable XRFC
Como obtengo el valor de la respuesta ?
Para saber si la encontró o no ?
Si mi variable es de 14 Caracteres y en la tabla de SQL tiene 255 tengo que hacer algun TRIM al campo SQL ?
Gracias, espero haberme explicado
Re: Busqueda SQL
Servicomver:
Como decía Jack el destripador, vamos por partes:
Primero, vamos a diferenciar entre Tabla y RecordSet, la tabla la tienes en el servidor
mientras que el recordset es una copia de la tabla que ya tienes en tu PC.
Para acceder a una tabla (Servidor) necesariamente tienes que usar el comando SELECT
mismo que te deja un RecordSet (copia) en tu PC, en el comando select puedes usar el
método WHERE para filtrar la tabla y que el recordset solo tenga el resultado del filtro.
Ahora si ya tienes el recordset, puedes usar las funciones oRsFind() o oRsFilter() pero
insisto es ya sobre el recordset.
Saludos
Como decía Jack el destripador, vamos por partes:
Primero, vamos a diferenciar entre Tabla y RecordSet, la tabla la tienes en el servidor
mientras que el recordset es una copia de la tabla que ya tienes en tu PC.
Para acceder a una tabla (Servidor) necesariamente tienes que usar el comando SELECT
mismo que te deja un RecordSet (copia) en tu PC, en el comando select puedes usar el
método WHERE para filtrar la tabla y que el recordset solo tenga el resultado del filtro.
Ahora si ya tienes el recordset, puedes usar las funciones oRsFind() o oRsFilter() pero
insisto es ya sobre el recordset.
Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
-
- Posts: 159
- Joined: Fri Nov 18, 2005 7:34 pm
Re: Busqueda SQL
Armando, muchisimas gracias por tu tiempo, te mando lo que estoy tratando de hacer...(Si logré conectarme, añadir y eliminar datos )
oCone :=tOleAuto():new("ADODB.connection")
oCone:Open( "DRIVER={MySQL ODBC 3.51 Driver};" + ;
"server=" + cServer + ;
";database=" + cDatabase + ;
";uid=" + cUser + ;
";port=" + cPort + ;
";pwd=" + cPass )
xRfc:="XAXX010101XXX"
If Empty(oCone)
MsgAlert(" No se pudo establecer la conexion con la Base de Datos..","Atencion")
Return(Nil)
Else
MsgAlert(" Se establecio la Conexion Con La Base De Datos..","Atencion")
oRecordSet := TOleAuto():New("adodb.recordset")
oRecordSet:ActiveConnection(oCone)
oRecordSet:Source := "Select * from clientes Order by RFC"
oRecordSet:CursorType := 1 // opendkeyset
oRecordSet:CursorLocation := 3 // local cache
oRecordSet:LockType := 3 // lockoportunistic
oRecordSet:Open()
oRecordSet:MoveFirst()
oRecordSet:Find("RFC = " + "'" + xRfc + "'" )
//Aqui es donde necesito saber si encontró xRfc o no
// y Luego tomar el valor encontrado (Nombre, Domicilio, etc)
Endif
oCone :=tOleAuto():new("ADODB.connection")
oCone:Open( "DRIVER={MySQL ODBC 3.51 Driver};" + ;
"server=" + cServer + ;
";database=" + cDatabase + ;
";uid=" + cUser + ;
";port=" + cPort + ;
";pwd=" + cPass )
xRfc:="XAXX010101XXX"
If Empty(oCone)
MsgAlert(" No se pudo establecer la conexion con la Base de Datos..","Atencion")
Return(Nil)
Else
MsgAlert(" Se establecio la Conexion Con La Base De Datos..","Atencion")
oRecordSet := TOleAuto():New("adodb.recordset")
oRecordSet:ActiveConnection(oCone)
oRecordSet:Source := "Select * from clientes Order by RFC"
oRecordSet:CursorType := 1 // opendkeyset
oRecordSet:CursorLocation := 3 // local cache
oRecordSet:LockType := 3 // lockoportunistic
oRecordSet:Open()
oRecordSet:MoveFirst()
oRecordSet:Find("RFC = " + "'" + xRfc + "'" )
//Aqui es donde necesito saber si encontró xRfc o no
// y Luego tomar el valor encontrado (Nombre, Domicilio, etc)
Endif
Re: Busqueda SQL
Victor:
Ahí la llevas pero vas picando chueco, dame un correo y te envío algo.
Saludos
Ahí la llevas pero vas picando chueco, dame un correo y te envío algo.
Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
-
- Posts: 159
- Joined: Fri Nov 18, 2005 7:34 pm
- nageswaragunupudi
- Posts: 8017
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Busqueda SQL
Safest way to delete and reposition on next record in the sorted order:
If you are browsing the recorset with XBrowse, then simply call
This takes care of all issues.
Code: Select all
WITH OBJECT oRs
if :RecordCount() > 0
n := :AbsolutePosition
TRY
:Delete()
CATCH
:CancelUpdate()
:ReQuery()
END
if :RecordCount() > 0
:AbsolutePosition := Max( 1, Min( n, :RecordCount() ) )
endif
endif
END
Code: Select all
oBrw:Delete()
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
- nageswaragunupudi
- Posts: 8017
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Busqueda SQL
Code: Select all
oCn := FW_OpenAdoConnection( { "MYSQL", cServer, cDatabase, cUser, cPassword }, .t. )
if oCn == nil
? "connection fail"
return nil
endif
xRfc :="XAXX010101XXX"
// for exact seek
cSeek := "rfc='" + xRfc + "'"
// for soft seek
cSeek := "rfc like '" + xRfc + "*'"
oRs := FW_OpenRecordSet( oCn, "select * from clients order by rfc" )
oRs:Find( cSeek, 0, 1, 1 )
if oRs:Eof()
? "Not Found"
oRs:MoveFirst()
else
? oRs:Fields( "Name" ):Value, oRs:Fields( "Address" ):Value
endif
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
- nageswaragunupudi
- Posts: 8017
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Busqueda SQL
I have been using ADO from the time it was released by Microsoft. Used with Oracle, MsSql, MySql, Access, Dbf, Foxpro, etc.Armando wrote:Servicomver:
Ya entrados en gastos, te recomiendo que no uses la función oRs:AddNew() + oRs:Update(), mas adelante
te puedes encontrar con pequeños problemas, en su lugar utiliza los comandos INSERT INTO y UPDATE.
Saludos
I never faced any issues with AddNew().
I can say that Update() and AddNew() methods are as robust as UPDATE and INSERT commands.
In addition, it is advisable to use Update() and AddNew() but not direct UPDATE / INSERT commands to avoid the need to Requery() everytime. Note: Requery() puts lot of strain on server and network traffic. Good programming practice is to avoid requery() unless essential.
One commonly used method is:
Code: Select all
oRs:AddNew()
// assign field values
oRs:Update()
Code: Select all
oRs:AddNew( ArrayOfFieldNamesOrNumbers, ArrayOfValues )
Note: Always use these methods within TRY/CATCH.
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Re: Busqueda SQL
Mr. Rao:
I mean with DB2 data base there are problems.
Regards
I mean with DB2 data base there are problems.
Regards
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Re: Busqueda SQL
Hola que tal, Aprovechando esta consulta y aplicando los ejemplos del foro, a que se debe que teniendo:
nCuenta:=105874
oRs:Source := "Select * from ejemplo WHERE Socio = + '&nCuenta' Order by Socio"
nFind:=(oRs:RecordCount) //para saber si esta o no el numero de cuenta del socio
Asi me pone como resultado: 1 (si lo encuentra, ya que es código único)
Pero se tomo el dato de un campo de una base de datos SOCIOS ALIAS aSocios
nCuenta:=aSocios->Cuenta
oRs:Source := "Select * from ejemplo WHERE Socio = + '&nCuenta' Order by Socio"
nFind:=(oRs:RecordCount) //para saber si esta o no el numero de cuenta del socio
(Claro, seleccionando el mismo socio con número de cuenta: 105874)
El resultado es: 0 (no lo encuentra)
A que se debe ?
nCuenta:=105874
oRs:Source := "Select * from ejemplo WHERE Socio = + '&nCuenta' Order by Socio"
nFind:=(oRs:RecordCount) //para saber si esta o no el numero de cuenta del socio
Asi me pone como resultado: 1 (si lo encuentra, ya que es código único)
Pero se tomo el dato de un campo de una base de datos SOCIOS ALIAS aSocios
nCuenta:=aSocios->Cuenta
oRs:Source := "Select * from ejemplo WHERE Socio = + '&nCuenta' Order by Socio"
nFind:=(oRs:RecordCount) //para saber si esta o no el numero de cuenta del socio
(Claro, seleccionando el mismo socio con número de cuenta: 105874)
El resultado es: 0 (no lo encuentra)
A que se debe ?