Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Update SQL, en reprenant valeur précédante [ Archives Visual Basic / J'AI BESOIN D'AIDE !!!! :) ] (lucio57)

jeudi 15 décembre 2005 à 15:25:09 | Update SQL, en reprenant valeur précédante

lucio57

Bonjour,
Je cherche à savoir, si il est possible par requête SQL de faire un update sur un champ en lui affectant la valeur de l'enregistrement précédent.

Je m'explique
J'ai une table contenant le code du dossier, le n° de compte et le montant. Mais pour certaines lignes le code dossier n'est pas renseigné. Ce qui signifie que la ligne correspond au précédent code dossier lu.
Exempl
Dossier   Compte  Montant
        1    601000  100000
               415000      1500
               300000         200
         2    701000     50000
               250000     400,50
        1    602000    200000
               405000      2500
               310000         200
En fait les lignes 2, 3,7,8 correspondent au dossier 1 et la ligne 5 au dossier 2

Mon souci est que ces données sont intégré dans la base à partir d'un fichier TXT par lot DTS. Donc je cherche à mettre jour le champ dossier d'un seul coup sans avoir à tout parcourir parce que j'ai près 500.000 enregistrements et ça risque d'être galêre à tout traîter 1 par 1.


D'avance merci pour votre aide

vendredi 16 décembre 2005 à 07:12:52 | Re : Update SQL, en reprenant valeur précédante

gaa179

Salut,

Dans ton transfert TXT vers BD dans le DTS, utilise un VBScript pour faire le transfert de tes données. Tu pourras ainsi garder la valeur du précédent dans un variable local, et si pour le suivant la valeur est vide, tu place la valeur de ta variable. Voici un exemple de code qui fait un check sur les colonnes et puis qui transfert les valeurs.

DTSSource("Col001") est la première colonne de ton fichier, DTS Destination("[Nom du champ"]) est le champ de ta table.  

'**********************************************************************
'  Visual Basic Transformation Script
'************************************************************************

'  Copy each source column to the destination column
Function Main()
 Dim szStationNumber  'StationNumber with leading zeros

 ' Check the record type
 IF DTSSource("Col001") = "E" then   ' Header record
  Main = DTSTransformStat_SkipRow ' Scip this record

 ELSEIF DTSSource("Col001") = "T" then  ' Record holding the totals
  WriteTotals(DTSSource("Col003"))
  Main = DTSTransformStat_SkipRow ' Scip this record

 ELSEIF DTSSource("Col001") = "D" then  ' Record holding data
  'Perform transformation
  'Check records
  'Add leading zero's before the station number
  szStationNumber = Right("000" & DTSGlobalVariables("StationNumber").Value,3)
  if DTSSource("Col002") <> szStationNumber then
   Main = DTSTransformStat_ExceptionRow
  else
   DTSDestination("CIMP_StationNumber") = DTSSource("Col002")
   DTSDestination("CIMP_ClientReferenceNumber") = DTSSource("Col003")
   DTSDestination("CIMP_KindOfEnergy") = DTSSource("Col004")
   DTSDestination("CIMP_DeliveryNumber") = DTSSource("Col005")
   DTSDestination("CIMP_CounterIdentification") = DTSSource("Col006")
   DTSDestination("CIMP_RegionNumber") = DTSSource("Col007")
   DTSDestination("CIMP_ExpiryDate") = DTSSource("Col008")
   DTSDestination("CIMP_CounterSerialNumber") = DTSSource("Col009")
   DTSDestination("CIMP_CounterNumberOfDigits") = DTSSource("Col010")
   DTSDestination("CIMP_IndexRangeMin") = DTSSource("Col011")
   DTSDestination("CIMP_IndexRangeMax") = DTSSource("Col012")
   DTSDestination("CIMP_IndexValue") = DTSSource("Col013")
   DTSDestination("CIMP_IndexDate") = DTSSource("Col014")
   DTSDestination("CIMP_IndexTime") = DTSSource("Col015")
   DTSDestination("CIMP_CounterPosition") = DTSSource("Col016")
   DTSDestination("CIMP_Status") = DTSSource("Col017")
   DTSDestination("CIMP_KeyDeliveryPlace") = DTSSource("Col018")
   DTSDestination("CIMP_CodeConnection") = DTSSource("Col019")
   Main = DTSTransformStat_OK
  end if

 ELSE      ' Wrong record type
  Main = DTSTransformStat_ExceptionRow
 END IF
End Function




Cette discussion est classé dans : code, dossier, sql, valeur, update


Répondre à ce message

Sujets en rapport avec ce message

UpDate et Insert sur VBA (Visiwatch) [ par Kosta ] Je code en VBA pour un logiciel qui s'appele Visiwatch.Mon problème : mise à jour des items d'une table, et insertion des valeurs dans une autre. Je t Code sql dynamique d'un Command !!!!!!!!!!!!!!!!!!!!!!!!!!!! [ par Filou ] Comment faire pour changer en cours de route le code sql d'un objet Command dans un DataEnvironment ? (je veux rajouter une condition where)J'ai essay code ascii de valeur entrante sur port serie [ par tibops ] Salut, je recupère une donnée qui provient du port serie d'un capteur, et je souhaiterais recuperer le code ASCII de cette donnée, cependant quand je sql et champ null [ par poulipe ] Bonjour,je voudrais rechercher dans ma base si il y a des champs null pour changer leurs valeurs en à ou en "".donc j ai mon sql :ssqlstring = "SELECT Urgent!! problème pour sur une requête SQL select dans le code [ par Nitocris ] Je travail sous access 2000Voilà je voudrais faire une selection de champ pour remplir par la suite un menu déroulant j'ai essayé avec l'aide elle ser Question SQL(UPDATE) sur ACCESS [ par cristiandan ] Bonjour,J'ai une base de donnée de type ACCESS qui contient un champ C1DTCMD de type date. Je voudrais par une requete mise a jour transformer toutes Aide en SQL ... Affectation d'une valeur dans un enregistrement précis d'1 table [ par trabetjp42 ] Etant débutant en SQL, j'aimerais savoir comment insérer une valeur dans le premier enregistrement égal à NULL, dans une table (sous VBA); voici ma li UPDATE error... [ par nd25 ] Voila,je dois convertir un prgm dao en ado...alors avec 1 base(access2000) bidon je fait des test...or je n'arrive pas à modifier des données...Ma bas langage SQL et date [ par moustakiz ] Bonjour,je cherche a déterminer les enregistrement dont la valeur d'un champ date (format complet j/m/a) appartient à l'année en cours.Quelle est la requete sql sur une feuille excel [ par molpfr ] J'ai un data sur une feuille excel (feuil1$) et je voudrai ne garder que les entrées qui correspondent à un certaine valeur sachant que j'ai trois cha


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,515 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.