Bienvenue! Inscrivez-vous et rejoignez notre communauté :)
  • Login:

Bienvenue sur Forum SIG - Systèmes d'Information Géographique et Géomatique.

Bienvenue sur le forumSIG. S'il s'agit de votre première visite, assurez vous de faire une recherche préalable dans les FAQ SIG. Vous devez vous inscrire avant de pouvoir poster.

Affichage des résultats 1 à 5 sur 5
  1. #1

    Date d'inscription
    décembre 2013
    Messages
    12

    Par défaut Supprimer les tables temporaires "Query1" Query2" ....

    Bonjoour,

    je souhaite supprimer le contenu d'une selection faite par "souris" sur map et non pas pas requête SQL (select * ...) de la table A.

    donc après selection faite à la main et click sur Button "supprimer" les deux commandes suivantes se lancent

    Delete from selection
    drop table selection

    Ceci permet de supprimer les éléments souhaités efficacement de la table A, mais le problème est que comme si la commande "drop table selection" n'est plus fonctionnelle.
    De ce fait, et suite à plusieurs itérations de suppression, des table Query1, Query2, Query .... sont générés dont le contenu est vide.

    ma question et comment faire pour supprimer ces table Query de la liste des tables ?

    Merci

  2. #2

    Date d'inscription
    août 2011
    Localisation
    Paris
    Emploi
    Chargé de mission SIG
    Âge
    33
    Messages
    1 302

    Par défaut Re : Supprimer les tables temporaires "Query1" Query2" ....

    Après la suppression d'enregistrements, le compactage de la table concernée fermera automatiquement les tables temporaires.
    Ceci aura aussi pour effet d'enlever la table de toutes les cartes où il est présent.
    Son code fonctionnel autant dans la fenêtre Mapbasic que dans un programme Mapbasic :
    Code:
    Pack Table TA_TABLE Graphic Data
    Sinon, de faire un petit programme qui ferme toutes ces tables temporaires lors de son lancement :
    (à compiler avec le logiciel Mapbasic, disponible gratuitement depuis Mapinfo 10)
    Code:
    Include "mapbasic.def"
    
    DECLARE Sub main
    DECLARE Sub suppr_t_temp
    
    Sub main
    Create ButtonPad "F_T_TEMP" As
        PushButton
            HelpMsg "\nFermer les tables temporaires"
            Calling suppr_t_temp
            Icon 275
        Show
        Fixed
    End Sub
    
    Sub suppr_t_temp
    Dim i, nb_tab As Integer
    Dim tname As String
    
    nb_tab = NumTables()
    
    For i = 1 To nb_tab
        If TableInfo(i, TAB_INFO_TEMP) Then
            tname = TableInfo(i, TAB_INFO_NAME)
            Close tname
        End If
    Next
    End Sub

  3. #3

    Date d'inscription
    mai 2011
    Localisation
    Algérie
    Emploi
    Cadre d'études Carto/SIG
    Organisme
    Bureau National d'Etudes pour le Développement Rural
    Âge
    27
    Messages
    155

    Mes réseaux sociaux

    Add parazitenew on Facebook
    Add parazitenew on Linkedin

    Par défaut Re : Supprimer les tables temporaires "Query1" Query2" ....

    Bonsoir,

    Pour supprimer un objet tu dois passer par le SQL, mais sans Select, puisque c'est le Select qui t'ennuie. Voici un exemple:

    Code:
    Include "MapBasic.def"
    
    Declare Sub Main
    Declare Sub supprimer
    
    Dim i As Integer
    Sub Main()
    
    Dialog
    	Title "teste"
    	Width 100 Height 100
    	
    Control Button
    	Position 10,10
    	Width 50 Height 10
    	Calling supprimer
    	Title "Supprimer"
    	
    End Sub
    
    Sub supprimer
    	
    	i = SelectionInfo(SEL_INFO_NROWS)
    	
    	Delete From TABLE Where RowID = i
    	Drop Table Selection
    	
    End Sub
    Et le Drop Table Selection, fonctionne très bien, je viens de le tester chez moi.

    Pour la suppression des requêtes query, il faut le faire à la toute fin du script, il y a deux manières de faire.

    1) Spécifier l'alias de la table sélection à chaque sélection avec la clause Into:

    Code:
    Select * From TableA Into query
    query et le nom donné à la table de sélection, au lieu de travailler avec "Selection" par exemple:

    Code:
    Fetch First From Selection
    Il faut mettre:

    Code:
    Fetch First From query
    Ceci évite d'avoir des dizaines de query à la fin du script, il n'y aura q'un seul, tu pourras le supprimer avec:

    Code:
    Drop Table query
    2) Deuxième méthode, noter le nombre de table ouvertes avant le début du script avec NumTables(), l’enregistre dans une variable, à la fin du script on recalcule le nombre de tables ouvertes, si ce nombre est supérieur au nombre de départ, on crée une boucle For .. Next pour les fermer, avec i qui commence à partir du nombre de départ +1.
    Si j'ai pu t'aider, un petit pouce à gauche serait très apprécié

  4. #4

    Date d'inscription
    décembre 2013
    Messages
    12

    Par défaut Re : Supprimer les tables temporaires "Query1" Query2" ....

    Bonsoir,

    Merci pour vos réponses.

    Le problème avec l'utilisation d'alias est que la selection est faitre par l'utilisateur (via click sur l'objet) et non pas via requete sql pour lui attribuer un alias avec "into".

    est t'il possible d'attribuer un alias à une selection faite par click souris ?


    un autre problème en parcourant les tables Query est il y a des tables qui rendent l'erreur Query1 is read-only !! donc je n'arrive pas à le fermer !

  5. #5

    Date d'inscription
    mai 2011
    Localisation
    Algérie
    Emploi
    Cadre d'études Carto/SIG
    Organisme
    Bureau National d'Etudes pour le Développement Rural
    Âge
    27
    Messages
    155

    Mes réseaux sociaux

    Add parazitenew on Facebook
    Add parazitenew on Linkedin

    Par défaut Re : Supprimer les tables temporaires "Query1" Query2" ....

    Alors la méthode 2 est celle que tu dois utiliser.

    Pour le Read Only, en général ce problème survient lors de jointure de tables avec un fichier Excel, ta table sur laquelle tu effectues des requêtes est en lecture seule, donc normal que toutes les tables query se trouvent en lecture seule. Il faut réenregistrer la table originale avec un nouveau nom.
    Si j'ai pu t'aider, un petit pouce à gauche serait très apprécié

 

 

Discussions similaires

  1. [ArcGIS 10.x] Transfomer le type de champs "text" (droite) en "numerique" (gauche)
    Par medi87 dans le forum Assistance Technique
    Réponses: 7
    Dernier message: 08/05/2015, 10h55
  2. [ArcGIS 10.x] Model builder" profil de pile" et "enregistrer diagramme"
    Par hydrolithe dans le forum Programmation
    Réponses: 0
    Dernier message: 24/10/2013, 10h46
  3. [ArcGIS 10.x] Difference entre "Calculate polygon main angle" et "Zonal geometry"
    Par jrobra dans le forum Assistance Technique
    Réponses: 0
    Dernier message: 25/06/2012, 11h00
  4. [Access] Forcer une saisie de type "ZZ9999" ou "Z9999" dans une champ d'Access
    Par Bescu dans le forum Assistance et Programmation
    Réponses: 17
    Dernier message: 02/09/2011, 13h52
  5. Réponses: 6
    Dernier message: 18/03/2009, 17h57

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •