Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-09-2005
uper uper is offline
Miembro
 
Registrado: abr 2004
Posts: 296
Poder: 21
uper Va por buen camino
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 roducto, :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.
Responder Con Cita
  #2  
Antiguo 16-09-2005
Avatar de Spynosa
Spynosa Spynosa is offline
Miembro
 
Registrado: nov 2004
Ubicación: Ecija - Sevilla
Posts: 99
Poder: 20
Spynosa Va por buen camino
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)
Responder Con Cita
  #3  
Antiguo 16-09-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
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....
__________________
No todo es como parece ser...
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


La franja horaria es GMT +2. Ahora son las 22:01:59.


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