Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uses
- TypInfo;
- function GenerateInsertQuery(const Table: string; ADOQuery: TADOQuery;
- UseParamByName: Boolean = True): string;
- var
- I: Integer;
- SQLValues: string;
- SQLColumns: string;
- CodeParams: string;
- const
- Separator = ', ';
- begin
- if ADOQuery.Fields.Count = 0 then
- raise Exception.Create('ADOQuery has no field definitions!');
- SQLValues := '';
- SQLColumns := '';
- CodeParams := '';
- for I := 0 to ADOQuery.Fields.Count - 1 do
- begin
- SQLValues := SQLValues + ':' + ADOQuery.Fields[I].FieldName + Separator;
- SQLColumns := SQLColumns + ADOQuery.Fields[I].FieldName + Separator;
- if not UseParamByName then
- begin
- CodeParams := CodeParams + Format(' %s.Parameters[%d].Value := %s;', [ADOQuery.Name,
- I, Copy(GetEnumName(TypeInfo(TFieldType), Integer(ADOQuery.Fields[I].DataType)), 3,
- MaxInt) + 'ValueGoesHere']) + sLineBreak;
- end
- else
- begin
- CodeParams := CodeParams + Format(' %s.Parameters.ParamByName(''%s'').Value := %s;',
- [ADOQuery.Name, ADOQuery.Fields[I].FieldName, Copy(GetEnumName(TypeInfo(TFieldType),
- Integer(ADOQuery.Fields[I].DataType)), 3, MaxInt) + 'ValueGoesHere']) + sLineBreak;
- end;
- end;
- Delete(SQLValues, Length(SQLValues) - Length(Separator) + 1, Length(Separator));
- Delete(SQLColumns, Length(SQLColumns) - Length(Separator) + 1, Length(Separator));
- Delete(CodeParams, Length(CodeParams) - Length(sLineBreak) + 1, Length(sLineBreak));
- Result := 'var' + sLineBreak + ' ' + 'SQLQuery: string;' + sLineBreak + 'begin' + sLineBreak;
- Result := Result + ' SQLQuery := ';
- Result := Result + Format('''INSERT INTO %s (%s) VALUES (%s);'';', [Table, SQLColumns,
- SQLValues]) + sLineBreak + sLineBreak;
- Result := Result + CodeParams;
- Result := Result + sLineBreak + 'end;';
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement