Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   If condicional al afectar existencias con store procedure... (https://www.clubdelphi.com/foros/showthread.php?t=25204)

uper 15-09-2005 16:06:02

If condicional al afectar existencias con store procedure...
 
saludos

tengo una pregunta para hacer un procedimiento que afecte las existencias de una tabla de materiales y la cual tiene su detalle, por otro lado tengo tambien dos tablas para ir llevando las entradas de material y sus partidas (detalle).

lo que pense es hacerlo con un store procedure, la cual sigue la siguiente logica:
Debe de existir una tabla de materiales y un detalle para ir llevando unas medidas relacionadas a la tabla maestra.
Se registra el material que llego y sus partidas, y una vez que ya esta listo se procede a afectar el movimiento o cancelarlo despues de haber sido afectado.
Si en el registro de material esta el material_id pero una de sus medidas no esta, entonces se da de alta un nuevo registro en el detalle de la tabla de materiales_detalle.

como esta algo largito el store procedure que llevo lo resumire lo que me interesa que afecte a mi tabla de detalle de materiales

.......
for Select ENT_DET_ARTICULO, ENT_DET_CANTIDAD, ENT_DET_LARGO, ENT_DET_ANCHO from ENTALMACENDET
where ENT_DET_FOLIO = :FOLIO into :producto, :cantidad, ;Existencia, :Ancho :Largo do
begin
select MAT_ANCHO, MAT_LARGO from MATERIAL_DET where MAT_ID:=producto;
// if existe esta medida actualize medidads y existencias else agrege registro ???.

como le indico que si existe ese registro con esas medidas me actualize las medidas, en caso contrario solo me agrege un regsitro mas en la tabla de Materiales detalle (MATERIAL_DET).

el for select se refiere a que no solo regresara un registro puede ser uno o mas de uno. Bueno con tantas lineas espero no haberlos perdido, me podrian ayudar.
Muchas gracias.

Spynosa 16-09-2005 16:53:52

Código SQL [-]

for Select ENT_DET_ARTICULO, ENT_DET_CANTIDAD, ENT_DET_LARGO, ENT_DET_ANCHO from ENTALMACENDET
where ENT_DET_FOLIO = :FOLIO into roducto, :cantidad, ;Existencia, :Ancho :Largo do
begin

aux1 = '';
aux2 = '';

select MAT_ANCHO, MAT_LARGO from MATERIAL_DET where MAT_ID:=producto into :aux1, :aux2;

 if (aux1 = '' and aux2 = '') then
      insert into tabla (lo que sea)
    else
      update tabla (lo que sea)

lucasarts_18 16-09-2005 17:42:06

Hola:

Por lo menos en SQL Server es así

Código SQL [-]
  
  if exist (consultaSQL)
  begin
    ......
  end
  else
  begin
    ......
  end

Debe haber alguna función equivalente en F¡rebird que te pueda servir.
Espero que te sirva....:rolleyes:


La franja horaria es GMT +2. Ahora son las 08:48: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