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

Powerbuilder Discussion :

Transférer des lignes d'un datastore dans une table SQL


Sujet :

Powerbuilder

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 27
    Points : 18
    Points
    18
    Par défaut Transférer des lignes d'un datastore dans une table SQL
    Bonjour,

    Je souhaiterais savoir comment faire ceci :

    J'ai un datastore dont je veux transférer les données dans une table sybase.
    Avez-vous une idée ? Merci.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 108
    Points : 97
    Points
    97
    Par défaut
    Bonjour

    Pourquoi ne pas utiliser tout simplement la fonction update() du control datastore ?

    Il est possible aussi de modifier dynamique les proprietées du mise à jour du datastore...

    On peut utiliser aussi un autre datastore et transférer les données pas shareData ou rowsCopy puis faire un update....

    A+ Thig

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Une solution un peu basique : tu fais une boucle par rapport au nombre de lignes de ton datastore qui constitue des chaînes SQL et qui insère les données dans ta base.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Declare 
    int i 
    String marequete
    
    For i = 1 to datastore.rowcount()
      marequete = 'Insert into ma_table(col1,...,coln) values (:' + Getitemstring(i,'macolonne) + "','"
      execute immediate :marequete
    Next
    Excuse-moi mais il y a très longtemps que je n'ai plus developpé mais le principe est le bon.

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Merci pour la réponse.

    Mais le execute immediate :marequete ne passe pas
    J'obtiens un syntax error. Quel est le problème ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 56
    Points : 67
    Points
    67
    Par défaut Point virgule
    Probablement le point virgule que l'on doit mettre systematiquement a la fin de chaque instruction SQL
    execute immediate :marequete;

    Sinon, Thig a raison. C'est la solution la plus elegante. Pour cela il faut que le Datawindow object de ta datastore soit base sur requete SQL (pas externe) et updatable.
    Tu n'auras que : ds.update() a coder

    PS : desole pour l'absence d'accents, en QWERTY today

  6. #6
    Membre du Club Avatar de Doctor Z
    Inscrit en
    Mars 2004
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 88
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par vilcoyote0
    Une solution un peu basique : tu fais une boucle par rapport au nombre de lignes de ton datastore qui constitue des chaînes SQL et qui insère les données dans ta base.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Declare 
    int i 
    String marequete
    
    For i = 1 to datastore.rowcount()
      marequete = 'Insert into ma_table(col1,...,coln) values (:' + Getitemstring(i,'macolonne) + "','"
      execute immediate :marequete
    Next
    Excuse-moi mais il y a très longtemps que je n'ai plus developpé mais le principe est le bon.
    Bonjour,

    Pour une optimisation plus poussée, tu sauvegardes la valeur de
    datastore.RowCount () dans une variable li_RowCount, par exemple, et tu
    n'utilises plus que cette variable dans ta boucle : cela permet de t'éviter de
    réévaluer à chaque fois le nombre de lignes de ta datastore ...

    Bonne continuation.
    Doctor Z
    ----------
    Deus gosta do povo luso.
    Olivença, l'oubliée.

  7. #7
    rs
    rs est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 106
    Points : 96
    Points
    96
    Par défaut
    Bonjour,

    AMHA, il est en effet plus intéressant - comme le suggèrent Thig et Shahin - d'utiliser la méthode interne PB ds.update() que d'avoir à écrire du code supplémentaire.

    Pour être bien sûr d'avoir spécifié les bonnes propriétés de ton datastore, tu peux éventuellement construire en mode graphique la datawindow équivalente en prennant soin de bien renseigner ses 'update properties' et ensuite tu édites le code source de la dw que tu récupères comme code source du ds.

    Bon courage.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 56
    Points : 67
    Points
    67
    Par défaut Résolu
    Modérateurs/Modératrices, ne serait-il pas judicieux de tagger ce topic en ?
    Plusieurs bonnes réponses ont été apportées

Discussions similaires

  1. [10g] Transformer des lignes en colonne et updater une table
    Par philcphilc dans le forum SQL
    Réponses: 2
    Dernier message: 19/07/2013, 17h53
  2. Grouper des lignes selon un champs dans une listView
    Par Msysteme dans le forum Windows Forms
    Réponses: 10
    Dernier message: 26/02/2009, 19h13
  3. Réponses: 5
    Dernier message: 17/01/2007, 15h02
  4. Réponses: 2
    Dernier message: 19/05/2004, 10h13
  5. Réponses: 4
    Dernier message: 24/04/2003, 22h28

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