2009-09-22 8 views
0

j'ai une des feuilles EXCEL witgh diversidentificateur non déclaré:

C: \ Documents and Settings \ delfi \ MilkDataMgr \ FtsExcel.pas (2056): identificateur non déclaré: smrBgm167GallonsGrosssDA'

procedure convertXSLToDelfi(fuel: TFtsFuelTypes; const prefix: string); 
var 
ColumnNameMap : TStrings; 
i    : Integer; 
other   : string; 
begin 

    { ColumnNameMap := TStrings; } 
    ColumnNameMap := TStringList.Create; 
    ColumnNameMap.Values['smrBgm229GallonsGross']:=' smrBgm167GallonsGrosssDA'; 
    i := ColumnNameMap.IndexOfName(smrBgm229GallonsGross); 
    if i >= 0 then 
    smrBgm229GallonsGross:= ColumnNameMap.Values[smrBgm229GallonsGross] 
    else 
    smrBgm229GallonsGross:= smrBgm229GallonsGross; 
end; 

une question détaillée dans ce lien, j'ai suivi la solution offerte là how to create Delphi 4 structure to map column names in XLS to column names in SQL

Je suis juste en train de ramasser les discussions aimablement m'aider.

+0

Une feuille Excel avec divers * quoi *? Cette question concerne-t-elle vraiment un identificateur non déclaré? Si oui, qu'est-ce que le code a à voir avec l'erreur? Veuillez copier et coller le code qui montre l'erreur. –

Répondre

1

Dans the code I gave you, notez que la valeur entre parenthèses pour la propriété Values était citée. C'est une chaîne. Peut-être que vous vouliez dire avoir « smrBgm229GallonsGross » entre guillemets, aussi, comme ceci:

ColumnNameMap.Values['smrBgm229GallonsGross'] := 'smrBgm167GallonsGrosssDA'; 

Dans votre code, le compilateur se plaint qu'il ne reconnaît pas l'identifiant smrBgm229GallonsGross. Regardez votre code. Avez- déclaré un tel identifiant? Si ce n'est pas le cas, vous ne pouvez pas vous attendre à ce que le compilateur sache ce que vous lui demandez, et le message d'erreur est parfaitement logique.

(Si vous utilisiez Perl, le compilateur aurait pu savoir ce que vous vouliez.Il y a certaines situations où un soi-disant "bareword" sera interprété comme un littéral de chaîne plutôt que comme un identifiant, mais c'est Perl, pas Delphi Jusqu'ici, je n'ai regardé que la première ligne de code qui mentionne smrBgm229GallonsGross. Cependant, il existe cinq autres lignes de code, où vous recherchez l'index du nom, puis affectez des valeurs à une variable, et celles-ci auront besoin d'une déclaration correcte d'une variable. Dans mon exemple, j'ai utilisé le nom de la variable inventée ColumnName pour représenter le nom de la colonne d'entrée que vous êtes en train de traiter à ce moment-là. J'ai supposé que vous itérez sur une liste de colonnes dans une boucle, donc vous feriez la même chose pour chaque colonne, en prenant une valeur de votre feuille de calcul Excel et en la transférant dans une colonne correspondante dans la base de données, représentée -made-up nom de la variable RealColumnName.

+0

vous avez raison Rob, il est indéfini dans la procédure que j'ai créée. De plus, je – vas

+0

codé comme "ColumnNameMap.Values ​​de smrBgm229GallonsGross ']: = 'smrBgm167GallonsGrosssDA', je fis un type ici." – vas

+0

Je correced le Typo .... Aussi je l'ai commenté {ColumnNameMap: = TStrings; } Je recevais une erreur "[Erreur] smrXcel.pas (2251): Types incompatibles:" TStrings "et" Référence de classe "" à l'endroit. où comme dans votre code il est inclus.Est-ce que c'est OK? – vas

Questions connexes