Aller au contenu | Aller au menu | Aller à la recherche

 
« septembre 2007
lunmarmerjeuvensamdim
12
3456789
10111213141516
17181920212223
24252627282930
12
sept
2007

Oracle: Récupérer les clés étrangères d'une clé primaire

Ca peut paraître bête, mais quand on sait pas, on peut pas deviner! Alors, voici une requête qui permet de récupérer les infos nécessaires à la récupération des clés étrangères d'une clé primaire données :

SELECT * FROM user_constraints 
WHERE r_constraint_name = 'PK_constraint_name'

où PK_constraint_name est le nom de la contrainte d'intégrité de la clé primaire. On pourra alors trouver le nom des tables contenant les clés étrangères, ainsi que le nom des contraintes d'intégrité correspondantes.

10
mars
2007

MySQL : copier une table et ses données simplement

Je viens de trouver une requête qui permet de copier une table MySQL avec toutes ses données. Peut-être que tout le monde la connait déjà mais bon, on sait jamais !

CREATE TABLE `table_backup` AS SELECT * FROM `table`

Comme vous voyez, plus simple on peut pas faire !

18
juil
2006

Exporter le résultat d'une requête avec phpMyAdmin

Bon, je ne sais pas si c'est moi qui tombe du ciel ou autre, mais ça fait un bail que j'utilise phpMyAdmin sans savoir comment récupérer le résultat d'une requête. Eh bien il suffit tout simplement de cliquer sur le lien "Excporter". Mais pas n'importe lequel: celui qui est bien caché tout en bas du tableau résultat. Jettez un coup d'oeil à l'image ci-dessous, et vous comprendrez tout de suite! Le lien est cerclé de rouge.

Export d'un resultat avec phpMyAdmin

Est-ce que vous connaissiez cette fonctionnalité? Histoire de me rassurer que je ne suis pas le seul loool

;o)

3
juin
2006

SQL : LEFT JOIN et MySQL 5

Petite différence entre MySQL 4 et 5...

Imaginez la requête suivante, qui retourne le montant des commandes de clients:

SELECT client.*, pays.*, SUM(commande.montant)
FROM client, pays
LEFT JOIN commande ON commande.id_client=client.id_client
WHERE client.id_pays=pays.id_pays
GROUP BY client.id_client

Avec MySQL 4, elle passe sans problème. Avec MySQL 5, vous aurez une erreur du genre "client.id_client n'existe pas"... Alors que si, il existe! Alors, si vous échangez les tables client et pays dans le FROM (FROM pays, client), ca marchera. En gros, il faut que la table sur laquelle on fait le LEFT JOIN, soit en dernier dans le FROM. Vous me direz, ok alors pourquoi ce post?! Ben imaginez plusieurs LEFT JOIN dans la requête, vous faites comment pour mettre toutes les tables concernées en dernier dans le FROM?? loool

La solution consiste tout simplement à mettre les tables du FROM entre parenthèses. On aura alors la requête:

SELECT client.*, pays.*, SUM(commande.montant)
FROM (client, pays)
LEFT JOIN commande ON commande.id_client=client.id_client
WHERE client.id_pays=pays.id_pays
GROUP BY client.id_client

Et ça passera sans soucis, avec tous les LEFT JOIN que vous souhaitez ! ;o)

1
juin
2006

sql UPDATE + mysql_affected_rows

Sur ce coup là, je me suis bien fait avoir !

Je ne sais pas comment vous faites, mais quand je vais sur php.net voir le descriptif d'une fonction, je lis le début, comprends ce qu'elle fait, et teste de suite pour mettre en application. Cependant, parfois, il est indiqué un peu plus en bas des explications, que dans certains cas la fonction peut ne pas faire ca qu'elle fait d'habitude.

Mon cas était le suivant: faire un UPDATE, et savoir combien d'enregistrements ont été mis à jour. Moi je me dis: mysql_affected_rows, c'est ce qu'il me faut. Je mets mon code en place, et teste. Résultat : dans certains cas la fonction mysql_affected_rows me retourne 0, alors que l'enregistrement existe! C'est à ce moment là qu'on retourne sur php.net/mysql_num_rows, et qu'on lit (en gros): dans certains cas, si les nouvelles valeurs sont identiques aux anciennes, il se peut que la fonction etc... Bref, si je fais un UPDATE, et que les valeurs ne changent pas, l'UPDATE n'est pas fait, et la fonction retourne 0. Ah ben si on m'avait dit ça...

On en apprend vraiment tous les jours ! ;o)

30
mai
2006

Communiquer avec Outlook en JavaScript

Comment accéder à Outlook par JavaScript ? Facile! Enfin, je dis ca, mais j'ai pas trouvé tout de suite hein ;o)

J'ai utilisé le composant ActiveX d'IE pour arriver à mes fins. Alors là vous direz "Bouuuh, ca marche que sous IE c'est nul"... Ben en JavaScript, j'ai rien trouvé d'autre pour faire du COM! Donc si vous savez des choses à ce sujet, j'écoute !

Donc je disais de l'ActiveX, de l'Outlook, et de la gestion de rendez-vous. Sans plus tarder, voilà un peu de code.

var olk = new ActiveXObject( "Outlook.Application" );
var ns = olk.GetNameSpace('MAPI');
ns.Logon('', '', false, true);
var oItems = ns.GetDefaultFolder(9).Items; // Outlook.OlDefaultFolders.olFolderCalendar == 9
 
var oRDV = olk.CreateItem(1); // olAppointmentItem == 1
oRDV.ReminderSet = false;
oRDV.Subject = 'Nouveau rendez-vous !';
oRDV.Start = '30/05/2006 14:00:00';
oRDV.Save();

Ok, je ne sais pas si vous avez compris ce ptit bout de code, mais en gros, il ne fait rien d'intéressant, c'est juste un exmple. Reprenons.

  1. on crée l'objet ActiveX.
  2. on récupère l'espace MAPI (espace destiné au développeur), et on s'y logue.
  3. on récupère le dossier correspondant au calendrier: la valeur de la constante Outlook.OlDefaultFolders.olFolderCalendar étant 9.
  4. on crée un nouveau rendez-vous, valeur de la constante olAppointmentItem : 1
  5. on lui précise qu'il ne doit pas faire de rappel, on initialise le sujet, la date et on sauve !

Voilà, il n'y a rien de sorcier là-dedans. Notez cependant que vous pourriez avoir besoin de la redemption d'Outlook (je vous laisse faire vos recherches sur le web), dans certains cas. Le redemption permet de déclarer des objets sécurisés, afin qu'Outlook ne s'affole pas en ouvrant des popup de sécurité.

C'est tout! Après, avec le post concernant les bibliothèques de fonctions Microsoft, vous pouvez faire ce que vous voulez !

29
mai
2006

Bibliothèque de fonctions Microsoft

Si le titre du billet peut faire peur, il ne faut pas, ce que je vais dire va peut-être vous sauver la vie !

Pour préciser, mon problème était le suivant: j'utilisais le composant COM de php, afin de travailler sur des document Microsoft (Excel, Word, ...), et j'étais incapable de trouver sur le web une liste de fonctions, une bibliothèques, une API, bref quelque chose qui me dirait comment utiliser mon objet COM. Eh bien c'est pas compliqué, et je dirais qu'il faut même raisonner logiquement: qui dit programmation Microsoft dit VBA. Et là, c'est le bonheur.

Faites tout simplement, dans l'appli Microsoft concernée: Outils > Macro > Visual basic editor. Là une fenêtre s'ouvre, faites alors: Affichage > Explorateur d'objets. Une autre fenêtre s'ouvre, avec la liste des objets, sous-objets, méthodes, propriétés, constantes, etc... Bref tout ce qu'il nous faut !

Encore une victoire de canard ! lool ;o)