//////////////////////////////////////////////////////////////////// // // FGODBCResultSet.m // Commesse // // Created by Francesco Germinara on Sat Jun 12 2004. // // Copyright (c) 2004 SofTech di F.Germinara - www.germinara.it. All rights reserved. // // For information please contact me at info@germinara.it //////////////////////////////////////////////////////////////////// // History: // // Description: // //////////////////////////////////////////////////////////////////// #import "FGODBCResultSet.h" #import "FGODBCRecord.h" #import "fgChkUsr.h" @implementation FGODBCResultSet -(id)init{ self=[super init]; rows=[[NSMutableArray alloc]init]; return self; } //Init Object -(id) init:(fgChkUsr*) mainObject SetIdentifier:(NSString *) identifier tableView:(NSTableView *)aTableViewObject{ self=[super init]; rows=[[NSMutableArray alloc]init]; nLastNrows=0; //remember last number of rows //Salvo informazioni per funzioni particolari pLogonInfo=mainObject; strIdentifier=identifier; aTableObject=aTableViewObject; return self; } -(void)dealloc{ [rows removeAllObjects]; [rows release]; [strLastQuery release]; [super dealloc]; } //Esecute Query -(void)FillArray:(FGODBCRecord *)tabella SqlFilter:(NSString *) strFilter ProgressInd:(NSProgressIndicator *) pBar{ [rows removeAllObjects]; //1: Conto quanti c'e' ne sono... int nRecord=0; if([strFilter isEqualToString:@""]) nRecord=[tabella Count:strFilter]; else{ NSScanner *scanner = [NSScanner alloc]; NSString *countString=nil; [scanner initWithString:strFilter]; [scanner scanUpToString:@"order by" intoString:&countString]; nRecord=[tabella Count:countString]; [scanner release]; } if(pBar !=nil){ [pBar setToolTip: [NSString stringWithFormat:@"N.Record elaborati: %d",nRecord]]; [pBar startAnimation:self]; } //Query data ... int sts=0; sts=[tabella OpenQuery:strFilter]; while(sts==TRUE){ FGODBCRecord *tmpRecord; tmpRecord=[[FGODBCRecord alloc]initWithRecordData:tabella]; [rows addObject:tmpRecord]; [tmpRecord release]; sts=[tabella MoveNext]; } [tabella CloseQuery]; nLastNrows=[rows count]; table=tabella; [strLastQuery release]; strLastQuery=[[NSString alloc]initWithString:strFilter]; if(pBar !=nil){ [pBar stopAnimation:self]; } } //Return Single Field data row -(NSString *) GetData:(NSString *)colID atRow:(int) row{ NSString *strResult=nil; FGODBCRecord *tmpRecord=nil; tmpRecord=[rows objectAtIndex:row]; if(tmpRecord != nil){ strResult=[NSString stringWithFormat:@"%@",[[tmpRecord FieldInfo:colID] GetValue] ]; if([colID isEqualToString:@"scadenza"]){ NSString *strAA=[strResult substringWithRange:NSMakeRange(0,4)]; NSString *strMM=[strResult substringWithRange:NSMakeRange(4,2)]; NSString *strGG=[strResult substringWithRange:NSMakeRange(6,2)]; NSString * strData; strData=[NSString stringWithFormat:@"%@/%@/%@",strGG,strMM,strAA]; return strData; } //Cerco il numero totale delle ore per la persona indicata if([colID isEqualToString:@"Ore"] && [strIdentifier isEqualToString:@"causalischeda"]){ int sts=0; double oreTotali=0.0; NSString *strQueryTotOre; strQueryTotOre=[NSString stringWithFormat:@"WHERE giorno='%@' AND lavoratore='%@' AND codice_com='%@'", [pLogonInfo->pDelegateMainAppWnd->dataElaborazione DataR], [pLogonInfo->pDelegateMainAppWnd->stsDesUtente stringValue], [[tmpRecord FieldInfo:@"Codice"] GetValue]]; sts=[pLogonInfo->pTabOreLavori OpenQuery:strQueryTotOre]; while(sts==TRUE){ oreTotali+=[[[pLogonInfo->pTabOreLavori FieldInfo:@"ore"] GetValue] floatValue]; sts=[pLogonInfo->pTabOreLavori MoveNext]; } [pLogonInfo->pTabOreLavori CloseQuery]; NSString * strData; if(oreTotali>0.0) strData=[NSString stringWithFormat:@"%3.1f",oreTotali]; else strData=[NSString stringWithString:@""]; return strData; } } return strResult; } //Return numer of rows -(int)count{ return [rows count]; } //Redo initial query -(void)ReQuery:(NSProgressIndicator *) pBar{ [self FillArray:table SqlFilter:strLastQuery ProgressInd:pBar]; } //Free all data contents -(void)RemoveAllData{ [rows removeAllObjects]; } //Get Single Row data -(FGODBCRecord *)GetSingleRow:(int)row{ FGODBCRecord *tmpRecord; tmpRecord=[rows objectAtIndex:row]; return tmpRecord; } //Set Single Row data -(void)SetSingleRow:(FGODBCRecord *) rowData atRow:(int)row{ [rows replaceObjectAtIndex:row withObject:rowData]; } //Dato che questo oggetto รจ anche il datasource impostato per la tabella devo implementare questi metodi - (int) numberOfRowsInTableView: (NSTableView*) tableView { int nRecord=0; nRecord=[rows count]; return nRecord; } - (id) tableView: (NSTableView*) tableView objectValueForTableColumn: (NSTableColumn *) tableColumn row: (int) row { return([self GetData:[tableColumn identifier] atRow:row]); } //Add Row data -(void)AddRow:(FGODBCRecord *) rowData{ [rows addObject:rowData]; } @end