2012-11-18 4 views
0

travail sur notre système de rapport d'incendie ...ColdFusion - Inserts multiples - Numéro de piste à chaque insertion

suivi qui est sur les camions ... Alors Camion A, B Camion, Camion C

je peux obtenir les chiffres de l'effectif total - mais pas pour chaque camion ... Je suis un peu hors des idées ... en utilisant ColdFusion 8

Ce (numéro d'identification de véhicule) nvid choses que je sais ne fonctionne pas - juste compte le personnel total mais pas les camions individuels. Chaque camion possède une identification unique et une variable d'état-major qui y est attachée ... Les CFInserts fonctionnent bien pour le nombre total mais pas pour chaque numéro de camion.

Des idées sur la façon de suivre les numéros de personnel sur chaque camion? Thx ...

<cfset nvid = 0> 

    <cfloop from="1" to="#st.recordcount#" index="i"> 

    <cfif IsDefined("form.checkbox1_#i#")> 

    <cfoutput> 

    <cfset newvid = "vid_"&#variables.i#> 
    <cfset newloginid = "checkbox1_"&#variables.i#> 

    <cfset vid = "#Evaluate(variables.newvid)#"> 



    <cfset nvid = nvid + 1> 


    <cfset loginid = "#Evaluate(variables.newloginid)#"> 

    <br> 
    NewVid - #newvid# and VID - #vid# 
    <br> 
    cfquery name="insert" datasource="fire_report"> 

    INSERT INTO stafflist (id, unitid, loginid) 

    VALUES (#id#, #vid#, #loginid#); 

    /cfquery> 
    <br> 
    <br> 
    </cfoutput> 

    </cfif> 
    </cfloop> 
+0

Pouvez-vous envoyer votre code de formulaire et le [ddl] (http://en.wikipedia.org/wiki/Data_Definition_Language # CREATE_TABLE_statement) des tables de db pertinentes? Veuillez également mettre à jour les tags pour indiquer le type et la version de votre base de données. – Leigh

Répondre

-1

Décidé à vérifier les données après l'insertion .. Il fonctionne et peut-être c'était la façon la plus simple à moins que quelqu'un a autre chose plus simple ...

En gros - si les chiffres ne concordent pas sur un chèque de groupe - je cflocation pour supprimer les données précédentes insérées et les forcer à le faire à nouveau ...

 Check Data After Insert??? 

     <cfquery name="tcheck" datasource="fire_report"> 
     select * from stafflist 
     order by unitid 
     </cfquery> 
     <br> 


     <cfoutput query="tcheck" group=unitid> 

     <cfset groupCount = 0> 
     <cfoutput> 
     #unitid# 
     <cfset groupCount = groupCount + 1> 
     </cfoutput> 
     <br><br>Check vs Original 
     <br> 

     <cfquery name="ucheck" datasource="fire_report"> 
     select * from unit 
     WHERE ID=#id# and unitid = #unitid# 
     </cfquery> 
     Original: <cfoutput>#ucheck.unitid# - #ucheck.numff# &nbsp;</cfoutput> 


     GroupCount = #groupCount# 
     <br><br><cfif ucheck.numff NEQ groupCount> 

     Bad<br> 
     <cflocation url="staff.cfm?id=#id#&src=del"> 
     <cfelse>All Good<br></cfif> 
     </cfoutput> 
+0

Il y a presque certainement une méthode plus efficace qu'une insertion/suppression. Mais il serait utile de voir le code

. En aparté, le SQL ci-dessus est vulnérable à l'injection SQL. Utilisez toujours [cfqueryparam] (http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7f6f.html). – Leigh

0

Vous voudrez peut-être jeter un coup d'œil à votre modèle de données. Je soupçonne que dans la vraie vie, les personnes affectées à chaque camion peuvent changer avec le temps. Il n'y a rien dans votre échantillon de code pour indiquer que vous avez pensé à cela.

Pour votre question spécifique sur le comptage des personnes par camion, quelque chose comme ça fonctionnerait.

select TruckName, count(*) PeoplePerTruck 
from YourTruckTable join stafflist on TruckId = UnitId 
group by TruckName 
+0

Son pour signaler après le fait de qui était sur le camion - et il n'est pas connu auparavant - donc un modèle de case à cocher pour vérifier qui est là doit être fait ... D'où la variable i pour chaque personne unique - qui fait Je m'efforce de créer un compte, donc je sais que nous avons le bon nombre de personnes comptées sur chaque camion pour permettre l'insertion ... Parce que le code permettrait de dire tous les 7 maintenant 1 camion - quand il devrait compter 4 sur un et 3 sur l'autre pour être sûr que les chiffres sont corrects. –

+0

Je comprends votre intention. Votre code ne fait pas ce que vous espérez. Si vous savez à l'avance qu'il y avait 4 personnes sur le camion A et 3 sur le camion B, ces numéros doivent être entrés par un utilisateur. Ensuite, vous voulez vérifier si le nombre de personnes sélectionnées pour les camions A et B sont respectivement de 4 et 3. Votre code, tout simplement, ne le fait pas. –

Questions connexes