PDA

Ver la Versión Completa : de Visual Basic a Delphi... Manipulacion de campos!!


abril
26-06-2003, 17:51:18
Hola Gracias por darme un poco de tu tiempo.......

En Visual Basic yo puedo hacer busquedas en campos con un like y mostrarlo en una etiqueta de esta forma ........

Set Rtabla=base.openrecordset("select * from Tabla where campo like 'A' ")...

de esta manera manipulo muy facil el resultado de mi recordset....

puedo hacer esto :

label1=Rtabla!nombre

como puedo hacerlo en delphi?

Muchas gracias!!!...... me servira mucho tu ayuda.


:)

delphi.com.ar
26-06-2003, 18:15:45
Ante todo debes diferenciar algunos conceptos importantes.

En Delphi no existen las propiedades por defecto (No del todo, algo así existe con las array properties), entonces cuando escribes Label1 := Algo, te estas refiriendo al objeto label1 y no a la propiedad text, sería como en VB hacer SET Label1 = Algo
Delphi es un lenguaje fuertemente tipado, y exige integridad entre los tipos de datos, en VB es muy común asignar diferentes tipos de datos sin hacer casts de los mismos, en Delphi son muy pocos los casos, que podemos mezclar peras con batatas. (Solo cuando a la larga se trata del mismo tipo de dato)
En Delphi cada ves que creas un objeto, tienes que destruirlo, en VB nunca queda claro cuando se destruye un recordset, el proceso normal es asignarle nothing, si en Delphi le asignas nil a la variable, el objeto seguirá existiendo en memoria pero no se ha destruido..


var
MiQuery: TQuery;
begin
MiQuery := TQuery.Create(Self);
try
MiQuery.DatabaseName := 'MiBase';
MiQuery.SQL.Text := 'select * from Tabla where campo like ''A%''';
MiQuery.Open;

Label1.Caption := MiQuery.FieldByName('NOMBRE').AsString;
finally
MiQuery.Free;
end;

abril
30-06-2003, 23:14:22
Muchas gracias!!!....

Me fue muy util tu comentario.... logre el resultado que queria...

Gracias Mil.



:D

abril
04-07-2003, 22:46:18
tengo un apequeña duda.....

try

finally ....

es similar, igual o nada que ver....

BeginTrans
CommitTrans ???.....


si es igual el procedimiento es el mismo?..... tengo que asignarle un espacio de trabajo igual que lo hago en VB?.

:confused:

gracias!....

abril
04-07-2003, 22:51:27
tengo otra duda.....

try
finally

es igual, similar o nada que ver con...

BeginTrans
CommitTrans...

si es igual, el procedimiento es el mismo que en VB tengo que asignarle un espacio de trabajo?...




:rolleyes:


gracias!

delphi.com.ar
04-07-2003, 23:10:43
try
{Mi Código}
finally
{Código que se ejecutará siempre}
end;

try
{Mi Código}
except
{Código que se ejecutará ante un Error}
end;

Try... es la forma de capturar errores que tiene Delphi, y es MUY diferente a la de VB. El concepto viene de C, y es mas o menos así... La idea es definir bloques de capturas de errores, estos bloques están definidos entre el Try y el End, cuando usamos Finally, como en el ejemplo que te pasé, es porque queremos que lo que esta entre Finally y End se ejecute SI O SI, aunque se produzca un error entre el Try y el Finally. Cuando usamos Except, es porque queremos que el código entre el Except y el End se ejecute solo cuando se produce un error en el bloque.

En consultas de selección es inapropiado utilizar transacciones, por eso te voy a cambiar el ejemplo a un update, donde tenemos todos los tipos de capturas de errores:

var
MiBase: TDatabase;
begin
MiBase := TDatabase.Create(Self);
try
MiBase.AliasName := 'MiAlias';
MiBase.Open;
MiBase.StartTransaction;
try
MiBase.Execute('INSERT.... ');
MiBase.Execute('UPDATE.... ');
MiBase.Commit;
except
MiBase.Rollback ;
raise;
end;
finally
MiBase.Free;
end;
end;



Te recomiendo leer los ejemplos de la ayuda.
Saludos!