Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Campo vacio en dbf (https://www.clubdelphi.com/foros/showthread.php?t=61516)

lKinGl 11-11-2008 04:47:24

Campo vacio en dbf
 
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

Código Delphi [-]
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;



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:
Cita:

Empezado por Ayuda
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:
Código Delphi [-]
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:
Código Delphi [-]
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. 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

Cita:

Empezado por lKinGl (Mensaje 325203)
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:

Código Delphi [-]
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

Cita:

Empezado por lKinGl (Mensaje 325207)
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

Cita:

Empezado por lKinGl (Mensaje 325209)
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
Código Delphi [-]
  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

Código Delphi [-]
if Key = #13 then
  if DBGrid1.DataSource.State  in [dsEdit, dsInsert] then
    "accion deseada"

espero te ilumine en algo :)


La franja horaria es GMT +2. Ahora son las 15:35:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi