Een raster vernieuwd worden geen gegevens weergegeven wanneer een cursor wordt bijgewerkt tijdens het uitvoeren in Visual FoxPro


Symptomen


In Microsoft Visual FoxPro als de eigenschap recordbron (RecordSource) van een raster met een cursor wordt ingesteld en vervolgens dat de cursor tijdens runtime wordt bijgewerkt met een opdracht "SQL selecteert in Cursor CursorName"weergegeven het raster niet gegevens zelfs als u het vernieuwen met behulp van de opdracht ThisForm.Refresh of de ThisForm. GridName. Vernieuwen opdracht.

Oorzaak


Tijdens het uitvoeren van een SQL Select-instructie in dezelfde cursor opgegeven in de eigenschap recordbron (RecordSource) van het raster, moet de oorspronkelijke cursor worden vernietigd voordat de nieuwe cursor kan worden gemaakt. Wanneer dit gebeurt, worden de rasterkolommen en de recordbron (RecordSource) ook gewist en opnieuw gemaakt. De recordbron van het raster is ingesteld op de nieuwe cursor en kolommen in het raster automatisch wordt gemaakt. Geheel werkt nieuw raster. Daarom niet wordt geladen de gegevens van de cursor.

Oplossing


Om het raster in deze situatie wordt vernieuwd, stelt u de eigenschap recordbron (RecordSource) van het raster op zichzelf zoals in dit voorbeeld:
    thisform.grid1.recordsource=thisform.grid1.recordsource

Status


Dit gedrag is inherent aan het ontwerp.

Meer informatie


Voor meer informatie klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:

140653 een raster op cursor gebaseerde is leeg als de SELECT SQL-opdracht de cursor in Visual FoxPro wordt

Stappen om het gedrag te reproduceren

  1. Maak een formulier en voeg vervolgens de klant. DBF-tabel (in de map \VFP\SAMPLES\DATA) om de Data Environment.
  2. Plaats de volgende code in de gebeurtenis Load van het formulier:

    CREATE CURSOR Compdisp (company c(40),city c(15),country c(15))
  3. Plaats de volgende code in de gebeurtenis vernietigen van het formulier:
       SELECT Compdisp
    USE
  4. Maak een raster op het formulier en het raster geeft de volgende instellingen:
       ColumnCount=3
    RecordSourceType=Alias
    RecordSource=Compdisp
  5. Voeg een tekstvak toe aan het formulier.
  6. Een opdrachtknop met de volgende code in de Click -gebeurtenis toevoegen:
       SELECT company,city,country;
    FROM customer;
    WHERE customer.country=thisform.text1.value;
    INTO CURSOR Compdisp
    THISFORM.GRID1.REFRESH
  7. Het formulier wordt uitgevoerd. Frankrijk typt in het tekstvak en klik vervolgens op de knop.
Alle records moet worden weergegeven in het raster waar Customer.Country="France," maar dit niet het geval. Het raster is leeg. THISFROM. GRID1. VERNIEUWEN lijkt niet te werken van het raster. Dit gebeurt ook als de Cursor niet in de gebeurtenis Load van het formulier is gemaakt.


Om het raster de gegevens correct worden weergegeven, plaatst u de volgende opdracht als de laatste regel van de code voor de gebeurtenis Click van de knop:
   ThisForm.Grid1.RecordSource =ThisForm.Grid1.RecordSource