Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-07-2007
tenporal tenporal is offline
Miembro
 
Registrado: may 2007
Posts: 28
Poder: 0
tenporal Va por buen camino
Question

Otra pregunta amigo Caral

¿Como evitas que el usuario teclee 2 articulos diferentes asignandole la misma clave del articulo?

Por ejemplo:

articulo: 1
Descripcion: Teclado

articulo: 1
Descripcion: Raton

En el modulo de articulos teclee estos 2 registros con la misma clave y me lo acepto sin problemas, pero no tendria aqui llaves duplicadas ¿como resuelvo esto?

Saludos
Responder Con Cita
  #2  
Antiguo 28-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Supongo que te refieres al form de articulos, lo que quieres hacer es que el ID del articulo no se repita o no tenga uno igual en la tabla, si es asi.
Ya te respondo, un momento.
Saludos
Responder Con Cita
  #3  
Antiguo 28-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Bueno aqui estoy respondiendo a la duda de Tenporal, los cambios los vamos ha hacer en el From de articulos (FArticulos).
Primero:
El Componente DBNavigator1.
A este le quitamos las opciones de Post, Cancel, Refresh., no las necesitamos.
Segundo:
Colocamos un ADOQuery (AdoQuery1) en el from, lo conectamos igual que el adotable1 que tenemos al datamodule en connection (DataModule1.ADOConnection1).
Tercero:
Colocamos un Boton (Guardar) en el Form y en el evento OnClick, ponemos esto:
Código Delphi [-]
 If DBEdit1.Text <> '' then
   Begin
     ADOQuery1.Active:= false;
     ADOQuery1.SQL.Text:= 'Select CodProducto from Articulos Where CodProducto = :cod ';
     ADOQuery1.Parameters.ParamByName('cod').Value := DBEdit1.Text;
     AdoQuery1.Active := true;
     IF ADOQuery1CodProducto.AsString = DBEdit1.Text then
     begin
     MessageDlg('Código ya existe, favor seleccionar otro',mtError,[mbOK],0);
     DBEdit1.Text:= '';
     end
     else
     If ADOTable1.State = dsInsert then
     begin
     ADOTable1.Post;
     ADOTable1.Active:= False;
     ADOTable1.Active := true;
     end;
     end;
Creo que esta facil de entender.
Primero se verifica que el dbedit1 este vacio
Se coloca una consulta al query1 y se busca que, si el parametro es igual al dbedit1 salga un mensaje de lo contrario se grabe en la tabla y se refresque, siempre que la tabla este en modo insert (dsInsert).
Espero sea esto lo que preguntabas y te sirva.
Saludos
Responder Con Cita
  #4  
Antiguo 31-07-2007
tenporal tenporal is offline
Miembro
 
Registrado: may 2007
Posts: 28
Poder: 0
tenporal Va por buen camino
Lo que vi en el diseño de la base de datos en access, es que no tienes un campo definido como llave primaria.

¿cual seria la mejor manera de normalizar la base de datos de access, con llave primaria o sin llave primaria?

Ahora otra pregunta,

Si en vez de guardar el articulo, el usuario da click en el boton cancelar
¿no queda un registro en blanco en la tabla de articulos?

Saludos a tod@s.
Responder Con Cita
  #5  
Antiguo 31-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
1- Access obliga a colocar llaves primarias sobre todo cuando se hacen consultas ligadas, de lo contrario, no lo amerita.
2- Cambiando la colocacion de la sentencia, se puede hacer lo que dices, estudialo un poco, lo entenderas, no deberia crear un registro en blanco.
Recuerda que esta ayuda, no es perfecta, como sabes soy novato, como muchos, solo intento ayudar y dar una luz de lo que se puede hacer.
Saludos
Responder Con Cita
  #6  
Antiguo 12-08-2007
Avatar de novato03
novato03 novato03 is offline
Miembro
 
Registrado: ago 2007
Posts: 45
Poder: 0
novato03 Va por buen camino
Unhappy Asunto

Hola amigo Caral, me descargue el programa paso a paso que hiciste y para analizarlo, pero cuando lo ejecuto me presenta el error cuando le presiono el botón guardar.

Project Factura.exe raised exception class EOleExcenption with message 'El número de valores de consulta y el ´numero de campos de destino son diferentes'¨. Process stopped. Use Step or Run to continue.
Responder Con Cita
  #7  
Antiguo 12-08-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola novato03
Esto pasa cuando intentas guardar datos incompletos.
En el caso del programa en el form factura, si los edits y combobox que estan en blanco no contienen informacion, genera el error, la logica dice que es una factura y por lo tanto se tiene que formalizar.
Rellena todos los campos vacíos y resulto.
Espero que sea este el problema que me mencionas.
Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Reducir Inventario por medio factura josejose Varios 4 26-01-2007 01:23:29
Costo de Inventario NickName SQL 4 09-10-2006 06:30:31
Inventario de Hardware vichovi API de Windows 3 03-01-2005 15:35:10
como planear un inventario peps gmontes Debates 0 21-12-2004 17:01:10
Controlar inventario? AbcXxx Varios 4 12-06-2004 00:54:13


La franja horaria es GMT +2. Ahora son las 11:25:27.


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
Copyright 1996-2007 Club Delphi