Visual FoxPro 98, работающий с курсорами и бровями, и цикл для добавления столбцов

*!*          TransForm(m.TCuatro,"@Z 999,999,999") + " "
*!*  CDate("mx",Val(Right(Allt(field(4,"_Actual")),2)),Val("20"+SubStr(Allt(field(3,"_Actual")),2,2))) + " N(15,2)," + ;
*!*           CDate("mx",Val(Right(Allt(field(5,"_Actual")),2)),Val("20"+SubStr(Allt(field(4,"_Actual")),2,2))) + " N(15,2)," + 
CadExel = CDate("mx",Val(Right(Allt(field(2,"_Actual")),2)),Val("20"+SubStr(Allt(field(2,"_Actual")),2,2))) + " N(15,2)," + ;         
          "Promedio N(15,2), " + ;
          "Cuota" + CDate("mx",__Mes,__Ano) + " N(12), " + ;
          "VsProm N(12,2), " + ;
          "Dobles N(12), Triples N(12), Fuera C(6)"
*!*           CDate("mx",Val(Right(Allt(field(6,"_Actual")),2)),Val("20"+SubStr(Allt(field(5,"_Actual")),2,2))) + " N(12),"
*!*           Padl(CDate("mx",Val(Right(Allt(field(4,"_Actual")),2)),Val("20"+SubStr(Allt(field(4,"_Actual")),2,2))),14) + " " + ;
*!*           Padl(CDate("mx",Val(Right(Allt(field(5,"_Actual")),2)),Val("20"+SubStr(Allt(field(5,"_Actual")),2,2))),14) + " " + 
TitNF   = Padl(CDate("mx",Val(Right(Allt(field(3,"_Actual")),2)),Val("20"+SubStr(Allt(field(3,"_Actual")),2,2))),14) + " " + ;
          Padl("Promedio",14) + " " + ;
          Padl("Cuota",11) + " " + ;
          Padl("VsAA",11) + " " + ;
          Padl("Dobles",11) + " " + ;
          Padl("Triples",11) + " " + ;
          Padl("Rango",5) + " " 
*!*           Padl(CDate("mx",Val(Right(Allt(field(6,"_Actual")),2)),Val("20"+SubStr(Allt(field(6,"_Actual")),2,2))),11) + " "

Select * From __Cadena Order By Que Into Cursor __Paso
Select __Cadena
Zap
Select __Paso
   Cad = "insert into __Cadena Values ( "
   For i= 1 To FCount()
      Cad = Cad + "__Paso." + Allt(Field(i,"__Paso")) + ","
   EndFor
   Cad = Left(Cad,Len(Cad)-1) + ")"
Go Top
Do While !Eof()
   &Cad
   Select __Paso
   Skip    
EndDo
Select __Paso
Use

*!* Set ClassLib To MyTool
*!* Barra = CreateObject("MiBarra")
*!* Barra.Dock(0)
*!* Barra.Show

*!* Define Class MiBarra As MyToolBar
*!* EndDefine
*!* Read Events
Select __Cadena
Go Top
Do vfreport With "Premier", TitNF , " Cuotas Club-Premier" + " de " + cDate("my",__Mes,__Ano) + IIf(__EsCF," (CF)"," (UV) "),"("+Allt(m.xNomPunto)+")",  "Cuotas",;
   CadExel,"",.F.,.F.,1,1,2,1,.F.,.F.,0

хорошо, что код является последней частью для создания этого: введите описание изображения здесь

так что вы можете видеть, что столбец вызывает столбец с вызовом «mar08», который является марзо 2008 или «март 2008», ну, в этом примере у меня есть столбец, но в части кода он должен иметь 3 или плюс столбцы, поэтому мне нужно добавить это строки для каждого столбца:

этот код для нового столбца

CDate("mx",Val(Right(Allt(field(3,"_Actual")),2)),Val("20"+SubStr(Allt(field(2,"_Actual")),2,2))) + " N(12)," + ;

и этот код для данных этого столбца

Padl(CDate("mx",Val(Right(Allt(field(3,"_Actual")),2)),Val("20"+SubStr(Allt(field(3,"_Actual")),2,2))),11) + " " + ;

мой вопрос

Как я могу сделать цикл для автоматического добавления кода для столбцов и данных?

я новичок в visual fox 98


person angel uc    schedule 03.07.2012    source источник
comment
Я, наверное, могу помочь, но этот код действительно уродлив... Я могу следовать ему, но все равно уродлив. Можете ли вы указать структуру таблицы, из которой поступают необработанные данные. Кроме того, выгрузите около 10 строк данных, из которых вы пытаетесь получить итоги, и покажите свою сетку в развернутом виде. Похоже, вы используете настраиваемый элемент управления сеткой, где + указывает на развертывание/свертывание дополнительных данных.   -  person DRapp    schedule 03.07.2012
comment
Нет такой вещи, как «Visual FoxPro 98».   -  person Alan B    schedule 26.08.2014


Ответы (1)


Если я понимаю, что вы спрашиваете здесь, как вы могли бы это сделать...

CadExel = ""
TitNF = ""
FOR X = 1 TO n (where n is the number of columns you want to add)
    CadExel = CadExel + CDate("mx",Val(Right(Allt(field(3,"_Actual")),2)),Val("20"+SubStr(Allt  (field(2,"_Actual")),2,2))) + " N(12),"
    TitNF = TitNF + Padl(CDate("mx",Val(Right(Allt(field(3,"_Actual")),2)),Val("20"+SubStr(Allt(field(3,"_Actual")),2,2))),11) + " "
ENDFOR

CadExel = CadExel + ; 
    "Promedio N(15,2), " + ;
      "Cuota" + CDate("mx",__Mes,__Ano) + " N(12), " + ;
      "VsProm N(12,2), " + ;
      "Dobles N(12), Triples N(12), Fuera C(6)"
TitNF = TitNF + ;
      Padl("Promedio",14) + " " + ;
      Padl("Cuota",11) + " " + ;
      Padl("VsAA",11) + " " + ;
      Padl("Dobles",11) + " " + ;
      Padl("Triples",11) + " " + ;
      Padl("Rango",5) + " " 

По сути, вы бы объединили свои столбцы в CadEx и данные своих столбцов в TitNF из цикла FOR. «X» — это переменная, которая увеличивается на каждой итерации, поэтому вам может понадобиться использовать ее где-то в переменных CadExel и TitNF, чтобы изменить часть выражения.

Если я далеко от этого, то, возможно, это, по крайней мере, даст вам представление о том, как использовать цикл FOR для построения столбца и данных столбца, которые вы ищете.

person Gene S    schedule 03.07.2012