Announcement

Collapse
No announcement yet.

Identifier expected

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Identifier expected

    hallo zusammen,

    bin ein totaler neuanfänger was das programmieren angeht.

    mein problem besteht darin;

    es soll eine abfrage von der datenbank erstellt werden, die dann in eine excel datei geschrieben wird.

    Am ende kommt diese fehlermeldung
    Code:
    Compiling
    Compiler: [Error] (99:1): Identifier expected
    Compiling failed
    Hab hier auch mal den text, für jede kleine hilfe bin ich im voraus schon sehr dankbar.

    Code:
    program abfrage;
    const CRLF = #13+#10;
    var 
      XlsApp, XlsWorkBook, XlsWorksheet: variant;
      cNETTOEINZEL,nAbZeile,i:integer;
      cGUID,cAUFNR,cBestellt,Verzeichnis,Dateiname,cARTNR:string;
      nBestellt,nNettoEinzel:currency;
      oDialog:TUDFDialog;
    begin
    
      oDialog := TUDFDialog.Create;
      try
      
        oDialog.AddField('AUFNR.','AUFNR.',ftString,True,True,'',0);
        
        if oDialog.Execute then
        begin
               cAUFNR := oDialog.GetFieldValue('AUFNR.');
            oQuery.SQL.Text := 'SELECT kopfguid FROM kopf WHERE UPPER(AUFNR) LIKE UPPER ('+quotedstring(cAUFNR)+')';
            oQuery.Open;
            if oQuery.RecordCount = 1 then
            begin
              cGUID := oQuery.Fields.Fields[0].AsString;
            end
            else
            if oQuery.RecordCount > 1 then
            begin
              ShowMeldung('Mehr als 1 Ergebnis zu dieser Rechnungsnummer');
              exit;
            end
            else
            begin
              ShowMeldung('Rechnungsnummer: '+cAUFNR+' nicht gefunden!');
              exit;
            end
        end;
          
    
      Verzeichnis := '\D:\test\';
      Dateiname   := '123.xls';
      
      // Geschrieben wird ab Zeile 16 (in der ersten stehen die Überschriften)
      nAbZeile := 16;
      
      // Wir starten Excel im Hintergrund
      Dateiname := Verzeichnis + Dateiname;
      
      // Existiert die Datei?
      if not FileExists(Dateiname) then
      begin
        Dateiname := OpenDialog('Excel *.xls|*.xls','Exportdatei wählen');
    
        if not FileExists(Dateiname) then
        begin
          ShowMeldung('Die Datei : '+Dateiname+' ist nicht vorhanden!');
          exit;
        end;
      end;      
      
      
       XlsApp := CreateOleObject('Excel.Application');
      try
      XlsApp.Visible := False;
      XlsWorkbook  := XlsApp.Workbooks.Open(Dateiname, True, False); 
      XlsWorkbook  := XlsApp.Workbooks[1]; 
      XlsWorksheet := Xlsworkbook.Worksheets[1];   
                                                                                            //(postyp in (1,2)) AND
        oQuery.SQL.Text := 'SELECT ARTNR, Bestellt, NETTOEINZEL,zeilenid FROM position WHERE  kopfguid = '+quotedstring(cGUID)+' ORDER BY zeilenid';
        oQuery.Open;
        while not oQuery.eof do
        begin
          cARTNR := oQuery.Fields.Fields[0].Asstring;
          nBestellt := oQuery.Fields.Fields[1].AsCurrency;
          nNETTOEINZEL := oQuery.Fields.Fields[2].AsCurrency;
          
          
          //writeln(cARTNR);
          
          
          i:= nAbZeile; 
           
          XlsWorksheet.Cells[i,'A'].Value := cARTNR;
          XlsWorksheet.Cells[i,'B'].Value := nBestellt;
          XlsWorksheet.Cells[i,'C'].Value := nNETTOEINZEL;    
         
          oQuery.Next;
          
          i:= i +1; 
        
        end;
        
        //application.processmessages;
        finally
          begin
            oDialog.Free;
          end;
        end;
         
    end.

  • #2
    In Zeile 99 muss es end; heissen
    Christian

    Comment


    • #3
      nein leider nicht.

      es ist ein warenwirtschaftssystem aus dem die daten geschrieben werden sollen und es ist mit delphi/pascal geschrieben, das script wird mit einem UDF Editor erstellt

      Comment


      • #4
        try in Zeile 12
        try in Zeile 62
        aber nur ein finally in Zeile 93.

        Der zweite try/except/finally - block bleibt in Zeile 99 offen.

        weitere Fehler:
        - TUDFDialog ist nirgends definiert und es wird auch keine entsprechende Unit eingebunden.
        - oQuery ist nicht definiert
        - oQuery.Fields.Fields[0].AsString funktioniert wahrscheinlich nicht, oQuery.Fields[0].AsString wäre ggf. besser (ohne oquery zu kennnen)
        - quotedstring ist nicht definiert
        - showMeldung gibt es in Delphi nicht, ShowMessage gemeint?
        - für FileExists() muss SysUtils eingebunden werden
        - OpenDialog () gibt es nicht
        - CreateOleObject steht erst nach Einbinden vom OleAuto zur verfügung
        - cARTNR := oQuery.Fields.Fields[0].Asstring; schlägt fehl weil einem String kein Currency zugewiesen werden kann
        - Das Workbook sollte zum Schluss per .Save gespeichert werden
        - Excel sollte beendet werden (.Quit) sonst habt ihr Leichen in der Prozessliste

        .. to be continued :-(

        Alles in allem wohl noch ein steiniger Weg, aber das Grundkonzept sieht schon mal nicht schlecht aus.



        Nur interessehalber: wieso schreibt ihr den Code nicht in der Delphi - IDE? Da fallen solche Schnitzer doch am schnellsten auf.
        Kann das WWS den Code etwa selbst interpretieren?


        Viel Erfolg!
        Tino
        Ich habs gleich!
        ... sagte der Programmierer.

        Comment

        Working...
        X