private void FillFieldList()
        {
            comboBoxField.Items.Clear();

            FieldCollection fields;
            if (radioButtonCD.Checked)
            {
                fields = FieldHelper.GetAllCDFields(true);
            }
            else
            {
                fields = FieldHelper.GetAllTrackFields(true);
            }

            CDQueryDataSet ds = new CDQueryDataSet();

            foreach (Field field in fields)
            {
                DataColumn dataColumn;

                dataColumn = DataBase.GetDataColumnByField(field);

                if (dataColumn != null && dataColumn.DataType == typeof(string))
                    comboBoxField.Items.Add(new ComboBoxItem(dataBase, field));
            }
        }
Example #2
0
        public List <SearchResultItem> Search(string searchFor)
        {
            List <SearchResultItem> hits = new List <SearchResultItem>();

            CDQueryDataSet dataSet = DataBase.ExecuteTrackQuery();

            foreach (CDQueryDataSet.TrackRow track in dataSet.Track)
            {
                string trackArtist = track.GetStringByField(DataBase, Field.ArtistTrackName) ?? "";
                string trackTitle  = (track.Title == null) ? "" : track.Title;
                if (trackArtist.IndexOf(searchFor, StringComparison.InvariantCultureIgnoreCase) >= 0 || trackTitle.IndexOf(searchFor, StringComparison.InvariantCultureIgnoreCase) >= 0)
                {
                    if (track.SoundFile != null && File.Exists(track.SoundFile))
                    {
                        byte[] imageArray = GetCoverFromTrack(track);

                        SearchResultItem sri = new SearchResultItem()
                        {
                            TrackID       = track.TrackID,
                            Artist        = trackArtist,
                            Title         = track.Title,
                            Length        = track.Length,
                            SoundFilename = track.SoundFile,
                            CoverImage    = imageArray
                        };
                        hits.Add(sri);
                    }
                }
            }


            return(hits);
        }
Example #3
0
        void printDocument_BeginPrint(object sender, PrintEventArgs e)
        {
            currentPrintRecord = 0;
            currentPage        = 0;

            switch (printType)
            {
            case PrintType.CDList:
            {
                cdQuery = dataBase.ExecuteCDQuery();
                CDView  = new CDDataView(dataBase, cdQuery, printFilter, cdSortFields, cdListFields.GetFields());
                break;
            }

            case PrintType.DetailList:
            {
                cdQuery = dataBase.ExecuteCDQuery();
                DataView view = dataBase.GetCDQueryView(cdQuery, detailListFields, printFilter, cdSortFields);
                queryTable = view.ToTable();
                break;
            }

            case PrintType.DetailListWithTracks:
            {
                cdQuery = dataBase.ExecuteCDQuery();
                CDView  = new CDDataView(dataBase, cdQuery, printFilter, cdSortFields);
                break;
            }

            case PrintType.TrackList:
            {
                cdQuery   = dataBase.ExecuteTrackQuery();
                TrackView = new TrackDataView(dataBase, cdQuery, printFilter, trackSortFields);

                break;
            }
            }
        }
        private string BuildFileName(int track)
        {
            string form = textFormatFile.Text;

            string          fieldcontent;
            string          fieldcontentNew;
            string          fieldName;
            FieldCollection fields       = FieldHelper.GetAllCDFields(false);
            FieldCollection track_fields = FieldHelper.GetAllTrackFields(false);

            // Dann liegt wohl keine CD im Laufwerk
            if (CD.ID == 0)
            {
                return("");
            }

            CDQueryDataSet CDQuery = DataBase.GetCDQueryById(CD.ID);

            foreach (Field field in fields)
            {
                try
                {
                    fieldName = DataBase.GetNameOfField(field);
                    if (form.IndexOf("[" + fieldName + "]") >= 0)
                    {
                        fieldcontent = CDQuery.CD[0].GetStringByField(DataBase, field);

                        // Hier unbedingt Backslashes aus Feldinhalten entfernen bzw. ersetzen
                        fieldcontent = fieldcontent.Replace("\\", Settings.Current.RecordFileNameCharBackslash);

                        form = form.Replace("[" + fieldName + "]", fieldcontent);
                    }
                }
                catch
                {
                }
            }

            foreach (Field field in track_fields)
            {
                try
                {
                    fieldName = DataBase.GetNameOfField(field);

                    if (form.IndexOf("[Track - " + fieldName + "]") >= 0)
                    {
                        fieldcontent = CD.GetTrackStringByField(track, field);

                        // Hier unbedingt Backslashes aus Feldinhalten entfernen bzw. ersetzen
                        fieldcontent = fieldcontent.Replace("\\", Settings.Current.RecordFileNameCharBackslash);

                        // Sonderbehandlung für Nr. Feld
                        if (fieldName == "Nr.")
                        {
                            //if (CD.NumberOfTracks > 9)
                            // Immer 2 Stellen auch wenn unter 10 Tracks
                            fieldcontentNew = string.Format("{0:00}", Convert.ToInt32(fieldcontent));

                            if (CD.NumberOfTracks > 99)
                            {
                                fieldcontentNew = string.Format("{0:000}", Convert.ToInt32(fieldcontent));
                            }

                            if (CD.NumberOfTracks > 999)
                            {
                                fieldcontentNew = string.Format("{0:0000}", Convert.ToInt32(fieldcontent));
                            }

                            form = form.Replace("[Track - " + fieldName + "]", fieldcontentNew);
                        }
                        else
                        {
                            form = form.Replace("[Track - " + fieldName + "]", fieldcontent);
                        }
                    }
                }
                catch
                {
                }
            }

            // Jetzt müssen noch eventuell nicht erlaubte Zeichen entfernt werden
            // Der Backslash hier nicht, nur im Feldnamen, siehe oben
            form = form.Replace("\"", Settings.Current.RecordFileNameCharAnfuehrung);
            //form = form.Replace("\\", Settings.Current.RecordFileNameCharBackslash);
            form = form.Replace(":", Settings.Current.RecordFileNameCharDoppelpunkt);
            form = form.Replace("?", Settings.Current.RecordFileNameCharFragezeichen);
            form = form.Replace(">", Settings.Current.RecordFileNameCharGroesser);
            form = form.Replace("<", Settings.Current.RecordFileNameCharKleiner);
            form = form.Replace("|", Settings.Current.RecordFileNameCharPipe);
            form = form.Replace("/", Settings.Current.RecordFileNameCharSlash);
            form = form.Replace("*", Settings.Current.RecordFileNameCharStern);
            if (Settings.Current.RecordFileNameCharUserOrg1.Length > 0)
            {
                form = form.Replace(Settings.Current.RecordFileNameCharUserOrg1, Settings.Current.RecordFileNameCharUserNew1);
            }
            if (Settings.Current.RecordFileNameCharUserOrg2.Length > 0)
            {
                form = form.Replace(Settings.Current.RecordFileNameCharUserOrg2, Settings.Current.RecordFileNameCharUserNew2);
            }
            if (Settings.Current.RecordFileNameCharUserOrg3.Length > 0)
            {
                form = form.Replace(Settings.Current.RecordFileNameCharUserOrg3, Settings.Current.RecordFileNameCharUserNew3);
            }
            if (Settings.Current.RecordFileNameCharUserOrg4.Length > 0)
            {
                form = form.Replace(Settings.Current.RecordFileNameCharUserOrg4, Settings.Current.RecordFileNameCharUserNew4);
            }
            if (Settings.Current.RecordFileNameCharUserOrg5.Length > 0)
            {
                form = form.Replace(Settings.Current.RecordFileNameCharUserOrg5, Settings.Current.RecordFileNameCharUserNew5);
            }
            if (Settings.Current.RecordFileNameCharUserOrg6.Length > 0)
            {
                form = form.Replace(Settings.Current.RecordFileNameCharUserOrg6, Settings.Current.RecordFileNameCharUserNew6);
            }

            textExample.Text = Recordmedium.textFileDir.Text + "\\" + form;

            //textFormatFile.Text = listTemplates.Text;
            SelectedNameFormat = textFormatFile.Text;

            return(form);
        }
        private void buildFileName()
        {
            string          form = textFormatFile.Text;
            string          fieldcontent;
            string          fieldName;
            FieldCollection fields       = FieldHelper.GetAllCDFields(false);
            FieldCollection track_fields = FieldHelper.GetAllTrackFields(false);

            CDQueryDataSet CDQuery = DataBase.GetCDQueryById(CD.ID);

            foreach (Field field in fields)
            {
                try
                {
                    fieldName = DataBase.GetNameOfField(field);
                    if (form.IndexOf("[" + fieldName + "]") >= 0)
                    {
                        fieldcontent = CDQuery.CD[0].GetStringByField(DataBase, field);
                        form         = form.Replace("[" + fieldName + "]", fieldcontent);
                    }
                }
                catch
                {
                }
            }

            foreach (Field field in track_fields)
            {
                try
                {
                    fieldName = DataBase.GetNameOfField(field);

                    if (form.IndexOf("[Track - " + fieldName + "]") >= 0)
                    {
                        fieldcontent = CD.GetTrackStringByField(currentselectedSampleTrack, field);

                        if (fieldName == "Nr.")
                        {
                            if (CD.NumberOfTracks > 9)
                            {
                                fieldcontent = string.Format("{0:00}", Convert.ToInt32(fieldcontent));
                            }

                            if (CD.NumberOfTracks > 99)
                            {
                                fieldcontent = string.Format("{0:000}", Convert.ToInt32(fieldcontent));
                            }

                            form = form.Replace("[Track - " + fieldName + "]", fieldcontent);
                        }
                        else
                        {
                            form = form.Replace("[Track - " + fieldName + "]", fieldcontent);
                        }
                    }
                }
                catch
                {
                }
            }

            //form = form.Replace("[Titel]", CD.Title);
            //form = form.Replace("[Interpret]", CD.Artist);
            //form = form.Replace("[Track-Titel]", CD.Tracks[currentselectedSampleTrack].Title);
            //form = form.Replace("[Track-Interpret]", CD.Tracks[currentselectedSampleTrack].Artist);
            //form = form.Replace("[Tracknummer]", CD.Tracks[currentselectedSampleTrack].TrackNumber.ToString());
        }
Example #6
0
        public TrackDataView(DataBase db, CDQueryDataSet cdQuery, Condition condition, SortFieldCollection sortedFields, FieldCollection fields)
        {
            // Zunächst die Spalten definieren
            for (int col = 0; col < fields.Count; col++)
            {
                AddField(db, fields[col]);
            }

            if (sortedFields != null)
            {
                for (int col = 0; col < sortedFields.Count; col++)
                {
                    Field field = GetRealSortField(sortedFields[col].Field);

                    AddField(db, field);
                }
            }

            if (condition != null)
            {
                // Jetzt noch die Spalten für die Condition definieren
                for (int col = 0; col < condition.Count; col++)
                {
                    if (!fieldsValueDictionary.ContainsKey(condition[col].Field))
                    {
                        AddField(db, condition[col].Field);
                    }
                }
            }

            // Für die ID des Tracks auch noch eine Spalte vorsehen
            DataColumn dc = new DataColumn();

            dc.Caption  = "TrackID";
            dc.DataType = typeof(int);
            dataTable.Columns.Add(dc);
            TrackIDColumnName = dc.ColumnName;
            fieldsValueDictionary.Add(Field.TrackID, TrackIDColumnName);
            fieldsStringDictionary.Add(Field.TrackID, TrackIDColumnName);

            // Für die ID der CD auch noch eine Spalte vorsehen
            DataColumn dcCD = new DataColumn();

            dcCD.Caption  = "CDID";
            dcCD.DataType = typeof(int);
            dataTable.Columns.Add(dcCD);
            CDIDColumnName = dcCD.ColumnName;
            fieldsValueDictionary.Add(Field.CDID, CDIDColumnName);
            fieldsStringDictionary.Add(Field.CDID, CDIDColumnName);

            // Für die ID des Interpreten auch noch eine Spalte vorsehen
            DataColumn dcArtist = new DataColumn();

            dcArtist.Caption  = "ArtistID";
            dcArtist.DataType = typeof(int);
            dataTable.Columns.Add(dcArtist);
            ArtistIDColumnName = dcArtist.ColumnName;

            // Für die ID des CD-Interpreten auch noch eine Spalte vorsehen
            DataColumn dcCDArtist = new DataColumn();

            dcCDArtist.Caption  = "ArtistCDID";
            dcCDArtist.DataType = typeof(int);
            dataTable.Columns.Add(dcCDArtist);
            ArtistCDIDColumnName = dcCDArtist.ColumnName;

            // Alle Inhalte füllen
            for (int i = 0; i < cdQuery.Track.Count; i++)
            {
                object[] values   = new object[fieldsToRead.Count * 2 + 4];
                int      colCount = 0;

                for (int col = 0; col < fieldsToRead.Count; col++)
                {
                    object rawValue = cdQuery.Track[i].GetValueByField(db, fieldsToRead[col]);

                    string stringValue = CDQueryDataSet.TrackRow.GetStringByValue(db, fieldsToRead[col], rawValue);

                    values[colCount++] = stringValue;

                    if (Settings.Current.SortArchiveNumberNumeric && fieldsToRead[col] == Field.ArchiveNumber)
                    {
                        rawValue = Misc.Atoi((string)rawValue);
                    }

                    values[colCount++] = rawValue;
                }

                values[colCount++] = cdQuery.Track[i].TrackID;
                values[colCount++] = cdQuery.Track[i].CDID;
                values[colCount++] = cdQuery.Track[i].ArtistID;
                values[colCount++] = cdQuery.Track[i].CDRow.ArtistID;

                dataTable.Rows.Add(values);
            }

            // Sortierung definieren
            string sortString = "";

            foreach (SortField sortField in sortedFields)
            {
                Field field = GetRealSortField(sortField.Field);

                if (fieldsStringDictionary.ContainsKey(field))
                {
                    if (!string.IsNullOrEmpty(sortString))
                    {
                        sortString += ", ";
                    }

                    // Bei einigen Feldern wird nach Wert sortiert, bei den meisten nach der String-Repräsentation
                    if (SortFieldByValue(db, field))
                    {
                        sortString += fieldsValueDictionary[field];
                    }
                    else
                    {
                        sortString += fieldsStringDictionary[field];
                    }

                    if (sortField.SortDirection == SortDirection.Descending)
                    {
                        sortString += " DESC";
                    }
                }
            }

            dataTable.DefaultView.Sort = sortString;

            if (condition != null)
            {
                string filterString = "";
                // Filter definieren
                foreach (SingleCondition cond in condition)
                {
                    if (!string.IsNullOrEmpty(filterString))
                    {
                        if (cond.Logical == Logical.Or)
                        {
                            filterString += " OR ";
                        }
                        else
                        {
                            filterString += " AND ";
                        }
                    }

                    if (fieldsStringDictionary.ContainsKey(cond.Field))
                    {
                        if (DataBase.GetTypeByField(cond.Field) == typeof(string))
                        {
                            if (cond.Field != Field.Date && cond.Field != Field.ArchiveNumber)
                            {
                                filterString += fieldsStringDictionary[cond.Field];
                            }
                            else
                            {
                                filterString += fieldsValueDictionary[cond.Field];
                            }

                            filterString += " " + Condition.GetNameOfOperatorForFilter(cond.Operator) + " ";

                            string val = cond.Value.ToString();

                            val = val.Replace("'", "''");
                            if (cond.Operator == Operator.Contains || cond.Operator == Operator.NotContains)
                            {
                                filterString += "'%" + val + "%'";
                            }
                            else
                            {
                                if (cond.Operator == Operator.StartsWith)
                                {
                                    filterString += "'" + val + "%'";
                                }
                                else
                                {
                                    filterString += "'" + val + "'";
                                }
                            }
                        }
                        else
                        {
                            filterString += fieldsValueDictionary[cond.Field];

                            filterString += " " + Condition.GetNameOfOperatorForFilter(cond.Operator) + " ";

                            filterString += cond.Value.ToString();
                        }
                    }
                }

                dataTable.DefaultView.RowFilter = filterString;
            }

            resultDataTable = dataTable.DefaultView.ToTable();
        }
