PDA

Ver la Versión Completa : Campo vacio en dbf


lKinGl
11-11-2008, 04:47:24
Salu2 amigos foristas

resulta que exporte un archivo de excel2003 a dbf con el cual necesito poner a funcionar un formulario.

tengo los campos CIS y CIP que son campos únicos...

el caso es que puede sea que haya CIP pero no haya CIS entonces necesito que me salga un error diciendo que no hay Testigo secundario...

el caso es que como la tabla se exporto en dbf y nunca lo habia usado se me dificulta comprobar cuando cis esta vacio.

probé esto:

Length(Fieldvalues['cis'])< 1 pero no funciona
Fieldvalues['cis']='' pero tampoco funciona

me imagino que es que no estoy comprobando como debe ser por el tipo de dato por que habia usado era alpha de paradox 7 y ahora en este dbf aparece es una c Character nos e hay que me dicen dejo foto de la tabla y el código que llevo


if key=#13 then
begin
With Table1 do
begin
if Locate('cip',edit1.Text,[]) then
begin
edit2.Text:=FieldValues['testigop'];
if (FieldValues['cis'])='' then
begin
if Application.MessageBox('Disculpe, este registro no tiene Testigo Secundario, ¿Esta seguro que quiere cargar la información incompleta?','',mb_yesno)=6 then
begin
edit3.Text:='No Tiene';
edit4.Text:='No Tiene';
edit5.Text:=FieldValues['postulada'];
edit6.Text:=FieldValues['mesa'];
edit7.Text:=FieldValues['ctro'];
edit8.Text:=FieldValues['nombrecent'];
edit9.Text:=FieldValues['direccion'];
edit10.Text:=FieldValues['municipio'];
edit11.Text:=FieldValues['estado'];
end
else
begin
edit1.Text:='';
BitBtn5.Click;
end;
end
else
begin
end;
edit3.Text:=FieldValues['cis'];
edit4.Text:=FieldValues['testigos'];
edit5.Text:=FieldValues['postulada'];
edit6.Text:=FieldValues['mesa'];
edit7.Text:=FieldValues['ctro'];
edit8.Text:=FieldValues['nombrecent'];
edit9.Text:=FieldValues['direccion'];
edit10.Text:=FieldValues['municipio'];
edit11.Text:=FieldValues['estado'];
end
else
begin
Application.MessageBox('No se encuentra la cédula ingresada','');
end;
end;
end;



http://www.kingsoft.com.ve/bd.jpg

gracias adelantadas

lKinGl
11-11-2008, 05:27:02
help me please!!

tengo el archivo en xls si alguien me dice alguna forma de pasarlo a paradox (db) tambien sirve :(

Delphius
11-11-2008, 07:38:41
Hola lKinGl,
Si no me equivoco, todos los objetos Field (y por tanto descendientes de éste) constan de la propiedad IsNull, que regresa TRUE en caso de que el campo esté vacio, o FALSE si posee un valor.

Esto es lo que dice la ayuda al respecto:

Indicates whether the field has a value assigned to it.

property IsNull: Boolean;

Description

Inspect IsNull to ascertain whether the field contains a value. If IsNull is True, the field is blank. If IsNull is False, the field has a value.


En resumen, su uso puede ser como el siguiente:

if TTable1.FieldByName('NombreCampo').IsNull
then ShowMessage('El campo está vacío);

Recuerda que hay muchas maneras de acceder al campo, lKinGl. Por ejemplo, si haces uso de campos persistentes:

if NombreTablaNombreCampo.IsNull
then ....

Saludos,

lKinGl
11-11-2008, 07:40:15
gracias delphius eso era ;)

Delphius
11-11-2008, 07:47:44
¿Funcionó?;):):D

Por favor, te voy a pedir que no repitas hilos (http://www.clubdelphi.com/foros/showthread.php?p=325194#post325194). Genera confusión.

Saludos,

lKinGl
11-11-2008, 07:49:46
jeje está bien solo que pense que en varios no iba....pero esta bien nomas duplicated:P

lKinGl
11-11-2008, 07:52:32
hey delphius sabes como se puede hacer para que cuando yo presione en una celda de un dbgrid me salga un showmessage con que numero de registro es?

lKinGl
11-11-2008, 07:54:11
porque necesito crear un form para editar pero esta base de datos no tiene ningun campo unico asi que quiero guardar el numero de registro en un edot visible false y guardar de nuevo sobre el mismo ;)

