Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вывод 2-х таблиц в грид, Связь "многие-ко-многим" / 1 сообщений из 1, страница 1 из 1
22.05.2007, 01:19
    #34541031
Jevgeniy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вывод 2-х таблиц в грид, Связь "многие-ко-многим"
Есть форма, на ней 2 грида. Нужно вывести информацию из 2-х таблиц и чтоб при нажатии на строку в 1-м гриде выбирались записи из другой таблицы, и отображались во 2-м гриде.

Вот код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
BOOL CZakazForm::OnInitDialog() 
{
    
    m_pZVSet = new CZakazViewSet(NULL);
    m_pZVSet->Open();

    CDialog::OnInitDialog();
//--------------------------------------------------------------------- 
    BOOL bFound;

    m_pZVSet->MoveFirst();
    
    while(!m_pZVSet->IsEOF()){
        bFound = FALSE;
        for(int i= 0 ; i<m_arId.GetSize();i++){
            if(m_arId[i].Compare(m_pZVSet->m_id)== 0 )
                bFound = TRUE;
        }
        if(!bFound){
            m_arId.Add(m_pZVSet->m_id);
            m_arBall.Add(m_pZVSet->m_overball);
            m_arSumm.Add(m_pZVSet->m_sum);
        }

/*      bFound = FALSE;
        for(i=0; i<m_arKol.GetSize();i++){
            if(m_arKol[i].Compare(m_pZVSet->m_count)==0)
                bFound = TRUE;
        }
        m_arKol.Add(m_pZVSet->m_count);
        }*/

        bFound = FALSE;
        for(i= 0 ; i<m_arArt.GetSize();i++){
            if(m_arArt[i].Compare(m_pZVSet->m_articul)== 0 )
                bFound = TRUE;
        }
        if(!bFound){
            m_arArt.Add(m_pZVSet->m_articul);
            m_arName.Add(m_pZVSet->m_name);
            m_arPrice.Add(m_pZVSet->m_price);
            m_arNetto.Add(m_pZVSet->m_netto);
        }
    m_pZVSet->MoveNext();
    }
    
    CRect rect;
    int nRowZakaz;
    int nRowProduct;

    GetClientRect(rect);
//  m_ZakazGrid.MoveWindow(rect,TRUE);
    m_ZakazGrid.RedrawWindow(
        NULL, 
        NULL,
        RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);
    m_ProductGrid.RedrawWindow(
        NULL, 
        NULL,
        RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE);

    m_ZakazGrid.SetCols( 3 );
    m_ZakazGrid.SetRows(m_arId.GetSize() +  1 );
    m_ProductGrid.SetCols( 4 );
    m_ProductGrid.SetRows(m_arArt.GetSize() +  1 );

    m_ZakazGrid.SetColWidth(- 1 ,  1440 );
    m_ProductGrid.SetColWidth(- 1 ,  1440 );
    
    m_ZakazGrid.SetRow( 0 );
    m_ZakazGrid.SetCol( 0 );
    m_ZakazGrid.SetText("¹ çàêàçà");
    m_ZakazGrid.SetCol( 1 );
    m_ZakazGrid.SetText("Ñóììà");
    m_ZakazGrid.SetCol( 2 );
    m_ZakazGrid.SetText("Áàëëû");
    m_ProductGrid.SetRow( 0 );
    m_ProductGrid.SetCol( 0 );
    m_ProductGrid.SetText("Àðòèêóë");
    m_ProductGrid.SetCol( 1 );
    m_ProductGrid.SetText("Íàèìåíîâàíèå");
    m_ProductGrid.SetCol( 2 );
    m_ProductGrid.SetText("ÍÅÒÒÎ");
    m_ProductGrid.SetCol( 3 );
    m_ProductGrid.SetText("Öåíà");

    nRowZakaz = m_arId.GetSize();
    for(int i= 0 ; i<nRowZakaz; i++){
        m_ZakazGrid.SetRow(i +  1 );
        
        m_ZakazGrid.SetCol( 0 );
        m_ZakazGrid.SetText(m_arId[i]);

        m_ZakazGrid.SetCol( 1 );
        m_ZakazGrid.SetText(m_arSumm[i]);

        m_ZakazGrid.SetCol( 2 );
        m_ZakazGrid.SetText(m_arBall[i]);
    }
    
    nRowProduct = m_arArt.GetSize();
    for(i= 0 ; i<nRowProduct; i++){
        m_ProductGrid.SetRow(i +  1 );
        
        m_ProductGrid.SetCol( 0 );
        m_ProductGrid.SetText(m_arArt[i]);
        m_ProductGrid.SetCol( 1 );
        m_ProductGrid.SetText(m_arName[i]);
        m_ProductGrid.SetCol( 2 );
        m_ProductGrid.SetText(m_arNetto[i]);
        m_ProductGrid.SetCol( 3 );
        m_ProductGrid.SetText(m_arPrice[i]);
    }
    m_ZakazGrid.SetRow(iRowZakaz);
    m_ZakazGrid.SetCol( 1 );
    m_ProductGrid.SetRow(iRowProduct);
    m_ProductGrid.SetCol( 1 );
//---------------------------------------------------------------------     
    return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
}

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
void CZakazForm::OnClickZakazGrid() 
{ 
    CString buf;
    BOOL bFound;
    if(m_ZakazGrid.GetCol()!= 0 ){
        iRowZakaz = m_ZakazGrid.GetRow();
        m_ZakazGrid.SetRowSel(iRowZakaz);
        buf = m_ZakazGrid.GetText();
        m_ZakazGrid.SetColSel(m_ZakazGrid.GetCols()- 1 );
    }
    m_arArt.RemoveAll();
    m_arName.RemoveAll();
    m_arNetto.RemoveAll();
    m_arPrice.RemoveAll();
    m_pZVSet->MoveFirst();
    while(!m_pZVSet->IsEOF()){
        if(m_pZVSet->m_id.Compare(buf)== 0 ){
            bFound=FALSE;
            for(int i= 0 ;i<m_arArt.GetSize();i++){
                if(m_arArt[i].Compare(m_pZVSet->m_articul)== 0 )
                    bFound=TRUE;
            }
            if(!bFound){
                m_arArt.Add(m_pZVSet->m_articul);
                m_arName.Add(m_pZVSet->m_name);
                m_arNetto.Add(m_pZVSet->m_netto);
                m_arPrice.Add(m_pZVSet->m_price);
            }
        }
        m_pZVSet->MoveNext();
    }
    Invalidate();
}

Что получается. Нажимаю на запись в 1-м (m_ZakazGrid) гриде, а во втором (m_ProductGrid) ничего не происходит. Что это может быть? Как можно решить вопрос другими способами?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Вывод 2-х таблиц в грид, Связь "многие-ко-многим" / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]