2016-11-21 3 views
0

Ich bin vergleichsweise neu zu QTP/UFT. Ich schreibe einen Test und muss Daten von Global sowie Local Data Sheet in demselben Test verwenden.QTP/UFT - Zugriff auf mehrere Datenblätter in Schleife

Meine for Schleife ist so etwas wie:

Datatable.GetSheet("Global") 
RowCount = Datatable.GetRowCount 
For Cntr = 1 to RowCount 
    Datatable.SetCurrentRow(Cntr) 
    msgbox Datatable("Form", dtGlobalSheet) 'Form is my column Name from Global Data Sheet' 

    Datatable.GetSheet("Action1") 
    RowCount2 = Datatable.GetRowCount 
    For Cntr2 = 1 to RowCount2 
     Datatable.SetCurrentRow(Cntr2) 
     msgbox Datatable("Number", dtGlobalSheet) 'Number is my column Name from Action1 Data Sheet' 
    Next 
Next 

Meine Spaltenwerte werden immer von beiden Blätter durcheinander.

Antwort

1

Sie müssen Ihre Datenvariablen Variablen zuweisen, um besser damit arbeiten zu können.

  • Sie rufen Datatable.GetSheet("Global"), aber nicht zuweisen zu irgendwo.
  • Wenn Sie Datatable.GetRowCount verwenden, sagen Sie nicht tatsächlich UFT von welcher Datentabelle, um die rowcount zu bekommen, und das ist wahrscheinlich eines Ihrer Probleme.
  • Am Ende des Codes verwenden Sie msgbox Datatable("Number", dtGlobalSheet), aber Sie sollten wahrscheinlich msgbox Datatable("Number", dtLocalSheet) verwenden (vorausgesetzt, Sie haben diese Variablen irgendwo in Ihrem Code zugewiesen).

prüfen diese mögliche Lösung (nicht getestet):

Dim dtGlobal : Set dtGlobal = Datatable.GetSheet("Global") 
Dim dtLocal : Set dtLocal = Datatable.GetSheet("Action1") 
RowCount = dtGlobal.GetRowCount 
For Cntr = 1 to RowCount 
    'Working with global datatable 
    dtGlobal.SetCurrentRow(Cntr) 
    msgbox dtGlobal.GetParameter("Form") 'Form is my column Name from Global Data Sheet' 

    'Working with local datatable 
    RowCount2 = dtLocal.GetRowCount 
    For Cntr2 = 1 to RowCount2 
     dtLocal.SetCurrentRow(Cntr2) 
     msgbox dtLocal.GetParameter("Number") 'Number is my column Name from Action1 Data Sheet' 
    Next 
Next 

PS .: Nach genau definieren, welche Daten kommen aus dem Datatable, können Sie Ihre Schleife überprüfen, sollten Sie Ihre Logik, um sicherzustellen, ist richtig weil ich diesen Teil nicht überprüft habe. Lassen Sie mich wissen, ob dies für Sie funktioniert.

Glückliche Kodierung.

+1

Danke Victor für die schnelle Antwort .. Dies funktioniert mit nur einer Änderung .. Ich verwende UFT 12.54 und es unterstützt nicht dtGlobal.Value ("Form"). Also habe ich es einfach durch dtGlobal.GetParameter ("Form") ersetzt – phpfreak

+0

Ich bin froh, dass es geklappt hat. Leider habe ich kein UFT mehr, also habe ich die Methode von [tutorialspoint] (https://www.tutorialspoint.com/qtp/qtp_data_table_methods.htm) überprüft, da ich mich nicht daran erinnern konnte und es vorher nicht testen konnte. Ich rate Ihnen, diese Website für zukünftige Referenzen zu markieren;) –

+0

Sicher, ich tat. Vielen Dank! – phpfreak

Verwandte Themen