parent
070dc0e1f7
commit
1e4ae742d1
@ -0,0 +1,41 @@
|
|||||||
|
drop table tresultat purge;
|
||||||
|
create table tresultat(ligne varchar2(200));
|
||||||
|
variable vnbRef number
|
||||||
|
prompt nombre de référence?
|
||||||
|
accept vnbRef
|
||||||
|
declare
|
||||||
|
dnbRef number:='&vnbRef';
|
||||||
|
didRep char(5);
|
||||||
|
dmessage varchar2(200);
|
||||||
|
dnbTot number;
|
||||||
|
inex exception;
|
||||||
|
cursor CUR is select I.idRep, sum(nbPlacesRes)
|
||||||
|
from inscription I, representation R
|
||||||
|
where I.idRep=R.idRep
|
||||||
|
and dateRep>sysdate
|
||||||
|
group by I.idRep
|
||||||
|
having sum(nbPlacesRes) > dnbRef
|
||||||
|
order by 2 desc;
|
||||||
|
begin
|
||||||
|
dmessage:='nombre de reference trop eleve';
|
||||||
|
insert into tresultat values('Id rep Nb total');
|
||||||
|
open CUR;
|
||||||
|
fetch CUR into didRep, dnbTot;
|
||||||
|
|
||||||
|
if CUR%notFound then raise inex;end if;
|
||||||
|
while CUR%FOUND
|
||||||
|
loop
|
||||||
|
insert into tresultat values (didRep||' '||dnbTot);
|
||||||
|
fetch CUR into didRep, dnbTot;
|
||||||
|
end loop;
|
||||||
|
close CUR;
|
||||||
|
exception
|
||||||
|
when inex then insert into tresultat values (dmessage);
|
||||||
|
end;
|
||||||
|
.
|
||||||
|
/
|
||||||
|
select * from tresultat;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,42 @@
|
|||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
char vidRep[6];
|
||||||
|
char vdateRep[11];
|
||||||
|
char vheureRep[5];
|
||||||
|
int vnbPlaces;
|
||||||
|
char vidArtiste[6];
|
||||||
|
int fin=1;
|
||||||
|
int vnbMax;
|
||||||
|
short indic;
|
||||||
|
|
||||||
|
EXEC SQL WHENEVER SQLERROR DO sql_error("Pb connexion\n");
|
||||||
|
printf("\n Appel de la fonction connexion");
|
||||||
|
connexion();
|
||||||
|
|
||||||
|
EXEC SQL DECLARE rep CURSOR FOR SELECT idRep, nbplaces FROM representation;
|
||||||
|
EXEC SQL OPEN rep;
|
||||||
|
|
||||||
|
EXEC SQL FETCH rep INTO :vidRep, :vnbPlaces:indic;
|
||||||
|
if (sqlca.sqlcode == +1403) {fin = 0;}
|
||||||
|
while (fin!=0)
|
||||||
|
{
|
||||||
|
vidRep[5]='\0';
|
||||||
|
printf("\n num representation: %s \n",vidRep);
|
||||||
|
if (indic==-1)
|
||||||
|
printf("\n nb max?: ");
|
||||||
|
scanf ("%d%*c", &vnbMax);
|
||||||
|
EXEC SQL update representation set nbPlaces = :vnbMax where idRep=:vidRep;
|
||||||
|
EXEC SQL commit;
|
||||||
|
EXEC SQL FETCH rep INTO :vidRep, :vnbPlaces:indic;
|
||||||
|
if (sqlca.sqlcode == +1403) {fin = 0;}
|
||||||
|
}
|
||||||
|
printf(" Fini \n");
|
||||||
|
EXEC SQL CLOSE rep;
|
||||||
|
|
||||||
|
deconnexion(1);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,57 @@
|
|||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
char vdateRep[11];
|
||||||
|
char vheureRep[6];
|
||||||
|
char vidRep[6];
|
||||||
|
int vnbPlaces;
|
||||||
|
int vnbPlacesRes;
|
||||||
|
int vTabNbPlacesRes[500];
|
||||||
|
int i, nb, fin=1;
|
||||||
|
|
||||||
|
connexion();
|
||||||
|
EXEC SQL DECLARE REP CURSOR FOR SELECT to_char(dateRep, 'dd/mm/yyyy'), heureRep, idRep, nbPlaces
|
||||||
|
FROM representation
|
||||||
|
where dateRep>sysdate order by 1, 2;
|
||||||
|
|
||||||
|
printf("\n liste des représentations");
|
||||||
|
printf("\n dateRep Heure Rep Id Rep Nb places rés./Insc.");
|
||||||
|
// traitement curseur pour en tete représentation
|
||||||
|
EXEC SQL OPEN REP;
|
||||||
|
EXEC SQL FETCH REP INTO :vdateRep, :vheureRep, :vidRep, :vnbPlaces;
|
||||||
|
if (sqlca.sqlcode == +1403) {fin = 0;}
|
||||||
|
while (fin!=0)
|
||||||
|
{
|
||||||
|
vdateRep[10]='\0'; vheureRep[5]='\0';vidRep[5]='\0';
|
||||||
|
printf("\n %s.....%s......%s\n",vdateRep,vheureRep,vidRep); // en tete rep
|
||||||
|
|
||||||
|
// gestion détail places
|
||||||
|
EXEC SQL SELECT count(nbPlacesRes)
|
||||||
|
into :nb
|
||||||
|
FROM inscription I, representation R
|
||||||
|
where dateRep>sysdate and R.idRep=I.idRep and I.idRep=:vidRep;
|
||||||
|
|
||||||
|
vnbPlacesRes=vnbPlaces;
|
||||||
|
if (nb>0){ // si on a des inscriptions
|
||||||
|
EXEC SQL SELECT nbPlacesRes
|
||||||
|
into :vTabNbPlacesRes
|
||||||
|
FROM inscription I, representation R
|
||||||
|
where dateRep>sysdate and R.idRep=I.idRep and I.idRep=:vidRep;
|
||||||
|
for (i=0; i<nb;i++)
|
||||||
|
{
|
||||||
|
printf("\n ................%d\n",vTabNbPlacesRes[i]); // detail
|
||||||
|
vnbPlacesRes=vnbPlacesRes - vTabNbPlacesRes[i];
|
||||||
|
}
|
||||||
|
printf("\nNombre de places disponibles: %d\n",vnbPlacesRes); // fin rep
|
||||||
|
}
|
||||||
|
EXEC SQL FETCH REP INTO :vdateRep, :vheureRep, :vidRep, :vnbPlaces;
|
||||||
|
if (sqlca.sqlcode == +1403) {fin = 0;}
|
||||||
|
}
|
||||||
|
EXEC SQL CLOSE REP;
|
||||||
|
|
||||||
|
deconnexion(1);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,60 @@
|
|||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
char vidRepAnc[6];
|
||||||
|
char vidRepNouv[6];
|
||||||
|
varchar vadrMail[30];
|
||||||
|
int nb, nb1, nb2, nb3, vnbP,vnbPlacesRes;
|
||||||
|
float vtarif, vmont1, vtarif2, vmont2, vdif;
|
||||||
|
connexion();
|
||||||
|
// calcul montant payé pour ancienne rep
|
||||||
|
EXEC SQL select nbPlacesRes,tarif into :vnbP, :vtarif
|
||||||
|
from inscription I, representation R, artiste A
|
||||||
|
where I.idRep=R.idRep and R.idartiste=A.idaRtiste and I.idRep=:vidRepAnc and adrMail=:vadrMail;
|
||||||
|
// avait payé
|
||||||
|
vmont1=vtarif*vnbP;
|
||||||
|
|
||||||
|
// inscription deja faite?
|
||||||
|
EXEC SQL SELECT count(*) into :nb
|
||||||
|
FROM inscription
|
||||||
|
where idRep=:vidRepNouv and adrMail=:vadrMail;
|
||||||
|
if (nb==1)
|
||||||
|
{sql_error("\ninscription déjà faite à cette nouvelle\n");}
|
||||||
|
else {
|
||||||
|
// nombres places suffisantes?
|
||||||
|
EXEC SQL SELECT nbPlaces into :nb1
|
||||||
|
FROM representation
|
||||||
|
where idRep=:vidRepNouv;
|
||||||
|
|
||||||
|
EXEC SQL SELECT sum(nbPlacesRes) into :nb2
|
||||||
|
FROM inscription
|
||||||
|
where idRep=:vidRepNouv;
|
||||||
|
|
||||||
|
EXEC SQL SELECT nbPlacesRes into :vnbPlacesRes
|
||||||
|
FROM inscription
|
||||||
|
where idRep=:vidRepAnc and adrMail=:vadrMail;
|
||||||
|
// nb places restantes
|
||||||
|
nb3=nb1-nb2-vnbPlacesRes;
|
||||||
|
if (nb3<0)
|
||||||
|
{sql_error("\nplus assez de places");}
|
||||||
|
else {
|
||||||
|
EXEC SQL select tarif into :vtarif2
|
||||||
|
from representation R, artiste A
|
||||||
|
where R.idArtiste=A.idArtiste and R.idRep=:vidRepNouv;
|
||||||
|
// devrait payer
|
||||||
|
vmont2=vtarif2*vnbPlacesRes;
|
||||||
|
//maj
|
||||||
|
EXEC SQL UPDATE inscription set idRep=:vidRepNouv
|
||||||
|
where idRep=:vidRepAnc and adrMail=:vadrMail;
|
||||||
|
EXEC SQL COMMIT;
|
||||||
|
// remboursement?
|
||||||
|
vdif=vmont1-vmont2;
|
||||||
|
if(vdif>0)
|
||||||
|
printf("\nmodif faite, on vous doit: %.2f euros", vdif);
|
||||||
|
else printf("\nmodif faite, vous devez: %.2f euros", vdif*-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
deconnexion(1);
|
||||||
|
return(0);
|
||||||
|
}
|
Loading…
Reference in new issue