Copier des données dans table depuis une listIcon

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
anissa
Messages : 136
Inscription : mer. 13/oct./2010 15:43

Copier des données dans table depuis une listIcon

Message par anissa »

Bonjour

Existe t il un moyen rapide de copier les enregistrements dans une table (sqlite) à partir d'une ListIconGadget? La méthode classique marche bien mais elle est trop lente...

Code : Tout sélectionner

For Wrow=0 to CountGadgetItems(#Grid)-1 
     For Wcol= 0 to 3
          Wdata$(Wcol)=GetGadetItemText(#Grid,Wrow,Wcol)
     Next Wcol     
     Wsql = "Insert Into MaTable (Col0,Col1,Col2,Col3) Values ("
     Wsql + Chr(34) + Wdata$(0) + Chr(34) + ","
     Wsql + Chr(34) + Wdata$(1) + Chr(34) + ","
     Wsql + Chr(34) + Wdata$(2) + Chr(34) + ","
     Wsql + Chr(34) + Wdata$(3) + Chr(34) + ")"
     CheckDataBaseUpdate(MaBase,Wsql)
Next Wrow
Ce code marche bien mais devient trop lent en fonction du nombre de lignes dans la liste
(Dans mon exemple 1146 enregistrements)

Existe til une solution meilleure plus rapide ?

Merci à tous

Anissa
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Copier des données dans table depuis une listIcon

Message par graph100 »

C'est pas possible d'envoyer plusieurs lignes avec une seule requête sql ?
d'abord tu construit ta requête, puis tu envoie toutes les instructions d'un coup ??
ça me parait faisable pour 1000 lignes
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Copier des données dans table depuis une listIcon

Message par graph100 »

j'ai regardé, tu fais tes requêtes de la forme :

Code : Tout sélectionner

grosse_requête = "requête ; requête ; etc ...."
DataBaseUpdate(0, grosse_requête)
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
anissa
Messages : 136
Inscription : mer. 13/oct./2010 15:43

Re: Copier des données dans table depuis une listIcon

Message par anissa »

grosse_requête = "requête ; requête ; etc ...."
DataBaseUpdate(0, grosse_requête)
Mais comment construire toutes ces requêtes dans grosse_requête?
Je ne vois pas comment extraire ces données du grid pour les insérer d'un seul coup
sauf si je n'ai pas bien compris le contenu de cette grosse requête.

Un exemple de code est ce que c possible svp?

Merci
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Copier des données dans table depuis une listIcon

Message par graph100 »

anissa a écrit :

Code : Tout sélectionner

For Wrow=0 to CountGadgetItems(#Grid)-1 
     For Wcol= 0 to 3
          Wdata$(Wcol)=GetGadetItemText(#Grid,Wrow,Wcol)
     Next Wcol     
     Wsql = "Insert Into MaTable (Col0,Col1,Col2,Col3) Values ("
     Wsql + Chr(34) + Wdata$(0) + Chr(34) + ","
     Wsql + Chr(34) + Wdata$(1) + Chr(34) + ","
     Wsql + Chr(34) + Wdata$(2) + Chr(34) + ","
     Wsql + Chr(34) + Wdata$(3) + Chr(34) + ")"
     CheckDataBaseUpdate(MaBase,Wsql)
Next Wrow
bah tout simplement en reprenant chaque requête que tu construits dans ton code ci-dessus :)

Là j'ai grillé l'alim de mon pc, et je suis saoul, donc je te répond sans avoir passer le code par purebasic -_-

Code : Tout sélectionner

grosse_requete.s = ""

For Wrow = 0 to CountGadgetItems(#Grid) - 1 
     For Wcol= 0 to 3
          Wdata$(Wcol) = GetGadetItemText(#Grid, Wrow, Wcol)
     Next Wcol

     Wsql.s = "Insert Into MaTable (Col0,Col1,Col2,Col3) Values ("
     Wsql + Chr(34) + Wdata$(0) + Chr(34) + ","
     Wsql + Chr(34) + Wdata$(1) + Chr(34) + ","
     Wsql + Chr(34) + Wdata$(2) + Chr(34) + ","
     Wsql + Chr(34) + Wdata$(3) + Chr(34) + ")"

     grosse_requete = grosse_requete + Wsql + ";"
Next Wrow

; on enlève le dernier ';' je sais pas si c'est utile ...
grosse_requete = left(grosse_requete, len(grosse_requete) - 1)

CheckDataBaseUpdate(MaBase, grosse_requete)
Du coup, comme tu as sortie la requète SQL de la boucle, et que tu la fait qu'une seule fois, ca va aller bcp plus vite je pense !
C'est la requète sql qui prend du temps, pas le reste, donc le but est toujours de mettre ce qui prend le plus de temps en dehors des boucles
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Répondre