Page 1 of 1

cambio de dbf a mysql, nuevo y he leido pero me faltan cosas

Posted: Thu Jan 20, 2011 3:12 pm
by norte_67
Estimados amigos, mis saludos y mis mejores deseos para este año, tengo la
siguiente consulta, estoy con FWH 8.12, bcc55, xharbour, workshop, y he trabajado
siempre con DBF y CDX, ahora estoy haciendo el cambio a aplicaciones cliente-servidor, utilizando Xbrowse y ADO, el tema es que he leido en el foro
en la web de armando estrada, donde willy quintana, y de otros colaboradores y
gente que ha pasado por este tema de cambiar la mentalidad de dbf a sql, es fuerte el cambio y la visión del mundo al respecto, tambie vi la clase Tdolphin, pero ni se como instalarla y se supone que es facil y de seguro lo es, quizas los años no nos dejan la frescura de ir por el mundo investigando y probando como cuando joven, el tema que me complica es el siguiente:

tengo una tabla (bases de datos), que debe estar ordenada por el campo codigo, nombre, ciudad, en donde codigo debe ser unico, pero nombre y ciudad se pueden repetir, asi que creo una opcion que me los ordene por esos 3 paramentros, pero como hago para que solo codigo sea clave primaria y pueda
hacer algo como seek como en clipper y ver si se repite o no el campo e indicar
que ya existe solo para modificarlo si fuera el caso.

BASE
CODIGO - NOMBRE - CIUDAD

necesito con ADO, hacer esto pero no lo veo, se que debo definir la tabla con esas cualidades, pero despues como la llamo..

y la ultimoa, debo usar Char(X), en vez de Varchar(X), obvio segun algunos ya que varchar me va cambiando el tamaño del campo segun entre el dato, y con char se mantendria de forma permanente.. estoy bien..

Gracias por repsonder, pero son dudas que saltan,

Atte.

Re: cambio de dbf a mysql, nuevo y he leido pero me faltan cosas

Posted: Thu Jan 20, 2011 3:38 pm
by jbrita
don Luis el Programa q le envie hace eso

FUNCTION CreaTablas(oConexion)
*------------------------------
oConexion:Execute("CREATE TABLE IF NOT EXISTS clientes ( " + ; //Verifica si no existe se crea o si no
"codigo varchar(13) NOT NULL ," + ;
"nombre varchar(70) default ' ' ," + ;
"ciudad varchar(70) default ' ' ," + ;
"PRIMARY KEY (codigo)) TYPE=InnoDB" ) //Clave primaria

RETURN .T.
Luego para Ordernar en un Browse basta con hacer

oCliente:=TOleAuto():New("ADODB.Recordset")
oCliente:CursorLocation:= adUseClient
oCliente:Open("SELECT * FROM clientes ORDER BY codigo ",oConexion,CursorType,LockType )
ahilo ordena y listo

y para buscar por codigo basta con:

xCodigo:=1010
oCliente:=TOleAuto():New("ADODB.Recordset")
oCliente:CursorLocation:= adUseClient
oCliente:Open("SELECT * FROM clientes WHERE codigo='"+AllTrim(Str(xCodigo))+"',oConexion,CursorType,LockType )
If (oCliente:RecordCount) == 0
No Existe
Else
Si Existe
Endif

Don Luis Cuando va a crear un codigo antes tiene q ver si existe




Saludos

Re: cambio de dbf a mysql, nuevo y he leido pero me faltan cosas

Posted: Fri Jan 21, 2011 6:29 am
by Raymundo Islas M.
Hola,

Se me ocurre de repente esto :

select distinct b.codigo,b.nombre,b.ciudad
from base as b

Con esto salen solo las posibles combinacion de estos datos sin repetirse.

Si quisieramos saber si ya existe :

select b.alguncampo
from base as b
where b.codigo = 'xcodigo'
and b.nombre = 'xnombre'
and b.ciudad = 'xciudad'

if len( xRecordSet ) > 0
// existe : modificar
else
// no existe : agregar
endif


Quizas entendi mal, pero seria cuestion de probar.


Saludos