FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Validar Primary Key Compuesta ??
Tengo
Una tabla de almacenes CREATE TABLE ALMACENES ( ID_ALMACEN INTEGER NOT NULL, ETC…. ); Una tabla de productos CREATE TABLE MED_MATCUR ( ID_PRODUCTO INTEGER NOT NULL, ETC…. ); Una tabla de Productos x almacen CREATE TABLE CATXALM ( ID_ALMACEN INTEGER NOT NULL, ID_PRODUCTO INTEGER NOT NULL, STOCK_MIN INTEGER NOT NULL, STOCK_MAX INTEGER NOT NULL, EXISTENCIA INTEGER, REV_CADUCIDAD DATE ); Donde la llave Prinipal esta formada por ID_ALMACEN,ID_PRODUCTO ALTER TABLE CATXALM ADD CONSTRAINT PK_CATXALM PRIMARY KEY (ID_ALMACEN, ID_PRODUCTO); Entonces yo antes de crear un Nuevo registro en la tabla de Productos por almacen quiero verificar si éste ya existe. Por ejemplo quiero dar de alta el producto 5 del almacen 3. hago lo siguiente con delphi Var v_llave: string; begin // concateno los id correspondientes convertidos en strings v_llave:=inttostr(DM01.SD_AlmacenesID_ALMACEN.Value)+inttostr(DM01.SD_Med_MatCurID_PRODUCTO.Value); ShowMessage(v_llave); // utilizo el FindKey para verificar, pero esto no me esta funcionando,seguro estoy mal // ¿???? Como se debe hacer if not DM01.SD_CatXAlm.FindKey([v_llave]) then begin DM01.SD_CatxAlm.Insert; DM01.SD_CatXAlmID_PRODUCTO.Value := DM01.SD_Med_MatCurID_PRODUCTO.Value; DM01.SD_CatXAlmSTOCK_MIN.Value := 0; DM01.SD_CatXAlmSTOCK_MAX.Value := 0; end; end; pudieran ayudarme??? |
#2
|
|||
|
|||
Código:
Query.SQL.Add('select * from CATXALM'); Query.SQL.Add('where ID_ALMACEN = :alma and'); Query.SQL.Add(' ID_PRODUCTO = :prod'); Query.ParamByName('alma').AsInteger := 3; Query.ParamByName('prod').AsInteger := 5; Query.Open; if Query.Fields[0].IsNull then ShowMessage('Articulo inexistente') else ShowMessage('Articulo existente'); |
#3
|
||||
|
||||
Buena costumbre también sería que pusieses esta operación entre transacciones.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí. |
#4
|
|||
|
|||
Me parece un buena opcion, aunque me gustaria mas porder utilizar la funcion .FindKey con el parametro correspondiente, sera q no se puede con una llave compuesta???
gracias |
#5
|
|||
|
|||
Cita:
Código:
Tabla.FindKey([buscar1, buscar2, bucar3,......,buscarN]); Código:
Tabla.Locate('campo1, Campo2,..., campoN', VarArrayOg([campo1, campo2,...,campoN]), []); |
#6
|
|||
|
|||
Me gusta mas esa forma
muchas gracias, la voy a probar en este momento |
|
|
|