Example #7
0
 public TrackDataView(DataBase db, CDQueryDataSet cdQuery, Condition condition, SortFieldCollection sortedFields)
     : this(db, cdQuery, condition, sortedFields, FieldHelper.GetAllFields())
 {
 }
        private void SearchAndReplaceCD()
        {
            CDTableAdapter ta = new CDTableAdapter(dataBase);
            CDQueryDataSet ds = new CDQueryDataSet();
            ta.Fill(ds.CD);

            Field selectedField = ((ComboBoxItem)comboBoxField.SelectedItem).Field;

            progressBar.Visible = true;
            labelStatus.Visible = true;
            labelStatus.Text = "";
            progressBar.Minimum = 0;
            progressBar.Maximum = ds.CD.Rows.Count;

            int found = 0;

            DataColumn fieldColumn = ds.CD.GetDataColumnByField(selectedField);

            foreach (CDQueryDataSet.CDRow row in ds.CD.Rows)
            {
                if (canceled)
                    break;

                object value = row.GetValueByField(selectedField);

                if (value is string)
                {
                    string str = value as string;

                    if (FindAndReplaceString(ref str))
                    {
                        row[fieldColumn] = str;

                        ta.Update(row);

                        found++;
                        labelStatus.Text = string.Format(StringTable.RecordsReplaced, found);
                        labelStatus.Update();
                    }
                }

                progressBar.Value++;
                progressBar.Update();

                Application.DoEvents();
            }

            DialogResult = DialogResult.OK;

            string message;

            if (found == 0)
                message = StringTable.FinishReplaceNothing;
            else
                if (found == 1)
                    message = StringTable.FinishReplaceSingle;
                else
                    message = string.Format(StringTable.FinishReplaceMulti, found);

            MessageBox.Show(message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
Example #9
0
        void bwAlbumView_DoWork(object sender, DoWorkEventArgs e)
        {
            TrackDataView TrackView;

            CDQuery = DataBase.ExecuteTrackQuery();

            // Hier die Felder auflisten, die ich für die Albumansicht brauche
            FieldCollection fc = new FieldCollection();

            fc.AddRange(new Field[] {
                Field.ArtistCDName,
                Field.ArtistCDSaveAs,
                Field.Title,
                Field.CDCoverFront,
                Field.Category,
                Field.ArchiveNumber,
                Field.YearRecorded,
                Field.TrackNumber,
                Field.TrackTitle,
                Field.TrackLength,
                Field.TrackRating,
                Field.ArtistTrackName,
                Field.ComposerTrackName,
                Field.TrackSoundFile
            });

            SortFieldCollection sfc = new SortFieldCollection();

            sfc.Add(Field.ArtistCDSaveAs);
            sfc.Add(Field.Title);
            sfc.Add(Field.CDID);
            sfc.Add(Field.TrackNumber);
            TrackView = new TrackDataView(DataBase, CDQuery, Condition, sfc, fc);

            int count = 0;

            List <AlbumViewItem> items = new List <AlbumViewItem>();

            AlbumViewItem newItem    = null;
            string        lastArtist = "";
            string        lastTitle  = "";
            int           lastcdid   = 0;

            for (int row = 0; row < TrackView.Rows.Count; row++)
            {
                string artistDisplay = TrackView.GetRowStringValue(row, Field.ArtistCDName);
                string artist        = TrackView.GetRowStringValue(row, Field.ArtistCDSaveAs);
                string title         = TrackView.GetRowStringValue(row, Field.Title);
                int    cdid          = TrackView.GetCDID(row);

                if (artist != lastArtist || title != lastTitle || cdid != lastcdid)
                {
                    if (newItem != null)
                    {
                        items.Add(newItem);
                    }

                    newItem               = new AlbumViewItem();
                    newItem.ID            = cdid;
                    newItem.Artist        = artistDisplay;
                    newItem.Title         = title;
                    newItem.ImageFilename = TrackView.GetRowStringValue(row, Field.CDCoverFront);
                    newItem.Genre         = TrackView.GetRowStringValue(row, Field.Category);
                    newItem.ArchiveNumber = TrackView.GetRowStringValue(row, Field.ArchiveNumber);
                    int yearRecorded = (int)TrackView.GetRowRawValue(row, Field.YearRecorded);
                    if (yearRecorded > 0)
                    {
                        newItem.Year = yearRecorded.ToString();
                    }

                    newItem.Tracks = new List <Track>();
                    lastArtist     = artist;
                    lastTitle      = title;
                }

                if (newItem != null)
                {
                    Track track = new Track();
                    track.TrackNumber = (int)TrackView.GetRowRawValue(row, Field.TrackNumber);
                    track.Title       = TrackView.GetRowStringValue(row, Field.TrackTitle);
                    track.Length      = (int)TrackView.GetRowRawValue(row, Field.TrackLength);
                    track.Rating      = (int)TrackView.GetRowRawValue(row, Field.TrackRating);
                    track.Artist      = TrackView.GetRowStringValue(row, Field.ArtistTrackName);
                    track.Composer    = TrackView.GetRowStringValue(row, Field.ComposerTrackName);
                    track.Soundfile   = TrackView.GetRowStringValue(row, Field.TrackSoundFile);
                    track.ID          = TrackView.GetTrackID(row);

                    newItem.Tracks.Add(track);
                }

                //toolStripStatusProgressBar.Value = (int)(100.0 / TrackView.Rows.Count * count);

                count++;

                lastcdid = cdid;
            }

            if (newItem != null)
            {
                items.Add(newItem);
            }

            e.Result = items;
        }
Example #10
0
        private void CopyDataToClipboard(FieldCollection selectedFields)
        {
            StringBuilder clipboardText = new StringBuilder();

            string fieldSeperator  = ((ComboBoxSeperator)comboBoxFieldSeperator.SelectedItem).Value;
            string recordSeperator = ((ComboBoxSeperator)comboBoxRecordSeperator.SelectedItem).Value;

            // Header-Zeile schreiben?
            if (checkBoxFieldsInFirstLine.Checked)
            {
                int iCount = 0;
                foreach (Field field in selectedFields)
                {
                    clipboardText.Append(dataBase.GetNameOfFieldFull(field));

                    if (iCount < selectedFields.Count - 1)
                    {
                        clipboardText.Append(fieldSeperator);
                    }

                    iCount++;
                }

                clipboardText.Append(recordSeperator);
            }

            progressBar.Maximum = records.Length;
            progressBar.Value   = 0;
            CDQueryDataSet cdQuery = null;

            if (copyTracks)
            {
                cdQuery = dataBase.ExecuteTrackQuery();
            }
            else
            {
                cdQuery = dataBase.ExecuteCDQuery();
            }

            foreach (int id in records)
            {
                if (copyTracks)
                {
                    string filter = string.Format("TrackID={0}", id);
                    CDQueryDataSet.TrackRow liedRow = (CDQueryDataSet.TrackRow)cdQuery.Track.Select(filter)[0];
                    int iCount = 0;
                    foreach (Field field in selectedFields)
                    {
                        object value = liedRow.GetValueByField(dataBase, field);
                        if (checkBoxQuoteTextFields.Checked && value is string)
                        {
                            clipboardText.Append("\"" + value + "\"");
                        }
                        else
                        {
                            clipboardText.Append(value);
                        }

                        if (iCount < selectedFields.Count - 1)
                        {
                            clipboardText.Append(fieldSeperator);
                        }

                        iCount++;
                    }
                }
                else
                {
                    string filter = string.Format("CDID={0}", id);
                    CDQueryDataSet.CDRow cdRow = (CDQueryDataSet.CDRow)cdQuery.CD.Select(filter)[0];
                    int iCount = 0;
                    foreach (Field field in selectedFields)
                    {
                        object value = cdRow.GetValueByField(field);
                        if (checkBoxQuoteTextFields.Checked && value is string)
                        {
                            clipboardText.Append("\"" + value + "\"");
                        }
                        else
                        {
                            clipboardText.Append(value);
                        }

                        if (iCount < selectedFields.Count - 1)
                        {
                            clipboardText.Append(fieldSeperator);
                        }

                        iCount++;
                    }
                }

                clipboardText.Append(recordSeperator);

                progressBar.Value++;
                progressBar.Update();
                Application.DoEvents();
            }

            Clipboard.SetText(clipboardText.ToString(), TextDataFormat.Text);
        }
        private void TransferFields(FormProgress formProgress)
        {
            Field sourceField = ((ComboBoxItem)comboBoxSourceField.SelectedItem).Field;
            Field targetField = ((ComboBoxItem)comboBoxTargetField.SelectedItem).Field;

            CDQueryDataSet cdQuery = dataBase.ExecuteCDQuery();

            CDDataView CDView = new CDDataView(dataBase, cdQuery, condition, new SortFieldCollection(), new FieldCollection());

            int errorCount = 0;

            formProgress.ProgressBar.Maximum = CDView.Rows.Count;
            formProgress.ProgressBar.Value   = 0;

            for (int i = 0; i < CDView.Rows.Count; i++)
            {
                CD cd = dataBase.GetCDById(CDView.GetCDID(i));

                try
                {
                    if (FieldHelper.IsCDField(sourceField))
                    {
                        object o = cd.GetValueByField(sourceField);
                        cd.SetValueToField(targetField, o);

                        if (checkBoxMoveField.Checked)
                        {
                            Type fieldType = DataBase.GetTypeByField(sourceField);
                            if (fieldType == typeof(string))
                            {
                                cd.SetValueToField(sourceField, "");
                            }
                            else if (fieldType == typeof(int))
                            {
                                cd.SetValueToField(sourceField, 0);
                            }
                            else
                            {
                                cd.SetValueToField(sourceField, null);
                            }
                        }
                    }
                    else
                    {
                        for (int track = 0; track < cd.Tracks.Count; track++)
                        {
                            object o = cd.GetTrackValueByField(track, sourceField);

                            cd.SetTrackValueToField(track, targetField, o);

                            if (checkBoxMoveField.Checked)
                            {
                                Type fieldType = DataBase.GetTypeByField(sourceField);
                                if (fieldType == typeof(string))
                                {
                                    cd.SetTrackValueToField(track, sourceField, "");
                                }
                                else if (fieldType == typeof(int))
                                {
                                    cd.SetTrackValueToField(track, sourceField, 0);
                                }
                                else
                                {
                                    cd.SetTrackValueToField(track, sourceField, null);
                                }
                            }
                        }
                    }

                    cd.Save(dataBase);
                }
                catch (Exception e)
                {
                    errorCount++;
                }

                if (formProgress.Canceled)
                {
                    break;
                }

                formProgress.ProgressBar.Value++;
                Application.DoEvents();
            }

            if (errorCount > 0)
            {
                MessageBox.Show(string.Format(StringTable.TransferFieldsTotal, CDView.Rows.Count - errorCount, CDView.Rows.Count), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }