IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

Fonction pour récuperer la ligne et la colonne d'une cellule précise [QtGui]


Sujet :

PyQt Python

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Points : 93
    Points
    93
    Par défaut Fonction pour récuperer la ligne et la colonne d'une cellule précise
    Bonjour
    je souhaite récupérer la ligne et la colonne d'une cellule dans une tableau ,
    lorsque je clique sur une cellule j'affiche sa position (ligne , colonne)
    merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 356
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 356
    Points : 36 884
    Points
    36 884
    Par défaut
    Salut,

    Pour savoir quelle case du tableau a été clickée, vous pouvez connecter le signal "itemClicked(QTableWidgetItem *)" a une méthode qui récupèrera
    les (row, column) du QTableWidgetItem passé en paramètre.
    En gros ca donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class MyTable(QTableWidget):
        def __init__(self, *args, **kwds):
             #...
             QObject.connect(self, SIGNAL("itemClicked(QTableWidgetItem *)"),
                            self._itemClicked)
             #...
        def _itemClicked(self, item):
            print "text=%s, row=%d, column=%d" % (
                item.text(), item.row()+1, item.column()+1)
    - W

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Points : 93
    Points
    93
    Par défaut
    merci mais ca fonctionne pas
    je l'ai testé y a pas de messages d'erreur mais aussi rien ne s'affiche .
    voici sur le code sur le quel j'ai fait le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    from __future__ import division
    # Python 2.7
     
    import sys
    from PyQt4 import QtCore, QtGui
     
    #############################################################################
    def prendcase(table, row, col):
        """Retourne la valeur de la case [row, col] de la table QTableWidget"""
        item = table.item(row, col)
        if item == None:
            # soit la case n'a jamais �t� initialis�e, soit elle a un widget
            if issubclass(type(table.cellWidget(row,col)), QtGui.QComboBox):
                # c'est un combobox: renvoyer la valeur affich�e
                item = table.cellWidget(row,col) 
                return unicode(item.currentText()) 
            # la case ne contient rien: renvoyer une chaine vide
            return u""
        else:
            return unicode(item.text())
     
    #############################################################################
    class Fenetre(QtGui.QWidget):
     
        # =======================================================================
        def __init__(self, parent=None):
            super(Fenetre, self).__init__(parent)
     
            # cr�er le lineEdit
            self.lineEdit = QtGui.QLineEdit(self)
     
            # cr�er le tableau
            self.tableWidget = QtGui.QTableWidget(self)
            self.tableWidget.setGeometry(QtCore.QRect(0, 30, 361, 301))
            self.nbrow, self.nbcol = 5, 3
            self.tableWidget.setRowCount(self.nbrow)
            self.tableWidget.setColumnCount(self.nbcol)
     
            # on met un combobox en [row=1, col=1]
            self.listecombo = ['toto', 'titi', 'tata', 'tutu']
            self.combo = QtGui.QComboBox()
            self.combo.addItems(self.listecombo)
            self.rowcombo, self.colcombo = 1, 1
            self.tableWidget.setCellWidget(self.rowcombo, self.colcombo, self.combo)
     
                # lancera la m�thode saisieval � chaque changement de case
            QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('currentCellChanged(int,int,int,int)'), self.saisieval)
     
                # lancera la m�thode saisievalder � chaque changement de contenu de case
            QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('itemChanged(QTableWidgetItem *)'), self.saisievalder)
                #
            QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('itemClicked(QTableWidgetItem *)'),self._itemClicked)
     
                # mettre le focus sur la case [0,0] du tableau
            self.tableWidget.setFocus()
            self.tableWidget.setCurrentCell(0, 0)
     
        # =======================================================================
        def saisieval(self, row, col, row0, col0):
            """M�thode lanc�e � chaque changement de case du tableau
               row, col = coordonn�es de la nouvelle case
               row0, col0 = coordonn�es de l'ancienne case
            """
            val = prendcase(self.tableWidget, row0, col0)
            self.lineEdit.setText(val)
     
        # =======================================================================
        def saisievalder(self, item):
            """m�thode lanc�e � chaque changement de contenu en fin d'�dition"""
            row = self.tableWidget.currentRow()
            col = self.tableWidget.currentColumn()
            if row==self.tableWidget.rowCount()-1 and col==self.tableWidget.columnCount()-1:
                val = prendcase(self.tableWidget, row, col)
                self.lineEdit.setText(val)
     
        def _itemClicked(self, item):
            print "text=%s, row=%d, column=%d" % (
                item.text(), item.row()+1, item.column()+1) 
    #############################################################################
    if __name__ == "__main__":
        app = QtGui.QApplication(sys.argv)
        fen = Fenetre()
        fen.show()
        sys.exit(app.exec_())

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Points : 93
    Points
    93
    Par défaut
    une autre question le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('itemClicked(QTableWidgetItem *)'),self._itemClicked)
    est ce que ça fonctionne si on se déplace avec tab ?? et si on a une liste déroulante dans l'une des cellules ?
    je pense que avec itemChanged on peut récupérer la colonne et la ligne d'une cellule quelque soit le déplacement avec tab ou la souris
    mais pour la liste déroulante je n'ai pas encore une idée

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 356
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 356
    Points : 36 884
    Points
    36 884
    Par défaut
    Salut,
    Pour itemClicked se déclenche, il faut que la "case" contienne un QTableWidgetItem.

    Dans l'exemple ci dessous, je crée une QTableWidget contenant 3x3 cases.
    Regardez les signaux émis suivant <TAB>, <click> ou modifications.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    import sys
    from PyQt4 import *
    from PyQt4.QtGui import QTableWidget, QTableWidgetItem, QApplication
    from PyQt4.QtCore import SIGNAL, QObject
     
    datas = {
        'A' : ['a0', 'a1', 'a2'],
        'B' : ['b0', 'b1', 'b2'],
    }
     
    def load(tableWidget, data):
        col = 0
        for key, values in data.iteritems():
            row = 0
            for item in values:
                tableWidget.setItem(row, col, QTableWidgetItem(item))
                row += 1
            col += 1
     
    connect = QObject.connect
    class MyTable(QTableWidget):
        def __init__(self, datas=None, *args):
            super(MyTable, self).__init__(*args)
            self._datas = datas
            if datas is not None:
                load(self, datas)
            connect(self,
                    SIGNAL('itemChanged(QTableWidgetItem *)'),
                    self._itemChanged)
            connect(self,
                    SIGNAL('itemClicked(QTableWidgetItem *)'),
                    self._itemClicked)
     
        def _itemChanged(self, item):
            print '_itemChanged:',
            self._show_item(item)
     
        def _itemClicked(self, item):
            print '_itemClicked:',
            self._show_item(item)
     
        def _show_item(self, item):
            print "text=%s, row=%d, column=%d" % (
                item.text(), item.row()+1, item.column()+1) 
     
    def main(args):
        app = QApplication(args)
        table = MyTable(None, 3, 3)
        table.show()
        sys.exit(app.exec_())
     
    if __name__=="__main__":
        main(sys.argv)
    - W

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Points : 93
    Points
    93
    Par défaut
    merci
    mais le souci ce que itemChanged(QTableWidgetItem *) est limité pour les cellule de type item.text() si on a un item.currentText() ca fonctionne plus car pour le currentText() il faut un signal currentCellChanged(int,int,int,int)

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 356
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 356
    Points : 36 884
    Points
    36 884
    Par défaut
    Citation Envoyé par nancy maman Voir le message
    merci
    mais le souci ce que itemChanged(QTableWidgetItem *) est limité pour les cellule de type item.text() si on a un item.currentText() ca fonctionne plus car pour le currentText() il faut un signal currentCellChanged(int,int,int,int)
    Plusieurs signaux qui vous permettent de récupérer la même information.
    Si vous clicker sur une case, vous aurez itemClicked et currentCellChanged qui diront que la "case" sélectionnée n'est plus la même.
    Note: vous avez aussi la possibilité de sélectionner des lignes et des colonnes et pas seulement des cases...

    itemChanged n'est levé que lorsque le contenu de la case a été modifié - et la case n'est généralement modifiable que si elle a été "sélectionnée" avant - i.e. vous avez, à priori, déjà reçu les signaux précédents.

    La question est plutôt de savoir quelles sont les actions qui pourront être associées aux différents changements d'états de la sélection et des contenus.
    - W

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Points : 93
    Points
    93
    Par défaut
    ok
    mais la question qui reste c'est comment alors connaitre la ligne et colonne s'il s'agit d'une cellule sous forme d'une liste déroulante ???
    ton exemple marche mais pas pour les cellules contenant des listes déroulantes !!!!

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 356
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 356
    Points : 36 884
    Points
    36 884
    Par défaut
    Citation Envoyé par nancy maman Voir le message
    ton exemple marche mais pas pour les cellules contenant des listes déroulantes
    currentCellChanged remonte bien lorsque la case contenant la comboBox est sélectionnée.

    Après c'est une question d'interface avec la bonne "boîte".

    Les changements d'état de la comboBox sont spécifiques à cette comboBox que celle ci soit incrustée dans la case d'une tableWidget ou autre...
    C'est un widget à part entière et si on ne connecte pas ses signaux, ils restent muets.
    - W

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    currentCellChanged remonte bien lorsque la case contenant la comboBox est sélectionnée.
    alors dans le cas ou j'ai une liste comment faire pour savoir la ligne et la colonne ?

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Points : 93
    Points
    93
    Par défaut
    yes
    il suffit juste de rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     print "row=%d, column=%d " % (
                                                       row0,col0)
    dans le code que j'avais postulé
    ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    from __future__ import division
    # Python 2.7
     
    import sys
    from PyQt4 import QtCore, QtGui
     
    #############################################################################
    def prendcase(table, row, col):
        """Retourne la valeur de la case [row, col] de la table QTableWidget"""
        item = table.item(row, col)
        if item == None:
            # soit la case n'a jamais �t� initialis�e, soit elle a un widget
            if issubclass(type(table.cellWidget(row,col)), QtGui.QComboBox):
                # c'est un combobox: renvoyer la valeur affich�e
                item = table.cellWidget(row,col) 
                return unicode(item.currentText()) 
            # la case ne contient rien: renvoyer une chaine vide
            return u""
        else:
            return unicode(item.text())
     
    #############################################################################
    class Fenetre(QtGui.QWidget):
     
        # =======================================================================
        def __init__(self, parent=None):
            super(Fenetre, self).__init__(parent)
     
            # cr�er le lineEdit
            self.lineEdit = QtGui.QLineEdit(self)
     
            # cr�er le tableau
            self.tableWidget = QtGui.QTableWidget(self)
            self.tableWidget.setGeometry(QtCore.QRect(0, 30, 361, 301))
            self.nbrow, self.nbcol = 5, 3
            self.tableWidget.setRowCount(self.nbrow)
            self.tableWidget.setColumnCount(self.nbcol)
     
            # on met un combobox en [row=1, col=1]
            self.listecombo = ['toto', 'titi', 'tata', 'tutu']
            self.combo = QtGui.QComboBox()
            self.combo.addItems(self.listecombo)
            self.rowcombo, self.colcombo = 1, 1
            self.tableWidget.setCellWidget(self.rowcombo, self.colcombo, self.combo)
     
                # lancera la m�thode saisieval � chaque changement de case
            QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('currentCellChanged(int,int,int,int)'), self.saisieval)
     
                # lancera la m�thode saisievalder � chaque changement de contenu de case
            QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('itemChanged(QTableWidgetItem *)'), self.saisievalder)
                #
            QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('itemClicked(QTableWidgetItem *)'),self._itemClicked)
     
                # mettre le focus sur la case [0,0] du tableau
            self.tableWidget.setFocus()
            self.tableWidget.setCurrentCell(0, 0)
     
        # =======================================================================
        def saisieval(self, row, col, row0, col0):
            """M�thode lanc�e � chaque changement de case du tableau
               row, col = coordonn�es de la nouvelle case
               row0, col0 = coordonn�es de l'ancienne case
            """
            val = prendcase(self.tableWidget, row0, col0)
            print val
            print "row=%d, column=%d " % (
                                                       row0,col0)
            self.lineEdit.setText(val)
     
        # =======================================================================
        def saisievalder(self, item):
            """m�thode lanc�e � chaque changement de contenu en fin d'�dition"""
            row = self.tableWidget.currentRow()
            col = self.tableWidget.currentColumn()
            if row==self.tableWidget.rowCount()-1 and col==self.tableWidget.columnCount()-1:
                val = prendcase(self.tableWidget, row, col)
     
                self.lineEdit.setText(val)
     
        def _itemClicked(self, item):
            print "text=%s, row=%d, column=%d" % (
                item.text(), item.row()+1, item.column()+1) 
    #############################################################################
    if __name__ == "__main__":
        app = QtGui.QApplication(sys.argv)
        fen = Fenetre()
        fen.show()
        sys.exit(app.exec_())
    on arrive alors à afficher la ligne et la colonne de chaque case meme s'il y a une liste derouante ...
    merci à tes conseils et à ta disponibilité

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Points : 93
    Points
    93
    Par défaut
    j'ai encore une question qui peut être bidon
    mais j'ai remarqué que quand je lance le programme et avant même de saisir
    j'ai ce résultat(c'est une chaine vide qui est renvoyée) :valeur saisie
    row=-1, column=-1

    voici le code pour le tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    from __future__ import division
    # Python 2.7
     
    import sys
    from PyQt4 import QtCore, QtGui
     
    #############################################################################
    def prendcase(table, row, col):
        """Retourne la valeur de la case [row, col] de la table QTableWidget"""
        item = table.item(row, col)
        if item == None:
            # soit la case n'a jamais �t� initialis�e, soit elle a un widget
            if issubclass(type(table.cellWidget(row,col)), QtGui.QComboBox):
                # c'est un combobox: renvoyer la valeur affich�e
                item = table.cellWidget(row,col) 
                return unicode(item.currentText()) 
            # la case ne contient rien: renvoyer une chaine vide
            return u""
        else:
            return unicode(item.text())
     
    #############################################################################
    class Fenetre(QtGui.QWidget):
     
        # =======================================================================
        def __init__(self, parent=None):
            super(Fenetre, self).__init__(parent)
     
            # cr�er le lineEdit
            self.lineEdit = QtGui.QLineEdit(self)
     
            # cr�er le tableau
            self.tableWidget = QtGui.QTableWidget(self)
            self.tableWidget.setGeometry(QtCore.QRect(0, 30, 361, 301))
            self.nbrow, self.nbcol = 5, 3
            self.tableWidget.setRowCount(self.nbrow)
            self.tableWidget.setColumnCount(self.nbcol)
     
            # on met un combobox en [row=1, col=1]
            self.listecombo = ['toto', 'titi', 'tata', 'tutu']
            self.combo = QtGui.QComboBox()
            self.combo.addItems(self.listecombo)
            self.rowcombo, self.colcombo = 1, 1
            self.tableWidget.setCellWidget(self.rowcombo, self.colcombo, self.combo)
     
                # lancera la m�thode saisieval � chaque changement de case
            QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('currentCellChanged(int,int,int,int)'), self.saisieval)
     
                # lancera la m�thode saisievalder � chaque changement de contenu de case
            QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('itemChanged(QTableWidgetItem *)'), self.saisievalder)
                #
            QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('itemClicked(QTableWidgetItem *)'),self._itemClicked)
     
                # mettre le focus sur la case [0,0] du tableau
            self.tableWidget.setFocus()
            self.tableWidget.setCurrentCell(0, 0)
     
        # =======================================================================
        def saisieval(self, row, col, row0, col0):
            """M�thode lanc�e � chaque changement de case du tableau
               row, col = coordonn�es de la nouvelle case
               row0, col0 = coordonn�es de l'ancienne case
            """
            val = prendcase(self.tableWidget, row0, col0)
            print "valeur saisie",val
            print "row=%d, column=%d " % (
                                                       row0,col0)
            self.lineEdit.setText(val)
     
        # =======================================================================
        def saisievalder(self, item):
            """m�thode lanc�e � chaque changement de contenu en fin d'�dition"""
            row = self.tableWidget.currentRow()
            col = self.tableWidget.currentColumn()
            if row==self.tableWidget.rowCount()-1 and col==self.tableWidget.columnCount()-1:
                val = prendcase(self.tableWidget, row, col)
     
                self.lineEdit.setText(val)
     
        def _itemClicked(self, item):
            print "text=%s, row=%d, column=%d" % (
                item.text(), item.row()+1, item.column()+1) 
    #############################################################################
    if __name__ == "__main__":
        app = QtGui.QApplication(sys.argv)
        fen = Fenetre()
        fen.show()
        sys.exit(app.exec_())
    et ce qu'on peut échapper à ca ? si oui comment ??

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] amélioration d'une fonction pour trouver la lettre de la colonne
    Par illight dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 16/12/2013, 15h48
  2. Rechercher 2 caractère pour récuperer la ligne
    Par SuperKnacky dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 03/08/2010, 10h29
  3. Fonction pour retourner des lignes "splittées"
    Par Jean-Marc68 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 23/03/2009, 21h55
  4. Réponses: 6
    Dernier message: 31/07/2006, 16h01
  5. Fonction pour récuperer mon adresse IP
    Par néo333 dans le forum Web & réseau
    Réponses: 11
    Dernier message: 01/11/2003, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo