2012-04-12 11 views
1

Ich habe den folgenden Code in tcl ..Druckwerte einer nach dem anderen in tcl

proc GetPPVSummary {} { 
    global LIBRARY DB_MACHINE ALT_MACHINE 

    set query "SELECT first 2 * from test ORDER by ppv_id DESC" 
    set result [mtlrequest $LIBRARY DbSelect "[email protected]$ALT_MACHINE|$query"] 

    return $result 
} 

set return_data [GetPPVSummary] 
puts $return_data 

die oben kehrt etwas wie folgt aus:

{{753 38 {2000.04.10 00 : 00: 00} {2000.04.11 00.00.00} 3 HQAWR 56897 PPV B Event_04292012_teaser {} Event_04292012_teaser The_World_Doesnt_Care {$ 99.00} {$ 0.01}}

Wie drucke ich nur die Werte eins nach dem anderen in tcl?

ok so habe ich versucht, die folgenden jetzt:

foreach record $return_data { 
    set event_date [lindex $record 1] 
    set attempts_cnt [lindex $record 2] 
    set success_cnt [lindex $record 3] 
    set fail_cnt [lindex $record 4] 
} 


puts $event_date 

Nun bekomme ich die ganze volle Zeile anstelle des ersten oder zweiten Wert ..

+0

gibt es eine offene Klammer als enge Klammern. Sind das genau deine Daten? –

+0

@Glennjackman, das ist mir auch aufgefallen, aber ich entschied, dass dies ein Kopier- und Einfügefehler war. Jetzt versuche ich das richtige Rowset im Kommentar-Thread unter meiner Antwort auf diese Frage zu bekommen - fühle dich frei, den Kräften beizutreten ;-) – kostix

+0

@ user856753, welche Ausgabe möchtest du sehen? –

Antwort

3

$ return_data Unter der Annahme ist eine Liste von Listen, die Sie wollen

foreach record $return_data { 
    foreach item $record { 
     puts $item 
    } 
} 
+0

752 2003 {2012-04-23 00:00:00} {2012-04-29 20:30:00} 1 10017 10018 PPV B Ereignis_04292012_teaser {} Event_04292012_HD_price {} {} {} ist was meine Daten sind – Micheal

+0

ok glenn's Lösung hat fast funktioniert, aber es lässt mich nicht in einer Variablen speichern und eins nach dem anderen anzeigen ... also werde ich eine neue Frage basierend auf den Ergebnissen meiner neuen Abfrage erstellen. Ich hoffe, dass ich mich dieses Mal klar mache ... sorry für all die Verwirrung! – Micheal

2

Wahrscheinlich mtlrequest gibt eine Liste so, wenn sie von " Wie drucke ich nur die Werte einzeln in tcl? " Sie wollte fragen: „Wie extrahiere ich Mitglieder aus diesem Wert“, gibt es mehrere mögliche Antworten: ein Mitglied einer Liste zu extrahieren durch seinen numerischen Index

  • lindex kann verwendet werden, wie set x [lindex $return_data 5] Variable „x gesetzt würde "auf den Wert HQAWR.
  • lassign (Tcl 8.5+) verwendet werden können Elemente einer Liste Wert auf eine Reihe von Variablen zugewiesen werden, wie lassign $return_data a b c d ...

Beachten Sie, dass diese { s und } haben keine besondere Bedeutung — sie sind das Ergebnis Tcl wandelt den Listenwert in eine Zeichenkette um (Sie haben ihn dazu aufgefordert, indem Sie puts verwenden): siehe this und this Teile von the tutorial für Erklärungen.

Es ist sehr ratsam, sich durch das ganze Tutorial zu arbeiten, sonst werden Sie gegen jedes winzige Problem den Kopf stoßen. Tcl ist viel einfacher als es auf den ersten Blick erscheinen mag, also nimm dir einfach Zeit und beherrsche seine Grundlagen.

+0

Ich sah das Tutorial und versuchte, etwas Code hinzuzufügen.Siehe meine bearbeitete Frage..aber ich sehe immer noch nicht das gewünschte Ergebnis. – Micheal

+0

OK, können Sie das Ergebnis von 'puts $ return_data' für Ihre Select-Abfrage, die, sagen wir, 10 Zeilen (nicht nur 2 wie in Ihrem ersten Beispiel), auf etwas wie http://pastebin.com? Damit wir nicht dazu verurteilt sind, ständig zu beraten. – kostix

+0

gepostet http://pastebin.com/nLvpJSpA – Micheal

Verwandte Themen