1. Pascal / Говнокод #4852

    +96

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    procedure TForm1.Button2Click(Sender: TObject);
    var stSQL: string;
    i: integer;
    begin
    
    try
    SQLConnection1.Params.Values['HostName']:=Server; // имя сервера
    SQLConnection1.Params.Values['DataBase']:=MyBase ;
    SQLConnection1.Params.Values['OS Authentication']:= 'True';
    SQLConnection1.Open;
    except
    MessageDlg('Соединение с БД невозможно', mtError, [mbOK], 0);
    exit;
    end;
    
    SQLQuery1.SQL.Add('IF EXISTS (SELECT * FROM sysobjects WHERE name ='+''''+'MyTable'+''''+') DELETE FROM MyTable;');
    SQLQuery1.ExecSQL;
    SQLQuery1.SQL.Clear;
    SQLQuery1.SQL.Add('IF EXISTS (SELECT * FROM sysobjects WHERE name ='+''''+'MyTable'+''''+') DROP TABLE MyTable;');
    SQLQuery1.ExecSQL;
    SQLQuery1.SQL.Clear;
    SQLQuery1.SQL.Add('CREATE TABLE MyTable (VZPROJ varchar(50), PARTITION varchar(50), '+
    'MAKER varchar(50), STATE varchar(50), DATECRT varchar(50), DATEP varchar(50), '+
    'DATEF varchar(50), DATETOCRD varchar(50), DATECRD varchar(50), DATEPLN varchar(50), '+
    'DATEFIN varchar(50), DATECNCL varchar(50))');
    SQLQuery1.ExecSQL;
    
    cdsList.First;
    for i:=1 to cdsList.RecordCount do
    begin
    stSQL:='INSERT INTO MyTable VALUES(';
    if cdsList.FieldByName('VZPROJ').AsString<>'' then
    stSQL:=stSQL+' '''+cdsList.FieldByName('VZPROJ').AsString+''','
    else
    stSQL:=stSQL+' NULL,';
    if cdsList.FieldByName('PARTITION').AsString<>'' then
    stSQL:=stSQL+' '''+cdsList.FieldByName('PARTITION').AsString+''','
    else
    stSQL:=stSQL+' NULL,';
    if cdsList.FieldByName('MAKER').AsString<>'' then
    stSQL:=stSQL+' '''+cdsList.FieldByName('MAKER').AsString+''','
    else
    stSQL:=stSQL+' NULL,';
    if cdsList.FieldByName('STATE').AsString<>'' then
    stSQL:=stSQL+' '''+cdsList.FieldByName('STATE').AsString+''','
    else
    stSQL:=stSQL+' NULL,';
    if cdsList.FieldByName('DATECRT').AsString<>'' then
    stSQL:=stSQL+' '''+cdsList.FieldByName('DATECRT').AsString+''','
    else
    stSQL:=stSQL+' NULL,';
    if cdsList.FieldByName('DATEP').AsString<>'' then
    stSQL:=stSQL+' '''+cdsList.FieldByName('DATEP').AsString+''','
    else
    stSQL:=stSQL+' NULL,';
    if cdsList.FieldByName('DATEF').AsString<>'' then
    stSQL:=stSQL+' '''+cdsList.FieldByName('DATEF').AsString+''','
    else
    stSQL:=stSQL+' NULL,';
    if cdsList.FieldByName('DATETOCRD').AsString<>'' then
    stSQL:=stSQL+' '''+cdsList.FieldByName('DATETOCRD').AsString+''','
    else
    stSQL:=stSQL+' NULL,';
    if cdsList.FieldByName('DATECRD').AsString<>'' then
    stSQL:=stSQL+' "'+cdsList.FieldByName('DATECRD').AsString+''','
    else
    stSQL:=stSQL+' NULL,';
    if cdsList.FieldByName('DATEPLN').AsString<>'' then
    stSQL:=stSQL+' '''+cdsList.FieldByName('DATEPLN').AsString+''','
    else
    stSQL:=stSQL+' NULL,';
    if cdsList.FieldByName('DATEFIN').AsString<>'' then
    stSQL:=stSQL+' '''+cdsList.FieldByName('DATEFIN').AsString+''','
    else
    stSQL:=stSQL+' NULL,';
    if cdsList.FieldByName('DATECNCL').AsString<>'' then
    stSQL:=stSQL+' '''+cdsList.FieldByName('DATECNCL').AsString+''''
    else
    stSQL:=stSQL+' NULL';
    
    stSQL:=stSQL+');';
    
    SQLQuery1.SQL.Clear;
    SQLQuery1.SQL.Add(stSQL);
    SQLQuery1.ExecSQL;
    cdsList.Next;
    end;
    
    end;

    дельфипаста с гарниром

    Запостил: bugmenot, 07 Декабря 2010

    Комментарии (14) RSS

    • это не говнокод. но спагетти. ага )
      Ответить
      • Это не спагетти. Спагетти (в котором засилье готов) у меня есть, но я не считаю его интересным.
        Ответить
        • Готы, надеюсь, древневарварские племена?
          Ответить
          • http://ru.wikipedia.org/wiki/Аспартатаминотрансфераза
            http://ru.wikipedia.org/wiki/Гота
            http://ru.wikipedia.org/wiki/Гот,_Герман
            И ещё тыщи значений. Теряюсь в догадках, что имел в виду TarasB...
            Ответить
            • Он имел ввиду новую, модную конструкцию, появившуюся в PHP 5.3:
              http://ru2.php.net/manual/en/control-structures.goto.php
              Ответить
              • Здорово! А фортрановские конструкции в новых версиях PHP будут?
                Ответить
                • не знаю)
                  но вообще всё необходимое в пхп уже есть: глобальные переменные, необязательное инициализирование переменной, теперь вот гоуту появился.
                  можно писать хорошие программы
                  Ответить
                  • > можно писать хорошие программы
                    они еще недостаточно хороши, надо бы усовершенствовать
                    Ответить
          • >древневарварские
            :))))))) забавный термин

            готы изначально были скандинавскими племенами, потом стали германскими)
            а может быть ТарасБ имел ввиду молодежную субкультуру, где лицо красят в белый, а ногти -- в черный
            Ответить
            • Обычно традиционное деление на "римлян" и "варваров", которые, в итоге, и подкопались под империю. В данном контексте готы - самые натуральные варварские племена.
              Ответить
    • Стрелять копипастеров.
      Ответить
    • if cdsList.FieldByName('DATEFIN').AsString<>'' then


      напомнило один говно SQL клиент, стоящий $$$$$$$$, где пустая строка тоже использовалась для обозначения что ничего менять в этом столбце не надо. эффект был класный: в базе было кучи строковых не-НУЛЛ полей с одним-двумя пробелами внутри. юзвери обхитрили так-сказать говнокодеров. говно всплыло и спектакулярно все сломало когда попытались добавить в базу констрейны для проверки вводимой информации.
      Ответить
      • похоже код (правильнее говнокод конечно) использовался для перелива/конвертации чего-то во что-то, т.е. для внутреннего разового пользования. И наплевать как это написано: можно и левой задней ногой писать - лишь бы сработало.
        Ответить
        • "как данные из TClientDataSet сохранить в таблицу?"
          Ответить

    Добавить комментарий