Delphius
11-11-2008, 08:02:32
hey delphius sabes como se puede hacer para que cuando yo presione en una celda de un dbgrid me salga un showmessage con que numero de registro es?

Se puede, existe la propiedad RecNo que devuelve el número de registro actual. Pero he aquí que esta propiedad no pertenece al DBGrid, sino al DataSet (un TTable, o TQuery por ejemplo) al que está relacionada. Y aquí, hay otro "problema". La forma de relacionar al DBGrid con el DataSet (recuerda que TTable, TQuery, entre otros son descendientes de TDataSet) es mediante un DataSource. Por tanto, lo que buscas es algo como esto:

NumeroRegistro := DBGrid1.DataSource.DataSet.RecNo;
....

lKinGl, No es por ser malito, pero leer la ayuda sobre los componentes que usas ayuda mucho.

Saludos,

lKinGl
11-11-2008, 08:04:12
gracias delphius, donde esta la ayuda de los componentes?

en windows vista da error la ayuda que trae delphi 7 :(

Delphius
11-11-2008, 08:09:29
gracias delphius, donde esta la ayuda de los componentes?

en windows vista da error la ayuda que trae delphi 7 :(

¿La ayuda? Basta con que selecciones el componente y le des a la tecla que te invita a correr en la Fórmula 1:D

¿Vista?:eek: Ha... ese es el problema, saca a ese bicho:D

Sino prueba entrando desde Inicio -> Delphi 7 -> Help ->
Allí te debería aparecer todos los archivos de ayuda. Busca uno que diga Visual Component Referrence o algo así.

Saludos,

lKinGl
11-11-2008, 08:11:28
por ningun lado :S solo me sirve la ayuda en xp :(

lKinGl
11-11-2008, 08:16:19
delphius disculpa tanta ignorancia jajaja.... pero estoy tratando de editar un registro... obtenido de un dbgrid enlazado con un query

y te pregunte como hacia para obtener el numero de fila del registro y obtenerlo en un edit (ya lo tengo) pero ahora como hago para guardar los cambios hechos en el formulario, en esa misma linea de registro ???????

Delphius
11-11-2008, 08:21:37
por ningun lado :S solo me sirve la ayuda en xp :(
¿Será que no instalaste la ayuda?

Recuerdo que hace unos meses mientras estaba instalando un sistema a un amigo de mi padre en un Windows Vista recibí una advertencia de Windows informándome que la ayuda que proporciona el programa fue hecha en una versión anterior y que no se puede usar.
La verdad es que no me puse a investigar si existe alguna incompatibilidad entre los archivos de ayuda desde XP a Vista. Hoy en día no es de extrañarse que así sea:D

La verdad es que en este asunto no te sabría ayudar. Habría que investigar.
Como no he vuelto a tener lo ocasión de volver a ver a dicha persona, no sabría decirte si terminó cambiandose a XP o desistió de emplear el sistema que legalmente adquirió... yo diría que me hizo caso y se cambió a XP;):D:)

Saludos,

lKinGl
11-11-2008, 08:24:53
see bueno yo tengo preferencia por el vista porque mi tarjeta de audio es la mama de los problemas conseguirle el driver y ademas el equipo rinde mas con vista :P cuento con un core 2 duo 3 gb de ram y 512 de video y cuando lo instalo no tengo que buscar ni 1 solo driver :D y todo funciona de maravilla menos la ayuda de delphi :S

lKinGl
11-11-2008, 08:28:56
ó seria tambien bueno poder que con doble click la celda entre en modo de edicion editar lo que se va a editar y se guarde solito :P como sea mas facil es mejor jejejeje

lKinGl
11-11-2008, 08:37:44
delphius no me abandones :(:(:(:(

Rodrigo_I
11-11-2008, 15:21:28
En el evento CellClick de tu grilla colocas algo asi

if (Column.FieldName = 'Campo') then
DBGrid1.Options := [dgTitles,dgIndicator,dgColLines,dgRowLines,dgTabs,dgEditing]
else
DBGrid1.Options := [dgTitles,dgIndicator,dgColLines,dgRowLines,dgTabs];



y en evento KeyPress


if Key = #13 then
if DBGrid1.DataSource.State in [dsEdit, dsInsert] then
"accion deseada"


espero te ilumine en algo :)